/** * Shadow mapping shared constants and bind group layout factories. * * Group 2 layout (main pass) — 12 bindings, 10 sampled textures: * binding 0: uniform buffer (848 bytes) * binding 1: comparison sampler * binding 2–3: dir cascade 0 depth maps (slots 0–1) * binding 4–5: dir cascade 1 depth maps (slots 0–1) * binding 6–7: point cubemaps (slots 0–1) * binding 8–11: spot depth maps (slots 0–3) * * Combined with group 1's 3 material textures = 13 per-stage sampled textures * (WebGPU maxSampledTexturesPerShaderStage limit is 16). * * Uniform layout (848 bytes): * 0–351 DirShadowSlot[2] (176B each) * 352–415 PointShadowSlot[2] (32B each) * 416–799 SpotShadowSlot[4] (96B each) * 800–815 dirLightToSlot vec4 * 816–831 pointLightToSlot vec4 * 832–847 spotLightToSlot vec4 */ export declare const SHADOW_UNIFORM_SIZE = 848; export declare const MAX_DIR_SHADOW_SLOTS = 2; export declare const MAX_POINT_SHADOW_SLOTS = 2; export declare const MAX_SPOT_SHADOW_SLOTS = 4; /** Sentinel u32 value indicating no shadow slot for a light index. */ export declare const SHADOW_SLOT_NONE = 4294967295; export declare function createShadowBindGroupLayout(device: GPUDevice): GPUBindGroupLayout; export interface DummyShadowResources { uniformBuffer: GPUBuffer; dummy2DView: GPUTextureView; dummyCubeView: GPUTextureView; sampler: GPUSampler; bindGroup: GPUBindGroup; } export declare function createDummyShadowResources(device: GPUDevice, layout: GPUBindGroupLayout): DummyShadowResources; //# sourceMappingURL=shadow-uniforms.d.ts.map