Revision: 17490
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17490
Author: broken
Date: 2008-11-18 02:53:52 +0100 (Tue, 18 Nov 2008)
Log Message:
-----------
* Exclude volume materials from AO
Modified Paths:
--------------
branches/sim_physics/source/blender/render/intern/source/occlusion.c
branches/sim_physics/source/blender/render/intern/source/rayshade.c
Modified: branches/sim_physics/source/blender/render/intern/source/occlusion.c
===================================================================
--- branches/sim_physics/source/blender/render/intern/source/occlusion.c
2008-11-18 01:01:31 UTC (rev 17489)
+++ branches/sim_physics/source/blender/render/intern/source/occlusion.c
2008-11-18 01:53:52 UTC (rev 17490)
@@ -663,7 +663,7 @@
if((a & 255)==0) vlr= obr->vlaknodes[a>>8].vlak;
else vlr++;
- if(vlr->mat->mode & MA_TRACEBLE) {
+ if((vlr->mat->mode & MA_TRACEBLE) &&
(vlr->mat->material_type == MA_SOLID)) {
tree->face[b].obi= c;
tree->face[b].facenr= a;
tree->occlusion[b]= 1.0f;
Modified: branches/sim_physics/source/blender/render/intern/source/rayshade.c
===================================================================
--- branches/sim_physics/source/blender/render/intern/source/rayshade.c
2008-11-18 01:01:31 UTC (rev 17489)
+++ branches/sim_physics/source/blender/render/intern/source/rayshade.c
2008-11-18 01:53:52 UTC (rev 17490)
@@ -96,6 +96,17 @@
return (is->lay & obi->lay);
}
+static int vlr_check_intersect_solid(Isect *is, int ob, RayFace *face)
+{
+ VlakRen *vlr = (VlakRen*)face;
+
+ /* solid material types only */
+ if (vlr->mat->material_type == MA_SOLID)
+ return 1;
+ else
+ return 0;
+}
+
static float *vlr_get_transform(void *userdata, int i)
{
ObjectInstanceRen *obi= RAY_OBJECT_GET((Render*)userdata, i);
@@ -1621,7 +1632,7 @@
prev = fac;
- if(RE_ray_tree_intersect(R.raytree, &isec)) {
+ if(RE_ray_tree_intersect_check(R.raytree, &isec,
vlr_check_intersect_solid)) {
if (R.wrld.aomode & WO_AODIST) fac+=
exp(-isec.labda*R.wrld.aodistfac);
else fac+= 1.0f;
}
@@ -1746,7 +1757,7 @@
isec.end[2] = shi->co[2] - maxdist*vec[2];
/* do the trace */
- if(RE_ray_tree_intersect(R.raytree, &isec)) {
+ if(RE_ray_tree_intersect_check(R.raytree, &isec,
vlr_check_intersect_solid)) {
if (R.wrld.aomode & WO_AODIST) sh+=
exp(-isec.labda*R.wrld.aodistfac);
else sh+= 1.0f;
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs