From 29f4a8510cf4c555e7f1658e928636f38f4f84db Mon Sep 17 00:00:00 2001 From: Mai Lavelle Date: Thu, 18 May 2017 21:14:31 -0400 Subject: Cycles: Fix random noise pattern seen with multiscatter bsdf and split kernel Differentials were unset if roughness was low giving undefined behavior. --- intern/cycles/kernel/closure/bsdf_microfacet_multi.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'intern/cycles/kernel/closure') diff --git a/intern/cycles/kernel/closure/bsdf_microfacet_multi.h b/intern/cycles/kernel/closure/bsdf_microfacet_multi.h index ec0c9823445..b07b515c405 100644 --- a/intern/cycles/kernel/closure/bsdf_microfacet_multi.h +++ b/intern/cycles/kernel/closure/bsdf_microfacet_multi.h @@ -406,6 +406,10 @@ ccl_device int bsdf_microfacet_multi_ggx_sample(KernelGlobals *kg, const ShaderC *omega_in = 2*dot(Z, I)*Z - I; *pdf = 1e6f; *eval = make_float3(1e6f, 1e6f, 1e6f); +#ifdef __RAY_DIFFERENTIALS__ + *domega_in_dx = (2 * dot(Z, dIdx)) * Z - dIdx; + *domega_in_dy = (2 * dot(Z, dIdy)) * Z - dIdy; +#endif return LABEL_REFLECT|LABEL_SINGULAR; } -- cgit v1.2.3