Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/render/intern/include/zbuf.h')
-rw-r--r--source/blender/render/intern/include/zbuf.h180
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
+