[Bf-blender-cvs] [2d1eef87f6b] soc-2018-hair-shader: Fix discrepancy between RNG in CPU and GPU
L. E. Segovia
noreply at git.blender.org
Wed Jun 13 15:19:54 CEST 2018
Commit: 2d1eef87f6b61a4a2c8ff476d290c9d841661f6b
Author: L. E. Segovia
Date: Wed Jun 13 13:19:21 2018 +0000
Branches: soc-2018-hair-shader
https://developer.blender.org/rB2d1eef87f6b61a4a2c8ff476d290c9d841661f6b
Fix discrepancy between RNG in CPU and GPU
The second random sample is reordered between devices,
which causes a divergence if using both at the same time.
Thanks to nirved on irc for finding this out!
===================================================================
M intern/cycles/kernel/closure/bsdf_hair_principled.h
===================================================================
diff --git a/intern/cycles/kernel/closure/bsdf_hair_principled.h b/intern/cycles/kernel/closure/bsdf_hair_principled.h
index f8f76cc9007..58cbaeb99e5 100644
--- a/intern/cycles/kernel/closure/bsdf_hair_principled.h
+++ b/intern/cycles/kernel/closure/bsdf_hair_principled.h
@@ -357,7 +357,8 @@ ccl_device int bsdf_principled_hair_sample(KernelGlobals *kg, const ShaderClosur
float2 u[2];
u[0] = make_float2(randu, randv);
- u[1] = make_float2(lcg_step_float_addrspace(&sd->lcg_state), lcg_step_float_addrspace(&sd->lcg_state));
+ u[1].x = lcg_step_float_addrspace(&sd->lcg_state);
+ u[1].y = lcg_step_float_addrspace(&sd->lcg_state);
//printf("Enter sample data: ");
//scanf("%d %d %d %d %d %d %d %d", &wo.x, &wo.y, &wo.z, &bsdf->extra->geom.w, &u[0].x, &u[0].y, &u[1].x, &u[1].y);
More information about the Bf-blender-cvs
mailing list