API

Interface TransmissionOptions

Options controlling how a render task exposes opaque scene color to transmissive materials. Use these to opt out of the linear offscreen path, control refresh frequency, and limit mipmap generation cost.

interface TransmissionOptions {
    copyCount?: number;
    generateMipmaps?: boolean;
    grabDepth?: boolean;
    linear?: boolean;
    mipLevelCount?: number;
}
Index
copyCount?: number

Override how many times the scene-colour grab is refreshed per frame. 0 means before every transmissive draw; the default is once before the first transmissive draw.

generateMipmaps?: boolean

Set false when the transmissive material never samples the scene-colour grab above mip 0.

grabDepth?: boolean

When true, ALSO snapshot the task's DEPTH attachment at the same mid-pass grab, into a single-sample r32float texture exposed as SceneColorGrab.depthTexture — the opaque scene depth as of the moment the first transmissive surface draws. Lets a transmissive material depth-ray-march the opaque scene (screen-space reflection / refraction) without re-rendering a separate depth prepass: the depth attachment itself cannot be sampled while the transmissive draw has it bound (a WebGPU feedback loop), which is exactly why the snapshot is taken at the pass break. MSAA sources resolve sample 0 (matching createDepthResolveTask). No-op when the task's render target carries no depth attachment.

linear?: boolean

When true (the default), retarget the task's color buffer to a linear rgba16float offscreen and tone-map it in a trailing image-processing pass — the model PBR transmission uses so refractive materials read scene color in linear space.

Set false to perform ONLY the mid-pass scene-color grab: the task's render target format / sample count / clear are left untouched and no tone-map pass is added. Use this for consumers that own their tone mapping / post (e.g. a custom depth-of-field stack) and just need the opaque scene color exposed to a custom transmissive ShaderMaterial.

mipLevelCount?: number

Cap the scene-colour grab mip chain. Use this when the material samples explicit low LODs only, so unused tiny mips are not regenerated every frame. Ignored when generateMipmaps is false.