Fix T51909: Cycles: Uninitialized closure normals for the Hair BSDF
As the title says, the normal wasn't set for the Hair BSDF because it wasn't needed before. However, the denoiser uses it to store the feature passes, so it needs to be set now.
This commit is contained in:
parent
b5696f2799
commit
1f3fd8e60a
Notes:
blender-bot
2023-02-14 07:39:46 +01:00
Referenced by issue #51929, Grease Pencil Onion Skinning does not work since v2.78x Referenced by issue #51909, Blender 2.79 fur denoise bug
|
@ -156,7 +156,7 @@ BSDF_CLOSURE_CLASS_BEGIN(MicrofacetBeckmannRefraction, microfacet_beckmann_refra
|
|||
BSDF_CLOSURE_CLASS_END(MicrofacetBeckmannRefraction, microfacet_beckmann_refraction)
|
||||
|
||||
BSDF_CLOSURE_CLASS_BEGIN(HairReflection, hair_reflection, HairBsdf, LABEL_GLOSSY)
|
||||
CLOSURE_FLOAT3_PARAM(HairReflectionClosure, unused),
|
||||
CLOSURE_FLOAT3_PARAM(HairReflectionClosure, params.N),
|
||||
CLOSURE_FLOAT_PARAM(HairReflectionClosure, params.roughness1),
|
||||
CLOSURE_FLOAT_PARAM(HairReflectionClosure, params.roughness2),
|
||||
CLOSURE_FLOAT3_PARAM(HairReflectionClosure, params.T),
|
||||
|
@ -164,7 +164,7 @@ BSDF_CLOSURE_CLASS_BEGIN(HairReflection, hair_reflection, HairBsdf, LABEL_GLOSSY
|
|||
BSDF_CLOSURE_CLASS_END(HairReflection, hair_reflection)
|
||||
|
||||
BSDF_CLOSURE_CLASS_BEGIN(HairTransmission, hair_transmission, HairBsdf, LABEL_GLOSSY)
|
||||
CLOSURE_FLOAT3_PARAM(HairTransmissionClosure, unused),
|
||||
CLOSURE_FLOAT3_PARAM(HairTransmissionClosure, params.N),
|
||||
CLOSURE_FLOAT_PARAM(HairTransmissionClosure, params.roughness1),
|
||||
CLOSURE_FLOAT_PARAM(HairTransmissionClosure, params.roughness2),
|
||||
CLOSURE_FLOAT3_PARAM(HairReflectionClosure, params.T),
|
||||
|
|
|
@ -725,6 +725,7 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float *
|
|||
HairBsdf *bsdf = (HairBsdf*)bsdf_alloc(sd, sizeof(HairBsdf), weight);
|
||||
|
||||
if(bsdf) {
|
||||
bsdf->N = N;
|
||||
bsdf->roughness1 = param1;
|
||||
bsdf->roughness2 = param2;
|
||||
bsdf->offset = -stack_load_float(stack, data_node.z);
|
||||
|
|
Loading…
Reference in New Issue