/**
* $Id:$
* ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
*
* The contents of this file may be used under the terms of either the GNU
* General Public License Version 2 or later (the "GPL", see
* http://www.gnu.org/licenses/gpl.html ), or the Blender License 1.0 or
* later (the "BL", see http://www.blender.org/BL/ ) which has to be
* bought from the Blender Foundation to become active, in which case the
* above mentioned GPL option does not apply.
*
* The Original Code is Copyright (C) 2002 by NaN Holding BV.
* All rights reserved.
*
* The Original Code is: all of this file.
*
* Contributor(s): none yet.
*
* ***** END GPL/BL DUAL LICENSE BLOCK *****
*/
/*
* rendercore_ext.h
*
* Version: $Id: rendercore.h,v 1.4 2000/09/14 09:11:40 nzc Exp $
*/
#ifndef RENDER_EXT_H
#define RENDER_EXT_H "$Id: rendercore.h,v 1.4 2000/09/14 09:11:40 nzc Exp $"
#include "render_types.h"
/**
* Apply the background (sky). Depending on the active alphamode and
* worldmode, different filling strategies are applied.
* Active alphamode = R.r.alphamode
* Active worldmode = R.wrld.mode
*
* R_ALPHAPREMUL - do not fill sky, but apply alpha to colours
* R_ALPHAKEY - do not fill sky, do not apply alpha to colours
* R_ADDSKY - fill skycolour in the background, blend
* transparent colours with the background
* (there's also a world dependency here?
*
* R.wrld.mode == WO_MIST
* R.r.bufflag == 1, R.flag == R_SEC_FIELD
* R.wrld.skytype == ( WO_SKYBLEND ^ WO_SKYTEX)
* R.wrld.skytype == WO_SKYPAPER
* R.r.mode == R_PANORAMA )
*
*
* @param rect
* @param y
*/
void scanlinesky(char *rect, int y);
/**
* Do z buffer stuff.
*/
void zbufshade(void);
/**
* Insert transparent faces into the z buffer?
*/
void zbufshadeDA(void); /* Delta Accum Pixel Struct */
/**
* Also called in: zbuf.c
*/
void shadepixel(float x, float y, int vlaknr);
/**
* Shade the pixel at xn, yn for halo har, and write the result to col.
* Also called in: previewrender.c
* @param har The halo to be rendered on this location
* @param col [uint 3] The destination colour vector
* @param zz Some kind of distance
* @param dist Square of the distance of this coordinate to the halo's center
* @param x [f] Pixel x relative to center
* @param y [f] Pixel y relative to center
* @param flarec Flare counter? Always har->flarec...
*/
void shadehalo(HaloRen *har, char *col, uint zz, float dist, float x, float y, short flarec);
/**
* A cryptic but very efficient way of counting the number of bits that
* is set in the ushort.
*/
int count_mask(ushort mask);
/* undocumented */
void add_halo_flare(void);
void sky(char *col);
void renderflare(HaloRen *har);
void renderspothalo(ushort *col);
void shadelamplus(void);
float mistfactor(float *co); /* dist en hoogte, return alpha */
uint calchalo_z(HaloRen *har, uint zz);
void render_lighting_halo(HaloRen *har, float *colf);
float CookTorr(float *n, float *l, float *v, int hard);
#endif /* RENDER_EXT_H */