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:
2007-07-26 13:38:24 +00:00
parent 534ba14d2b
commit d63da45ca8
8 changed files with 2683 additions and 2492 deletions

View File

@@ -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);
}
}
}

View File

@@ -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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff