svn merge -r 22571:22800 https://svn.blender.org/svnroot/bf-blender/trunk/blender
[blender-staging.git] / source / blender / render / intern / include / render_types.h
index c412921eb3146435bf90100719166191a505b9b4..67c692592133e25840102a7bfd314814e893f837 100644 (file)
@@ -205,6 +205,9 @@ struct Render
        ListBase customdata_names;
 
        struct Object *excludeob;
+       ListBase render_volumes_inside;
+       ListBase volumes;
+       ListBase volume_precache_parts;
 
        /* arena for allocating data for use during render, for
                * example dynamic TFaces to go in the VlakRen structure.
@@ -302,7 +305,9 @@ typedef struct ObjectInstanceRen {
 
        float dupliorco[3], dupliuv[2];
        float (*duplitexmat)[4];
-
+       
+       struct VolumePrecache *volume_precache;
+       
        float *vectors;
        int totvector;
        
@@ -416,6 +421,46 @@ typedef struct StrandRen {
        float orco[3];
 } StrandRen;
 
+/* ------------------------------------------------------------------------- */
+
+typedef struct VolumeOb
+{
+       struct VolumeOb *next, *prev;
+       struct Material *ma;
+       struct ObjectRen *obr;
+} VolumeOb;
+
+typedef struct MatInside {
+       struct MatInside *next, *prev;
+       struct Material *ma;
+       struct ObjectInstanceRen *obi;
+} MatInside;
+
+typedef struct VolPrecachePart
+{
+       struct VolPrecachePart *next, *prev;
+       struct RayObject *tree;
+       struct ShadeInput *shi;
+       struct ObjectInstanceRen *obi;
+       int num;
+       int minx, maxx;
+       int miny, maxy;
+       int minz, maxz;
+       int res[3];
+       float bbmin[3];
+       float voxel[3];
+       int working, done;
+} VolPrecachePart;
+
+typedef struct VolumePrecache
+{
+       int res[3];
+       float *data_r;
+       float *data_g;
+       float *data_b;
+} VolumePrecache;
+
+/* ------------------------------------------------------------------------- */
 
 struct LampRen;
 struct MTex;