pbrt-v3
pbrt-v3 copied to clipboard
Translucent roughness: Only for specular but not diffuse?
The simplified pseudo code for the "translucent" material is this:
bsdfs.add( new LambertianReflection( reflectance * diffuse ) );
bsdfs.add( new LambertianTransmission( transmittance * diffuse ) );
var microfacetDistribution = new TrowbridgeReitzDistribution( roughness, roughness );
var fresnel = new FresnelDielectric( 1, 1.5 );
bsdfs.add( new MicrofacetReflection( reflectance * specular, microfacetDistribution, fresnel ) );
bsdfs.add( new MicrofacetTransmission( transmittance * specular, microfacetDistribution, 1.0, 1.5 ) );
You can see that roughess is only used for the specular. But if one assumes a microfacet model of the surface for specular, shouldn't one similarly assume microsurface model for the diffuse?
Second issue, doesn't this lead to a microfacet model conflict: Oren-Nayar model is derived from the older Cook-Torrence / Beckmann microfacet distribution. But the specular model here is based on the more modern Trowbridge-Reitz microfacet distribution. Thus there may be a roughness parameterization conflict between these two models as it is -- although it also may be so slight it doesn't matter, or maybe diffuse roughness in this case has no perceptible result?
Ah, interesting. I agree it'd probably make sense to use the roughness for both the specular and diffuse models, though, as you point out, it's not obvious how to relate those two.