[Bf-blender-cvs] [1073c6a] master: Cycles: Don't check shader for volume when checking if camera is inside volume

Sergey Sharybin noreply at git.blender.org
Tue Nov 4 19:58:05 CET 2014


Commit: 1073c6ae8e2337ef95eca69b201ddfca44db8415
Author: Sergey Sharybin
Date:   Tue Nov 4 19:57:15 2014 +0100
Branches: master
https://developer.blender.org/rB1073c6ae8e2337ef95eca69b201ddfca44db8415

Cycles: Don't check shader for volume when checking if camera is inside volume

Intersection code already ignores objects without volume closure so checking it
afterwards is not needed.

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

M	intern/cycles/kernel/kernel_volume.h

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

diff --git a/intern/cycles/kernel/kernel_volume.h b/intern/cycles/kernel/kernel_volume.h
index ce20f20..cba95ab 100644
--- a/intern/cycles/kernel/kernel_volume.h
+++ b/intern/cycles/kernel/kernel_volume.h
@@ -992,31 +992,29 @@ ccl_device void kernel_volume_stack_init(KernelGlobals *kg,
 
 		ShaderData sd;
 		shader_setup_from_ray(kg, &sd, &isect, &volume_ray, 0, 0);
-		if(sd.flag & SD_HAS_VOLUME) {
-			if(sd.flag & SD_BACKFACING) {
-				/* If ray exited the volume and never entered to that volume
-				 * it means that camera is inside such a volume.
-				 */
-				bool is_enclosed = false;
-				for(int i = 0; i < enclosed_index; ++i) {
-					if(enclosed_volumes[i] == sd.object) {
-						is_enclosed = true;
-						break;
-					}
-				}
-				if(is_enclosed == false) {
-					stack[stack_index].object = sd.object;
-					stack[stack_index].shader = sd.shader;
-					++stack_index;
+		if(sd.flag & SD_BACKFACING) {
+			/* If ray exited the volume and never entered to that volume
+			 * it means that camera is inside such a volume.
+			 */
+			bool is_enclosed = false;
+			for(int i = 0; i < enclosed_index; ++i) {
+				if(enclosed_volumes[i] == sd.object) {
+					is_enclosed = true;
+					break;
 				}
 			}
-			else {
-				/* If ray from camera enters the volume, this volume shouldn't
-				 * be added to the stak on exit.
-				 */
-				enclosed_volumes[enclosed_index++] = sd.object;
+			if(is_enclosed == false) {
+				stack[stack_index].object = sd.object;
+				stack[stack_index].shader = sd.shader;
+				++stack_index;
 			}
 		}
+		else {
+			/* If ray from camera enters the volume, this volume shouldn't
+			 * be added to the stak on exit.
+			 */
+			enclosed_volumes[enclosed_index++] = sd.object;
+		}
 
 		/* Move ray forward. */
 		volume_ray.P = ray_offset(sd.P, -sd.Ng);




More information about the Bf-blender-cvs mailing list