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:
authorMatt Ebb <matt@mke3.net>2008-12-22 23:28:02 +0300
committerMatt Ebb <matt@mke3.net>2008-12-22 23:28:02 +0300
commitbe1d06a2c544a4ea27139475a72edb75afa37879 (patch)
tree6174e21a49d5b886442ef3fc176a9e21e31510e5 /source/blender/render/intern/include/render_types.h
parent7124d321d88240f14161c365ec1238ade2ec224d (diff)
Volume rendering:
* Multithreaded volume light cache While the render process itself is multithreaded, the light cache pre-process previously wasn't (painfully noticed this the other week rendering on some borrowed octocore nodes!). This commit adds threading, similar to the tiled render - it divides the light cache's voxel grid into 3d parts and renders them with the available threads. This makes the most significant difference on shots where the light cache pre- process is the bottleneck, so shots with either several lights, or a high res light cache, or both. On this file (3 lights, light cache res 120), on my Core 2 Duo it now renders in 27 seconds compared to 49 previously. http://mke3.net/blender/devel/rendering/volumetrics/threaded_cache.jpg
Diffstat (limited to 'source/blender/render/intern/include/render_types.h')
-rw-r--r--source/blender/render/intern/include/render_types.h26
1 files changed, 18 insertions, 8 deletions
diff --git a/source/blender/render/intern/include/render_types.h b/source/blender/render/intern/include/render_types.h
index 65bb12e059d..8dbdde77726 100644
--- a/source/blender/render/intern/include/render_types.h
+++ b/source/blender/render/intern/include/render_types.h
@@ -202,9 +202,9 @@ struct Render
struct Object *excludeob;
- ListBase vol_precache_obs;
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.
@@ -404,13 +404,6 @@ typedef struct StrandRen {
/* ------------------------------------------------------------------------- */
-typedef struct VolPrecache
-{
- struct VolPrecache *next, *prev;
- struct Material *ma;
- struct ObjectRen *obr;
-} VolPrecache;
-
typedef struct VolumeOb
{
struct VolumeOb *next, *prev;
@@ -423,6 +416,23 @@ typedef struct MatInside {
struct Material *ma;
} MatInside;
+typedef struct VolPrecachePart
+{
+ struct VolPrecachePart *next, *prev;
+ struct RayTree *tree;
+ struct ShadeInput *shi;
+ struct ObjectInstanceRen *obi;
+ int num;
+ int minx, maxx;
+ int miny, maxy;
+ int minz, maxz;
+ int res;
+ float bbmin[3];
+ float voxel[3];
+ int working, done;
+} VolPrecachePart;
+
+
/* ------------------------------------------------------------------------- */
struct LampRen;