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>2018-03-19 22:20:01 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-03-19 23:22:15 +0300
commit148b0fef0980ab1263823ef4220d25caa0918d82 (patch)
tree6a2f99a765bde38759a8452443d97dc918564429 /intern/cycles/kernel/kernel_path_state.h
parentfddb4dee8a880df138a5163825625a19d0ec2f1c (diff)
Fix T54317: overlapping volume render bug after recent changes.
Increasing the samplig dimensions like this is not optimal, I'm looking into some deeper changes to reuse the random number and change the RR probabilities, but this should fix the bug for now.
Diffstat (limited to 'intern/cycles/kernel/kernel_path_state.h')
-rw-r--r--intern/cycles/kernel/kernel_path_state.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/intern/cycles/kernel/kernel_path_state.h b/intern/cycles/kernel/kernel_path_state.h
index ff7d1307a6c..90937dbf86e 100644
--- a/intern/cycles/kernel/kernel_path_state.h
+++ b/intern/cycles/kernel/kernel_path_state.h
@@ -166,6 +166,23 @@ ccl_device_inline void path_state_next(KernelGlobals *kg, ccl_addr_space PathSta
#endif
}
+ccl_device_inline bool path_state_volume_next(KernelGlobals *kg, ccl_addr_space PathState *state)
+{
+ /* For volume bounding meshes we pass through without counting transparent
+ * bounces, only sanity check in case self intersection gets us stuck. */
+ state->volume_bounds_bounce++;
+ if (state->volume_bounds_bounce > VOLUME_BOUNDS_MAX) {
+ return false;
+ }
+
+ /* Random number generator next bounce. */
+ if(state->volume_bounds_bounce > 1) {
+ state->rng_offset += PRNG_BOUNCE_NUM;
+ }
+
+ return true;
+}
+
ccl_device_inline uint path_state_ray_visibility(KernelGlobals *kg, ccl_addr_space PathState *state)
{
uint flag = state->flag & PATH_RAY_ALL_VISIBILITY;