[Bf-blender-cvs] [4b209f0] master: Fix T40695: world surface shader incorrectly visible with world volume.

Brecht Van Lommel noreply at git.blender.org
Tue Jun 24 11:46:56 CEST 2014


Commit: 4b209f063cf384f05a9a02d4ac64e90c0ba14e73
Author: Brecht Van Lommel
Date:   Tue Jun 24 11:34:42 2014 +0200
https://developer.blender.org/rB4b209f063cf384f05a9a02d4ac64e90c0ba14e73

Fix T40695: world surface shader incorrectly visible with world volume.

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

M	intern/cycles/kernel/kernel_path.h
M	intern/cycles/kernel/kernel_volume.h

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

diff --git a/intern/cycles/kernel/kernel_path.h b/intern/cycles/kernel/kernel_path.h
index d9ad348..83bceed 100644
--- a/intern/cycles/kernel/kernel_path.h
+++ b/intern/cycles/kernel/kernel_path.h
@@ -132,6 +132,9 @@ ccl_device void kernel_path_indirect(KernelGlobals *kg, RNG *rng, Ray ray,
 						scatter = kernel_path_volume_bounce(kg, rng, &volume_sd, &throughput, &state, L, &ray, 1.0f);
 				}
 
+				if(result != VOLUME_PATH_SCATTERED)
+					throughput *= volume_segment.accum_transmittance;
+
 				/* free cached steps */
 				kernel_volume_decoupled_free(kg, &volume_segment);
 
@@ -514,6 +517,9 @@ ccl_device float4 kernel_path_integrate(KernelGlobals *kg, RNG *rng, int sample,
 						scatter = kernel_path_volume_bounce(kg, rng, &volume_sd, &throughput, &state, &L, &ray, 1.0f);
 				}
 
+				if(result != VOLUME_PATH_SCATTERED)
+					throughput *= volume_segment.accum_transmittance;
+
 				/* free cached steps */
 				kernel_volume_decoupled_free(kg, &volume_segment);
 
diff --git a/intern/cycles/kernel/kernel_volume.h b/intern/cycles/kernel/kernel_volume.h
index e3de0ff..e61a29f 100644
--- a/intern/cycles/kernel/kernel_volume.h
+++ b/intern/cycles/kernel/kernel_volume.h
@@ -741,8 +741,6 @@ ccl_device VolumeIntegrateResult kernel_volume_decoupled_scatter(
 {
 	int closure_flag = segment->closure_flag;
 
-	/* XXX add probalistic scattering! */
-
 	if(!(closure_flag & SD_SCATTER))
 		return VOLUME_PATH_MISSED;
 
@@ -760,8 +758,10 @@ ccl_device VolumeIntegrateResult kernel_volume_decoupled_scatter(
 			/* rescale random number so we can reuse it */
 			xi = 1.0f - (1.0f - xi - sample_transmittance)/(1.0f - sample_transmittance);
 		}
-		else
+		else {
+			*throughput /= sample_transmittance;
 			return VOLUME_PATH_MISSED;
+		}
 	}
 
 	VolumeStep *step;




More information about the Bf-blender-cvs mailing list