Refactor the raytracing code to split the tracing and shading parts into
two separate files, raytrace.c and rayshade.c. The tracing code can now be used separately from the renderer (will be used in a later commit), and the raytracing acceleration structure can now also be easily replaced, if someone wants to experiment with that.
This commit is contained in:
@@ -2988,7 +2988,7 @@ void RE_Database_Free(Render *re)
|
||||
re->scene->world->aotables= NULL;
|
||||
}
|
||||
|
||||
if(re->r.mode & R_RAYTRACE) freeoctree(re);
|
||||
if(re->r.mode & R_RAYTRACE) freeraytree(re);
|
||||
|
||||
free_sss(re);
|
||||
|
||||
@@ -3461,17 +3461,17 @@ void RE_Database_FromScene(Render *re, Scene *scene, int use_camera_view)
|
||||
}
|
||||
}
|
||||
|
||||
/* yafray: 'direct' radiosity, environment maps and octree init not needed for yafray render */
|
||||
/* yafray: 'direct' radiosity, environment maps and raytree init not needed for yafray render */
|
||||
/* although radio mode could be useful at some point, later */
|
||||
if (re->r.renderer==R_INTERN) {
|
||||
/* RADIO (uses no R anymore) */
|
||||
if(!re->test_break())
|
||||
if(re->r.mode & R_RADIO) do_radio_render(re);
|
||||
|
||||
/* octree */
|
||||
/* raytree */
|
||||
if(!re->test_break()) {
|
||||
if(re->r.mode & R_RAYTRACE) {
|
||||
makeoctree(re);
|
||||
makeraytree(re);
|
||||
}
|
||||
}
|
||||
/* ENVIRONMENT MAPS */
|
||||
@@ -4048,10 +4048,10 @@ void RE_Database_Baking(Render *re, Scene *scene, int type)
|
||||
}
|
||||
|
||||
if(type!=RE_BAKE_LIGHT) {
|
||||
/* octree */
|
||||
/* raytree */
|
||||
if(!re->test_break()) {
|
||||
if(re->r.mode & R_RAYTRACE) {
|
||||
makeoctree(re);
|
||||
makeraytree(re);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ static Render *envmap_render_copy(Render *re, EnvMap *env)
|
||||
envre->vlaknodeslen= re->vlaknodeslen;
|
||||
envre->vlaknodes= re->vlaknodes;
|
||||
envre->customdata_names= re->customdata_names;
|
||||
envre->oc= re->oc;
|
||||
envre->raytree= re->raytree;
|
||||
|
||||
return envre;
|
||||
}
|
||||
@@ -177,8 +177,7 @@ static void envmap_free_render_copy(Render *envre)
|
||||
envre->vlaknodeslen= 0;
|
||||
envre->vlaknodes= NULL;
|
||||
envre->customdata_names.first= envre->customdata_names.last= NULL;
|
||||
envre->oc.adrbranch= NULL;
|
||||
envre->oc.adrnode= NULL;
|
||||
envre->raytree= NULL;
|
||||
|
||||
RE_FreeRender(envre);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
1229
source/blender/render/intern/source/rayshade.c
Normal file
1229
source/blender/render/intern/source/rayshade.c
Normal file
File diff suppressed because it is too large
Load Diff
1353
source/blender/render/intern/source/raytrace.c
Normal file
1353
source/blender/render/intern/source/raytrace.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user