Transmission — PBR Concept & Bevy Rendering
Transmission in Physically Based Rendering describes how light passes through a material — think glass, water, gemstones, or thin plastic. Unlike transparency (which often just controls alpha blending), transmission models the full light transport through the material volume, including refraction and roughness-based scattering.
How it works in PBR
In the glTF 2.0 PBR model (via KHR_materials_transmission), transmission is defined by:
- Transmission factor (0–1): how much light passes through. 0 = fully opaque, 1 = fully transmissive.
- Transmission texture (optional): a grayscale map for non-uniform transmission.
- Index of Refraction (IOR): how much light bends when entering/exiting the material. Air = 1.0, water ≈ 1.33, glass ≈ 1.5, diamond ≈ 2.4.
- Roughness: surface roughness of the transmissive material, affecting how scattered the transmitted light appears.
A key physical principle: when the IOR difference between two media is zero (IOR = 1.0, same as air), light should pass through without any scattering — it should be perfectly sharp. Roughness only matters when there’s a refractive boundary.
In Bevy
Bevy supports transmission in its PBR pipeline. Materials with transmission > 0 are rendered via screen-space transmission, where the scene behind the object is sampled and blurred according to the material’s roughness.
Recent fix (2026-06-03): PR #24453 fixed a bug where transmission roughness was not being scaled by IOR. This meant materials with IOR=1.0 would still appear blurry — contradicting physical behavior. The fix scales the applied roughness by the IOR value, so:
- IOR=1.0 → perfectly sharp transmission (no blur)
- Higher IOR → progressively more roughness influence
Practical implications
- Fix affects material appearance of all transmissive models, especially those with IOR near 1.0.
- Shader-only change — no Rust API modifications.
- Tested against Khronos TransmissionRoughnessTest model.
- If you’re comparing Bevy renders against glTF reference viewers, this makes transmission rendering physically correct.
Related pages
- clearcoat — related PBR surface coating concept
- standard-material — Bevy’s StandardMaterial supports transmission through its PBR properties
- bevy-pbr — the
bevy_pbrcrate that implements the PBR pipeline with transmission - bevy-rendering — Bevy rendering system overview