Translucent roughness: Only for specular but not diffuse? #31

bhouston opened this Issue Sep 24, 2015 · 1 comment


None yet

2 participants


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?

mmp commented Sep 26, 2015

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment