Skip to content

Support Dispersion in Standard Surface to glTF PBR#2636

Merged
jstone-lucasfilm merged 4 commits intoAcademySoftwareFoundation:mainfrom
bowald:gltf-pbr-dispersion
Oct 30, 2025
Merged

Support Dispersion in Standard Surface to glTF PBR#2636
jstone-lucasfilm merged 4 commits intoAcademySoftwareFoundation:mainfrom
bowald:gltf-pbr-dispersion

Conversation

@bowald
Copy link
Copy Markdown
Contributor

@bowald bowald commented Oct 20, 2025

closes #2585

This PR adds dispersion input to gltf_pbr and a translation from transmission_dispersion in standard surface to glTFs equivalent.

Note

Dispersion in this PR is only an input to gltf_pbr, it is not implemented in any render backends.
This is similar how dispersion is treated in OpenPBR and Standard surface, as they are also missing implementations. For more info, check Issue: #2202 and PR: #2203.

The motivation to add this is to be able to bake dispersion inputs into gltf_pbr even if we cant render this is the MaterialX Viewer.

Dispersion in gltf

Type Description Required
dispersion number The strength of the dispersion effect, specified as 20/Abbe number. No, default: 0

From KHR_materials_dispersion

Translation from Standard surface to gltf_pbr

Transmission_dispersion - dispersion Abbe number, describing how much the index of refraction varies across wavelengths.
3.8 Specular Transmission - Transmission_dispersion

Specifies the abbe number of the material, which describes how much the index of refraction varies across wavelengths. For glass and diamonds, this is typically in the range of 10 to 70, with lower numbers giving more dispersion. The default value is 0, which turns off dispersion.
Arnold help - Standard Surface - Transmission

The translation is implemented as 0.0 if transmission_dispersion==0.0 else 20.0/transmission_dispersion

Discussion

  1. Currently there is no doc string in gltf_pbr that indicate that this input is not implemented. Should that be added?
  2. In gltf_pbr I have added Dispersion under the uifolder Dispersion as it seems like we add folders based on extensions. However, I think it may be added to Volume and or Transmission as you need the volume extension as well as transmission, and ior extensions to use dispersion. But perhaps this is a separate topic all together, how to group phenomenon's so it makes sense from an artistic level,.

@bowald bowald changed the title dispersion input gltf_pbr, translation from stdsurf Support Dispersion in Standard Surface to glTF PBR + Dispersion input in glTF PBR Oct 20, 2025
@bowald bowald changed the title Support Dispersion in Standard Surface to glTF PBR + Dispersion input in glTF PBR Support Dispersion in Standard Surface to glTF PBR Oct 20, 2025
Signed-off-by: Jonathan Stone <jstone@lucasfilm.com>
Signed-off-by: Jonathan Stone <jstone@lucasfilm.com>
Copy link
Copy Markdown
Member

@jstone-lucasfilm jstone-lucasfilm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great to me, thanks @bowald, and let's save the documentation of missing inputs for our future Technical Artist Guide, which will be more visible to artists than comments in our data libraries.

@jstone-lucasfilm jstone-lucasfilm merged commit 96c5870 into AcademySoftwareFoundation:main Oct 30, 2025
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support dispersion in Standard Surface to glTF PBR translation

2 participants