[Bf-blender-cvs] [b8892ca] master: Cycles: Yet another fix for camera in volume

Sergey Sharybin noreply at git.blender.org
Thu Apr 14 18:06:20 CEST 2016


Commit: b8892cac1961341a3c6ab708dcf47b926d310334
Author: Sergey Sharybin
Date:   Thu Apr 14 17:20:17 2016 +0200
Branches: master
https://developer.blender.org/rBb8892cac1961341a3c6ab708dcf47b926d310334

Cycles: Yet another fix for camera in volume

Was an embarrassing glitch in original optimization policy,
the for-loops can't be de-duplicated here.

===================================================================

M	intern/cycles/kernel/kernel_volume.h

===================================================================

diff --git a/intern/cycles/kernel/kernel_volume.h b/intern/cycles/kernel/kernel_volume.h
index 86a3adb..ed4f6b2 100644
--- a/intern/cycles/kernel/kernel_volume.h
+++ b/intern/cycles/kernel/kernel_volume.h
@@ -1013,14 +1013,15 @@ ccl_device void kernel_volume_stack_init(KernelGlobals *kg,
 			shader_setup_from_ray(kg, &sd, isect, &volume_ray);
 			if(sd.flag & SD_BACKFACING) {
 				bool need_add = true;
-				for(int i = 0; i < stack_index; ++i) {
+				for(int i = 0; i < enclosed_index && need_add; ++i) {
 					/* If ray exited the volume and never entered to that volume
 					 * it means that camera is inside such a volume.
 					 */
-					if(i < enclosed_index && enclosed_volumes[i] == sd.object) {
+					if(enclosed_volumes[i] == sd.object) {
 						need_add = false;
-						break;
 					}
+				}
+				for(int i = 0; i < stack_index && need_add; ++i) {
 					/* Don't add intersections twice. */
 					if(stack[i].object == sd.object) {
 						need_add = false;




More information about the Bf-blender-cvs mailing list