Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2014-06-24 13:34:42 +0400
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2014-06-24 13:35:48 +0400
commit4b209f063cf384f05a9a02d4ac64e90c0ba14e73 (patch)
treee474f413248a1725562d9b3a81f356ba858f31a5
parent16baa8c273e0c344dcf985205e43957591cf5ad6 (diff)
Fix T40695: world surface shader incorrectly visible with world volume.
-rw-r--r--intern/cycles/kernel/kernel_path.h6
-rw-r--r--intern/cycles/kernel/kernel_volume.h6
2 files changed, 9 insertions, 3 deletions
diff --git a/intern/cycles/kernel/kernel_path.h b/intern/cycles/kernel/kernel_path.h
index d9ad348a952..83bceed44e5 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 e3de0ff90c8..e61a29fb627 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;