GLTF Transmission and Order Independent Transparency

Hi! I have a couple questions about the Order Independent Transparency feature. How does it relate to the GLTF Transmission Extension? In scenes where we have multiple materials that have the extension enabled, only the outermost material seems to be displayed by default on, say, the Babylon Sandbox, everything else is invisible. The same happen when the

Assuming this feature works with the GLTF extension, my other question is: is there any way to enable it on the Babylon Sandbox, or would I need to implement my own viewer with the framework?

OIT is currently not used at all for Transmission in GLTF.

Could you share the model you are experiencing issues with ?

I see, thank you.

It pretty much happens with any models involving multiple transmission Materials.

I can’t share a real scene, due to NDA, but I tried to make a quick simple example.

So you basically have 5 spheres here: two spheres with the blue transmissive material, one with green, one with a white transmissive material, and one sphere in the middle that’s not transmissive.

What we would expect (or rather, what we want) is to see a transmissive sphere behind another transmissive sphere.

So, for example, if I look from the white transmissive sphere towards the blue transmissive sphere opposite to it, I would want to see the blue transmissive sphere behind the smaller non transmissive sphere. But that’s not what happens.

Similar issues happen with scenes where you have a more complex geometry (for example a torus) made of transmissive materials, where you can’t see a transmissive object material across itself:

I know the transmission extension works differently from, say, actual alpha opacity, and that stacked transparent materials are a challenge in real-time, but what I wanted to ask is if there’s any way with Babylon to circumvent these issues I mentioned when using GLTF transmission.

Here’s a zip with the two test scenes (can’t upload here since I’m a new user): https://easyupload.io/sdf9bx

Yup those are unfortunately know limitations of the process in real time :frowning:

You only see in the transmissive surfaces opaque ones.

cc @bghgary

1 Like

The spec alludes to the limitations of real-time renderers. Maybe it’ll help a bit.

glTF/extensions/2.0/Khronos/KHR_materials_transmission at main · KhronosGroup/glTF (github.com)

Rendering transparency in a real-time rasterizer in an efficient manner is a difficult problem…