From 0c0aa79cb98a1fdfdade440b1a9e0ff911148b08 Mon Sep 17 00:00:00 2001 From: Matt Ebb Date: Sun, 11 Oct 2009 23:04:01 +0000 Subject: * crash fix in volume render, less reliance on global R --- source/blender/render/intern/include/volume_precache.h | 2 +- source/blender/render/intern/source/convertblender.c | 6 +++--- source/blender/render/intern/source/volume_precache.c | 5 ++--- 3 files changed, 6 insertions(+), 7 deletions(-) (limited to 'source') diff --git a/source/blender/render/intern/include/volume_precache.h b/source/blender/render/intern/include/volume_precache.h index 368d60ee7f0..5c3a7bdfbf0 100644 --- a/source/blender/render/intern/include/volume_precache.h +++ b/source/blender/render/intern/include/volume_precache.h @@ -28,6 +28,6 @@ void volume_precache(Render *re); void free_volume_precache(Render *re); -int point_inside_volume_objectinstance(ObjectInstanceRen *obi, float *co); +int point_inside_volume_objectinstance(Render *re, ObjectInstanceRen *obi, float *co); #define VOL_MS_TIMESTEP 0.1f diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 655c453eee7..af7d7a02bba 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -3026,7 +3026,7 @@ static void init_camera_inside_volumes(Render *re) for(vo= re->volumes.first; vo; vo= vo->next) { for(obi= re->instancetable.first; obi; obi= obi->next) { if (obi->obr == vo->obr) { - if (point_inside_volume_objectinstance(obi, co)) { + if (point_inside_volume_objectinstance(re, obi, co)) { MatInside *mi; mi = MEM_mallocN(sizeof(MatInside), "camera inside material"); @@ -4850,8 +4850,6 @@ void RE_Database_FromScene(Render *re, Scene *scene, int use_camera_view) /* MAKE RENDER DATA */ database_init_objects(re, lay, 0, 0, 0, 0); - init_camera_inside_volumes(re); - if(!re->test_break(re->tbh)) { int tothalo; @@ -4876,6 +4874,8 @@ void RE_Database_FromScene(Render *re, Scene *scene, int use_camera_view) RE_make_stars(re, NULL, NULL, NULL, NULL); sort_halos(re, tothalo); + init_camera_inside_volumes(re); + re->i.infostr= "Creating Shadowbuffers"; re->stats_draw(re->sdh, &re->i); diff --git a/source/blender/render/intern/source/volume_precache.c b/source/blender/render/intern/source/volume_precache.c index 3361eea46e7..62d7343036a 100644 --- a/source/blender/render/intern/source/volume_precache.c +++ b/source/blender/render/intern/source/volume_precache.c @@ -72,7 +72,6 @@ int intersect_outside_volume(RayObject *tree, Isect *isect, float *offset, int l if (limit == 0) return depth; if (RE_rayobject_raycast(tree, isect)) { - float hitco[3]; isect->start[0] = isect->start[0] + isect->labda*isect->vec[0]; isect->start[1] = isect->start[1] + isect->labda*isect->vec[1]; @@ -730,12 +729,12 @@ void free_volume_precache(Render *re) BLI_freelistN(&re->volumes); } -int point_inside_volume_objectinstance(ObjectInstanceRen *obi, float *co) +int point_inside_volume_objectinstance(Render *re, ObjectInstanceRen *obi, float *co) { RayObject *tree; int inside=0; - tree = makeraytree_object(&R, obi); //create_raytree_obi(obi, obi->obr->boundbox[0], obi->obr->boundbox[1]); + tree = makeraytree_object(re, obi); //create_raytree_obi(obi, obi->obr->boundbox[0], obi->obr->boundbox[1]); if (!tree) return 0; inside = point_inside_obi(tree, obi, co); -- cgit v1.2.3