diff options
author | Hans Lambermont <hans@lambermont.dyndns.org> | 2002-10-12 15:37:38 +0400 |
---|---|---|
committer | Hans Lambermont <hans@lambermont.dyndns.org> | 2002-10-12 15:37:38 +0400 |
commit | 12315f4d0e0ae993805f141f64cb8c73c5297311 (patch) | |
tree | 59b45827cd8293cfb727758989c7a74b40183974 /source/blender/render/intern/include/zbuf.h |
Initial revisionv2.25
Diffstat (limited to 'source/blender/render/intern/include/zbuf.h')
-rw-r--r-- | source/blender/render/intern/include/zbuf.h | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/source/blender/render/intern/include/zbuf.h b/source/blender/render/intern/include/zbuf.h new file mode 100644 index 00000000000..fdfa5b19abe --- /dev/null +++ b/source/blender/render/intern/include/zbuf.h @@ -0,0 +1,180 @@ +/* + * zbuf_ext.h + * external interface for zbuf.h + * + * $Id$ + * + * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. The Blender + * Foundation also sells licenses for use in proprietary software under + * the Blender License. See http://www.blender.org/BL/ for information + * about this. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2001-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 ***** + */ + +#ifndef ZBUF_H +#define ZBUF_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct LampRen; +struct VlakRen; + +/*-----------------------------------------------------------*/ +/* Includes */ +/*-----------------------------------------------------------*/ + +#include "zbuf_types.h" +#include "render_types.h" +#include "radio_types.h" /* for RadView */ + +/*-----------------------------------------------------------*/ +/* Function */ +/* (11 so far ) */ +/*-----------------------------------------------------------*/ + +/** + * Fill a 'rectangle' with a fixed value. The rectangle contains x by + * y points. The rows are assumed to be contiguous in memory, and to + * consist of uints. This function is used for initializing the z + * buffer. + * (why is x int and y uint? called in envmap, render, zbuf) + * @param rect Pointer to the data representing the rectangle. + * @param x The width of the rectangle + * @param y The height of the rectangle + * @param val The value used to fill the rectangle. + */ +void fillrect(unsigned int *rect, int x, unsigned int y, unsigned int val); + +/** + * Converts a world coordinate into a homogenous coordinate in view + * coordinates. The transformation matrix is only allowed to have a + * scaling and translation component. + * Also called in: shadbuf.c render.c radfactors.c + * initrender.c envmap.c editmesh.c + * @param v1 [3 floats] the world coordinate + * @param adr [4 floats] the homogenous view coordinate + */ +void projectvert(float *v1,float *adr); + + +/** + * Do a z buffer calculation pass for shadow calculations. + * Also called in: shadbuf.c + * Note: Uses globals. + * @param lar lamp definition data + */ +void zbuffershad(struct LampRen *lar); + + /* to the external interface, temp, I hope... */ +/** + * Tests whether the first three coordinates should be clipped + * wrt. the fourth component. Bits 1 and 2 test on x, 3 and 4 test on + * y, 5 and 6 test on z: + * xyz > test => set first bit (01), + * xyz < -test => set second bit (10), + * xyz == test => reset both bits (00). + * Note: functionality is duplicated from an internal function + * Also called in: initrender.c, radfactors.c + * @param v [4 floats] a coordinate + * @return a vector of bitfields + */ +/* int testclip(float *v); */ + + +/* The following are only used in zbuf.c and render.c ---------------*/ +/** + * Fills the entire in the alpha DA buffer. (All of it!) + * Note: Uses globals. + * Also called in: render.c + * @param y the line number to set + */ +void abufsetrow(int y); + + +/** + * Calculate the z buffer for all faces (or edges when in wireframe + * mode) presently visible. + * Note: Uses globals. + * Also called in: render.c + */ +void zbufferall(void); + + +/** + * Initialize accumulation buffers for alpha z buffering. + * The buffers are global variables. Also resets Accu buffer + * y bounds. + * <LI> + * <IT> Acolrow : colour buffer for one line + * <IT> Arectz : distance buffer for one line, depth ABUFPART + * <IT> APixbuf : pixel data buffer for one line, depth ABUFPART + * </LI> + * Also called in: render.c (should migrate) + * Note: Uses globals. + */ +void bgnaccumbuf(void); + +/** + * Discard accumulation buffers for alpha z buffering. + * The buffers are global variables. The released buffers are Acolrow, + * Arectz, APixBuf. + * Also called in: render.c (should migrate) + * Note: Uses globals. + */ +void endaccumbuf(void); + +/** + * Z face intersect? + */ +int vergzvlak(const void *x1, const void *x2); + +/** + * Clip and fill vertex into the z buffer. zbuffunc needs to be set + * before entering, to assure that there is a buffer fill function + * that can be called. Zvlnr must be set to the current valid face + * index . + * Note: uses globals + * @param f1 [4 floats] vertex 1 + * @param f2 [4 floats] vertex 2 + * @param f3 [4 floats] vertex 3 + * @param c1 clip conditions? + * @param c2 + * @param c3 + */ +void zbufclip(float *f1, float *f2, float *f3, int c1, int c2, int c3); + +/** + * same, for edges + */ +void zbufclipwire(struct VlakRen *vlr); + +#ifdef __cplusplus +} +#endif + +#endif + |