import type { DataArrayTexture } from 'three/webgpu'; import type { TSLFloatInput, TSLFloatNode, TSLUniformNode, TSLVec2Node, TSLVec3Node, TSLVec4Node } from '../types/tsl.js'; import type { BakedMotionFrameSample } from '../BakedMotion/BakedMotionManifest.js'; type BakedMotionLayerNodes = [ TSLUniformNode<'int', number>, TSLUniformNode<'int', number>, TSLUniformNode<'int', number>, TSLUniformNode<'int', number> ]; type BakedMotionWeightNodes = [ TSLUniformNode<'float', number>, TSLUniformNode<'float', number>, TSLUniformNode<'float', number>, TSLUniformNode<'float', number> ]; /** * Four-tap GPU sampler for preloaded Baked Motion texture arrays. The temporal codec is * decoded once at load; interaction then changes eight tiny uniforms (four layers/weights). * * @class BakedMotionNode * @category TSL */ export declare class BakedMotionNode { albedoTexture: DataArrayTexture | null; depthTexture: DataArrayTexture | null; layers: BakedMotionLayerNodes; weights: BakedMotionWeightNodes; blendNode: TSLFloatNode; node: TSLVec4Node; rgb: TSLVec3Node; alphaNode: TSLFloatNode; r: TSLFloatNode; constructor(albedoTexture: DataArrayTexture, depthTexture?: DataArrayTexture | null); /** Bilinearly blend four array layers at an arbitrary UV node. */ sample(arrayTexture: DataArrayTexture | null, uvNode: TSLVec2Node): TSLVec4Node; sampleColor(uvNode: TSLVec2Node): TSLVec4Node; /** Sample one of the four currently assigned physical taps without its blend weight. */ sampleSlot(arrayTexture: DataArrayTexture | null, slot: number, uvNode: TSLVec2Node): TSLVec4Node; sampleColorSlot(slot: number, uvNode: TSLVec2Node): TSLVec4Node; sampleDepth(uvNode: TSLVec2Node): TSLFloatNode | null; sampleDepthSlot(slot: number, uvNode: TSLVec2Node): TSLFloatNode | null; /** Reuse the repository POM raymarch with the four-tap depth signal as its height source. */ parallax(uvNode?: TSLVec2Node, scale?: TSLFloatInput): TSLVec3Node | null; /** Apply a result from `paramToFrame` (one-dimensional or four-corner). */ setSample(sample: BakedMotionFrameSample): this; dispose(): void; } export {};