diff options
author | Matt Ebb <matt@mke3.net> | 2008-12-22 23:28:02 +0300 |
---|---|---|
committer | Matt Ebb <matt@mke3.net> | 2008-12-22 23:28:02 +0300 |
commit | be1d06a2c544a4ea27139475a72edb75afa37879 (patch) | |
tree | 6174e21a49d5b886442ef3fc176a9e21e31510e5 /source/blender/render/intern/include/render_types.h | |
parent | 7124d321d88240f14161c365ec1238ade2ec224d (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.h | 26 |
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; |