diff options
author | Matt Ebb <matt@mke3.net> | 2009-08-24 12:13:09 +0400 |
---|---|---|
committer | Matt Ebb <matt@mke3.net> | 2009-08-24 12:13:09 +0400 |
commit | 90895fce8ca4f40bd41026b0406d80e8e83e0e8d (patch) | |
tree | c1ba1e4f7e7761db9824fca1b03a748c69574e0b | |
parent | 6ddcb4774609d882ce869a0fe60a3c0516129d58 (diff) |
* Fix for camera+internal surface object inside ztransp volume
-rw-r--r-- | source/blender/render/intern/source/shadeinput.c | 3 | ||||
-rw-r--r-- | source/blender/render/intern/source/volumetric.c | 16 |
2 files changed, 10 insertions, 9 deletions
diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c index ede3c2e0503..ed654eaf526 100644 --- a/source/blender/render/intern/source/shadeinput.c +++ b/source/blender/render/intern/source/shadeinput.c @@ -169,7 +169,8 @@ void shade_material_loop(ShadeInput *shi, ShadeResult *shr) } if(R.r.mode & R_RAYTRACE) { - shade_volume_inside(shi, shr); + if (R.render_volumes_inside.first) + shade_volume_inside(shi, shr); } } diff --git a/source/blender/render/intern/source/volumetric.c b/source/blender/render/intern/source/volumetric.c index cf66d580944..0e2e3913819 100644 --- a/source/blender/render/intern/source/volumetric.c +++ b/source/blender/render/intern/source/volumetric.c @@ -575,15 +575,14 @@ static void volume_trace(struct ShadeInput *shi, struct ShadeResult *shr, int in startco = shi->camera_co; endco = shi->co; - if (!ztransp) { - if (trace_behind) { + if (trace_behind) { + if (!ztransp) /* trace behind the volume object */ vol_trace_behind(shi, shi->vlr, endco, col); - } else { - /* we're tracing through the volume between the camera - * and a solid surface, so use that pre-shaded radiance */ - QUATCOPY(col, shr->combined); - } + } else { + /* we're tracing through the volume between the camera + * and a solid surface, so use that pre-shaded radiance */ + QUATCOPY(col, shr->combined); } /* shade volume from 'camera' to 1st hit point */ @@ -676,8 +675,9 @@ void shade_volume_inside(ShadeInput *shi, ShadeResult *shr) MatInside *m; Material *mat_backup; - if (BLI_countlist(&R.render_volumes_inside) == 0) return; + //if (BLI_countlist(&R.render_volumes_inside) == 0) return; + /* XXX: extend to multiple volumes perhaps later */ mat_backup = shi->mat; m = R.render_volumes_inside.first; shi->mat = m->ma; |