dreamwork engine 开源
https://github.com/dreamworksanimation/openmoonray
Dual Lobe Specular
- dual lobe BeckMann
1
2half specularTermBeckMann = (2.0 * (brdfData.roughness2) / ((d * d) * max(0.1h, LoH2) * brdfData.normalizationTerm)) * _LobeWeight * mask;
half specularTerm = (specularTermGGX / 2 + specularTermBeckMann) * SpecularOcclusion ; - skin dual lobe specular
1
2
3
4
5
6float roughnessL = PerceptualSmoothnessToRoughness(saturate(lobeA - bsdfData.perceptualRoughness * lobeA));
float roughnessH = PerceptualSmoothnessToRoughness(saturate(lobeB - bsdfData.perceptualRoughness * lobeB));
DV = lerp(DV_SmithJointGGX(NdotH, abs(NdotL), clampedNdotV, roughnessL, preLightData.partLambdaV),
DV_SmithJointGGX(NdotH, abs(NdotL), clampedNdotV, roughnessH, preLightData.partLambdaV),
lobeMix);
ddx ddy
底层实现本质,只支持pixel input的梯度