import * as THREE from 'three/webgpu'; import type { TSLFloatInput, TSLFloatNode, TSLFunction, TSLMat4Input, TSLTextureNode, TSLVec3Input, TSLVec3Node } from '../types/tsl.cjs'; export interface VolumeSmokeShadowOptions { /** Existing light optical-depth cache. The helper borrows the texture. */ opticalDepthTexture: THREE.Texture | TSLTextureNode; /** Matrix transforming world positions into the volume's centered [-.5, .5] domain. */ worldToDomain: TSLMat4Input; /** Direction from the shaded point toward the light, expressed in local domain space. */ lightDirLocal: TSLVec3Input; /** Optical-depth multiplier. Zero is neutral. */ strength?: TSLFloatInput | undefined; } export type VolumeSmokeShadowNode = TSLFunction<[ worldPosition: TSLVec3Node ], TSLFloatNode>; /** * Samples a smoke volume's existing directional optical-depth cache as a scene shadow. * Rays that miss the domain return one; rays that hit sample the light-facing entry point. * * @category TSL */ export declare function volumeSmokeShadow({ opticalDepthTexture, worldToDomain, lightDirLocal, strength, }: VolumeSmokeShadowOptions): VolumeSmokeShadowNode;