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
path: root/source
diff options
context:
space:
mode:
authorMatt Ebb <matt@mke3.net>2009-10-12 03:04:01 +0400
committerMatt Ebb <matt@mke3.net>2009-10-12 03:04:01 +0400
commit0c0aa79cb98a1fdfdade440b1a9e0ff911148b08 (patch)
tree1aac0e1dce70ee8abb8adceb718bc5b2d2f86b29 /source
parent94d81336f19f62e5361f756fce258247edb708fd (diff)
* crash fix in volume render, less reliance on global R
Diffstat (limited to 'source')
-rw-r--r--source/blender/render/intern/include/volume_precache.h2
-rw-r--r--source/blender/render/intern/source/convertblender.c6
-rw-r--r--source/blender/render/intern/source/volume_precache.c5
3 files changed, 6 insertions, 7 deletions
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);