OpenPBR icon indicating copy to clipboard operation
OpenPBR copied to clipboard

Some minor rewording improvements/clarifications

Open portsmouth opened this issue 1 year ago • 4 comments

Some minor changes are needed to improve the clarity of the wording (around the implementation of the coat details). I discovered these while using the spec myself to implement the Arnold version.

image

image

image

image

portsmouth avatar Jun 12 '24 16:06 portsmouth

Needs a review. cc @jstone-lucasfilm @virtualzavie @peterkutz

portsmouth avatar Jun 24 '24 13:06 portsmouth

image

portsmouth avatar Sep 17 '24 14:09 portsmouth

This change looks great to me, though it needs to be proposed as a change to dev_1.2!

jstone-lucasfilm avatar Oct 01 '24 19:10 jstone-lucasfilm

The formula we give for the fuzz layering can be written in a more simplified form (the algebra is trivial). This makes it a bit clearer why the MaterialX form of the layering works, i.e.:

   <!-- Fuzz Layer -->
    <sheen_bsdf name="fuzz_bsdf" type="BSDF">
      <input name="weight" type="float" interfacename="fuzz_weight" />
      <input name="color" type="color3" interfacename="fuzz_color" />
      <input name="roughness" type="float" interfacename="fuzz_roughness" />
      <input name="normal" type="vector3" interfacename="geometry_normal" />
      <input name="mode" type="string" value="zeltner" />
    </sheen_bsdf>

    <layer name="fuzz_layer" type="BSDF">
      <input name="top" type="BSDF" nodename="fuzz_bsdf" />
      <input name="base" type="BSDF" nodename="coat_layer" />
    </layer>

which does $\mathbf{layer}(\texttt{F} f_\mathrm{fuzz}, f_c)$ (i.e. just layer the fuzz BRDF scaled by the fuzz weight), which is what the formula in green is doing below (in albedo-scaling form). Intuitively, layering a partially present BRDF on a base, in albedo-scaling approximation is equivalent to just scaling the BRDF by the presence weight.

Whereas it's not (immediately) obvious that red formula does that as well.

Before https://github.com/AcademySoftwareFoundation/OpenPBR/pull/218/commits/30293bc7bfaa4d84fe94eed082da69c2d612ac15 image

After https://github.com/AcademySoftwareFoundation/OpenPBR/pull/218/commits/30293bc7bfaa4d84fe94eed082da69c2d612ac15 image

Though one must assume also that the MaterialX albedo-scaling ignores the fuzz color in the fuzz brdf albedo computation (which it does in the test render implementations), since the fuzz BRDF contains a color factor which is explicitly ignored in the albedo used in the layering formula given.

portsmouth avatar Oct 05 '24 19:10 portsmouth

@jstone-lucasfilm can be merged?

portsmouth avatar Oct 15 '24 12:10 portsmouth

Added a small clarification to the text to remind that the specular_weight needs to be appropriately clamped to prevent Fresnel > 1 in the darkening calculation:

image

portsmouth avatar Oct 17 '24 14:10 portsmouth

@jstone-lucasfilm Can this be merged?

portsmouth avatar Nov 12 '24 13:11 portsmouth