import * as THREE from 'three/webgpu'; import type { LightShadow, NodeBuilder, NodeFrame } from 'three/webgpu'; export interface SharedShadowRenderTarget { shadowMap: THREE.RenderTarget; depthTexture: THREE.DepthTexture | null; } export interface SharedShadowSource { shadowMap: THREE.RenderTarget | null; } declare module 'three/webgpu' { interface ShadowNode { setupRenderTarget(shadow: LightShadow, builder: NodeBuilder): SharedShadowRenderTarget; } } type SharedShadowNodeConstructor = typeof THREE.ShadowNode & { new (light: THREE.Light, shadow?: LightShadow | null): THREE.ShadowNode; }; declare const SharedShadowNode_base: SharedShadowNodeConstructor; /** * Shadow node that shares one rendered shadow map while compiling independent receiver-position graphs. */ export declare class SharedShadowNode extends SharedShadowNode_base { source: SharedShadowSource | null; constructor(light: THREE.Light, source?: SharedShadowSource | null); setupRenderTarget(shadow: LightShadow, builder: NodeBuilder): SharedShadowRenderTarget; updateBefore(frame: NodeFrame): undefined; } export {};