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/vanillaRenderPipe_int.h')
-rw-r--r--source/blender/render/intern/include/vanillaRenderPipe_int.h191
1 files changed, 191 insertions, 0 deletions
diff --git a/source/blender/render/intern/include/vanillaRenderPipe_int.h b/source/blender/render/intern/include/vanillaRenderPipe_int.h
new file mode 100644
index 00000000000..024b82cc812
--- /dev/null
+++ b/source/blender/render/intern/include/vanillaRenderPipe_int.h
@@ -0,0 +1,191 @@
+/*
+ * vanillaRenderPipe_int.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 VANILLARENDERPIPE_INT_H
+#define VANILLARENDERPIPE_INT_H
+
+#include "vanillaRenderPipe_types.h"
+#include "zbufferdatastruct_types.h"
+
+/**
+ * Z buffer initializer, for new pipeline.
+ * <LI>
+ * <IT> AColourBuffer : colour buffer for one line
+ * <IT> APixbufExt : pixel data buffer for one line, depth RE_ZBUFLEN
+ * </LI>
+ */
+void initRenderBuffers(int width);
+/* void initRenderBuffers(void); */
+
+/**
+ * Z buffer destructor, frees stuff from initZBuffers().
+ */
+void freeRenderBuffers(void);
+
+/**
+ * Fill the accumulation buffer APixbufExt with face and halo indices.
+ * Note: Uses globals.
+ * @param y the line number to set
+ */
+void calcZBufLine(int y);
+
+/**
+ * Shade and render the pixels in this line, into AColourBuffer
+ * Note: Uses globals.
+ * @param y the line number to set
+ */
+void renderZBufLine(int y);
+
+/**
+ * Count and sort the list behind ap into buf. Sorts on min. distance.
+ * Low index <=> high z
+ */
+int countAndSortPixelFaces(int buf[RE_MAX_FACES_PER_PIXEL][5],
+ RE_APixstrExt *ap);
+
+/**
+ * Compose the conflict and colour stacks
+ * Note: Uses globals.
+ */
+int composeStack(int zrow[RE_MAX_FACES_PER_PIXEL][RE_PIXELFIELDSIZE],
+ struct RE_faceField* stack, int ptr,
+ int totvlak, float x, float y, int osaNr);
+/**
+ * Integrate conflicting layers.
+ * Note: Uses globals.
+ */
+int resolveConflict(struct RE_faceField* stack, int ptr, float x, float y);
+
+/**
+ * Integrate the colour stack, defer conflicts.
+ * Note: Uses globals.
+ */
+void integrateStack(struct RE_faceField* stack, int ptr,
+ float x, float y, int osaNr);
+
+/**
+ * Calculate the view depth to this object on this location, with
+ * the current view parameters in R.
+ */
+int calcDepth(float x, float y, void *data, int type);
+
+
+
+/**
+ * Fills in distances of all faces in a z buffer, for given jitter settings.
+ */
+int fillZBufDistances(void);
+
+/**
+ * Fills in distances of faces in the z buffer.
+ *
+ * Halo z buffering ----------------------------------------------
+ *
+ * A halo is treated here as a billboard: no z-extension, always
+ * oriented perpendicular to the viewer. The rest of the z-buffer
+ * stores face-numbers first, then calculates colours as the
+ * final image is rendered. We'll use the same approach here,
+ * which differs from the original method (which was add halos per
+ * scan line). This means that the z-buffer now also needs to
+ * store info about what sort of 'thing' the index refers to.
+ *
+ * Halo extension:
+ * h.maxy ---------
+ * | h.xs + h.rad
+ * | h.xs
+ * | h.xs - h.rad
+ * h.miny ---------
+ *
+ * These coordinates must be clipped to picture size.
+ * I'm not quite certain about halo numbering.
+ *
+ * Halos and jittering -------------------------------------------
+ *
+ * Halos were not jittered previously. Now they are. I wonder
+ * whether this may have some adverse effects here.
+
+ * @return 1 for succes, 0 if the operation was interrupted.
+ */
+int zBufferAllFaces(void);
+
+/**
+ * Fills in distances of halos in the z buffer.
+ * @return 1 for succes, 0 if the operation was interrupted.
+ */
+int zBufferAllHalos(void);
+
+/**
+ * New fill function for z buffer, for edge-only rendering.
+ */
+void zBufferFillEdge(float *vec1, float *vec2);
+
+/**
+ * New fill function for z buffer.
+ */
+void zBufferFillFace(float *v1, float *v2, float *v3);
+
+/**
+ * One more filler: fill in halo data in z buffer.
+ * Empty so far, but may receive content of halo loop.
+ */
+void zBufferFillHalo(void);
+
+/**
+ * Copy the colour buffer output to R.rectot, to line y.
+ */
+void transferColourBufferToOutput(int y);
+
+/**
+ * Set the colour buffer fields to zero.
+ */
+void eraseColBuf(RE_COLBUFTYPE *buf);
+
+/**
+ * Blend source over dest, and leave result in dest. 1 pixel.
+ */
+void blendOverFloat(int type, float* dest, float* source, void* data);
+
+/**
+ * Blend source over dest, and leave result in dest. 1 pixel into
+ * multiple bins.
+ */
+void blendOverFloatRow(int type, float* dest, float* source,
+ void* data, int mask, int osaNr) ;
+
+/**
+ * Do a post-process step on a finalized render image.
+ */
+void std_transFloatColV2CharColV( RE_COLBUFTYPE *buf, char *target);
+
+#endif /* VANILLARENDERPIPE_INT_H */