@aura3d/rendering 2.0.4 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AtmosphereWetness.d.ts +61 -0
- package/dist/AtmosphereWetness.d.ts.map +1 -0
- package/dist/AtmosphereWetness.js +99 -0
- package/dist/AtmosphereWetness.js.map +1 -0
- package/dist/ClusteredForwardLighting.d.ts +25 -1
- package/dist/ClusteredForwardLighting.d.ts.map +1 -1
- package/dist/ClusteredForwardLighting.js +80 -3
- package/dist/ClusteredForwardLighting.js.map +1 -1
- package/dist/DayNightSky.d.ts +63 -0
- package/dist/DayNightSky.d.ts.map +1 -0
- package/dist/DayNightSky.js +156 -0
- package/dist/DayNightSky.js.map +1 -0
- package/dist/EnvironmentPresetPack.d.ts +30 -0
- package/dist/EnvironmentPresetPack.d.ts.map +1 -0
- package/dist/EnvironmentPresetPack.js +49 -0
- package/dist/EnvironmentPresetPack.js.map +1 -0
- package/dist/ForwardPass.d.ts +65 -0
- package/dist/ForwardPass.d.ts.map +1 -1
- package/dist/ForwardPass.js +196 -2
- package/dist/ForwardPass.js.map +1 -1
- package/dist/InstancedPBRMaterial.d.ts +1 -0
- package/dist/InstancedPBRMaterial.d.ts.map +1 -1
- package/dist/InstancedPBRMaterial.js +3 -0
- package/dist/InstancedPBRMaterial.js.map +1 -1
- package/dist/InstancingDiagnostics.d.ts +69 -0
- package/dist/InstancingDiagnostics.d.ts.map +1 -0
- package/dist/InstancingDiagnostics.js +98 -0
- package/dist/InstancingDiagnostics.js.map +1 -0
- package/dist/LightingRig.d.ts +19 -1
- package/dist/LightingRig.d.ts.map +1 -1
- package/dist/LightingRig.js +61 -1
- package/dist/LightingRig.js.map +1 -1
- package/dist/MeshConsolidation.d.ts +12 -0
- package/dist/MeshConsolidation.d.ts.map +1 -1
- package/dist/MeshConsolidation.js +28 -0
- package/dist/MeshConsolidation.js.map +1 -1
- package/dist/MorphTargetPlan.d.ts +29 -2
- package/dist/MorphTargetPlan.d.ts.map +1 -1
- package/dist/MorphTargetPlan.js +23 -4
- package/dist/MorphTargetPlan.js.map +1 -1
- package/dist/NormalMappedPBRMaterial.d.ts.map +1 -1
- package/dist/NormalMappedPBRMaterial.js +22 -2
- package/dist/NormalMappedPBRMaterial.js.map +1 -1
- package/dist/OceanSurface.d.ts +75 -0
- package/dist/OceanSurface.d.ts.map +1 -1
- package/dist/OceanSurface.js +211 -0
- package/dist/OceanSurface.js.map +1 -1
- package/dist/PBRMaterial.d.ts +1 -0
- package/dist/PBRMaterial.d.ts.map +1 -1
- package/dist/PBRMaterial.js +23 -2
- package/dist/PBRMaterial.js.map +1 -1
- package/dist/PbrReference.d.ts +48 -0
- package/dist/PbrReference.d.ts.map +1 -1
- package/dist/PbrReference.js +126 -0
- package/dist/PbrReference.js.map +1 -1
- package/dist/PlanarReflection.d.ts +221 -0
- package/dist/PlanarReflection.d.ts.map +1 -0
- package/dist/PlanarReflection.js +541 -0
- package/dist/PlanarReflection.js.map +1 -0
- package/dist/PostProcessPass.d.ts +13 -0
- package/dist/PostProcessPass.d.ts.map +1 -1
- package/dist/PostProcessPass.js +15 -4
- package/dist/PostProcessPass.js.map +1 -1
- package/dist/ReflectionSurfaces.d.ts +14 -0
- package/dist/ReflectionSurfaces.d.ts.map +1 -1
- package/dist/ReflectionSurfaces.js +93 -0
- package/dist/ReflectionSurfaces.js.map +1 -1
- package/dist/RenderDevice.d.ts +87 -0
- package/dist/RenderDevice.d.ts.map +1 -1
- package/dist/RenderDevice.js +85 -0
- package/dist/RenderDevice.js.map +1 -1
- package/dist/Renderer.js +3 -1
- package/dist/Renderer.js.map +1 -1
- package/dist/RendererPostprocessPlan.d.ts +48 -0
- package/dist/RendererPostprocessPlan.d.ts.map +1 -1
- package/dist/RendererPostprocessPlan.js +101 -11
- package/dist/RendererPostprocessPlan.js.map +1 -1
- package/dist/RendererVisualPipelineReport.d.ts.map +1 -1
- package/dist/RendererVisualPipelineReport.js +3 -1
- package/dist/RendererVisualPipelineReport.js.map +1 -1
- package/dist/Sampler.d.ts +29 -0
- package/dist/Sampler.d.ts.map +1 -1
- package/dist/Sampler.js +47 -0
- package/dist/Sampler.js.map +1 -1
- package/dist/SdfText.d.ts +250 -0
- package/dist/SdfText.d.ts.map +1 -0
- package/dist/SdfText.js +551 -0
- package/dist/SdfText.js.map +1 -0
- package/dist/ShaderChunks.d.ts.map +1 -1
- package/dist/ShaderChunks.js +30 -12
- package/dist/ShaderChunks.js.map +1 -1
- package/dist/ShaderLibrary.d.ts.map +1 -1
- package/dist/ShaderLibrary.js +478 -34
- package/dist/ShaderLibrary.js.map +1 -1
- package/dist/ShaderLibraryCore.d.ts.map +1 -1
- package/dist/ShaderLibraryCore.js +70 -12
- package/dist/ShaderLibraryCore.js.map +1 -1
- package/dist/ShadowMap.d.ts +24 -0
- package/dist/ShadowMap.d.ts.map +1 -1
- package/dist/ShadowMap.js +43 -0
- package/dist/ShadowMap.js.map +1 -1
- package/dist/SkinnedLitMaterial.d.ts.map +1 -1
- package/dist/SkinnedLitMaterial.js +2 -0
- package/dist/SkinnedLitMaterial.js.map +1 -1
- package/dist/SkinningBounds.d.ts +10 -0
- package/dist/SkinningBounds.d.ts.map +1 -1
- package/dist/SkinningBounds.js +27 -0
- package/dist/SkinningBounds.js.map +1 -1
- package/dist/SpriteFlipbook.d.ts +60 -0
- package/dist/SpriteFlipbook.d.ts.map +1 -0
- package/dist/SpriteFlipbook.js +128 -0
- package/dist/SpriteFlipbook.js.map +1 -0
- package/dist/TerrainTiles.d.ts +120 -0
- package/dist/TerrainTiles.d.ts.map +1 -0
- package/dist/TerrainTiles.js +221 -0
- package/dist/TerrainTiles.js.map +1 -0
- package/dist/TexturedPBRMaterial.d.ts +1 -0
- package/dist/TexturedPBRMaterial.d.ts.map +1 -1
- package/dist/TexturedPBRMaterial.js +23 -2
- package/dist/TexturedPBRMaterial.js.map +1 -1
- package/dist/TexturedUnlitMaterial.d.ts.map +1 -1
- package/dist/TexturedUnlitMaterial.js +20 -2
- package/dist/TexturedUnlitMaterial.js.map +1 -1
- package/dist/UnlitMaterial.d.ts.map +1 -1
- package/dist/UnlitMaterial.js +20 -2
- package/dist/UnlitMaterial.js.map +1 -1
- package/dist/VertexFormat.d.ts +6 -0
- package/dist/VertexFormat.d.ts.map +1 -1
- package/dist/VertexFormat.js +12 -0
- package/dist/VertexFormat.js.map +1 -1
- package/dist/VolumetricFog.d.ts +55 -0
- package/dist/VolumetricFog.d.ts.map +1 -0
- package/dist/VolumetricFog.js +91 -0
- package/dist/VolumetricFog.js.map +1 -0
- package/dist/WaterSurface.d.ts +77 -0
- package/dist/WaterSurface.d.ts.map +1 -0
- package/dist/WaterSurface.js +133 -0
- package/dist/WaterSurface.js.map +1 -0
- package/dist/WebGL2Device.d.ts +58 -0
- package/dist/WebGL2Device.d.ts.map +1 -1
- package/dist/WebGL2Device.js +536 -17
- package/dist/WebGL2Device.js.map +1 -1
- package/dist/WebGPUDevice.d.ts +50 -0
- package/dist/WebGPUDevice.d.ts.map +1 -1
- package/dist/WebGPUDevice.js +504 -10
- package/dist/WebGPUDevice.js.map +1 -1
- package/dist/WebGPUSkinningLimits.d.ts +40 -0
- package/dist/WebGPUSkinningLimits.d.ts.map +1 -1
- package/dist/WebGPUSkinningLimits.js +32 -0
- package/dist/WebGPUSkinningLimits.js.map +1 -1
- package/dist/effects/CollisionModule.d.ts +9 -0
- package/dist/effects/CollisionModule.d.ts.map +1 -1
- package/dist/effects/CollisionModule.js +10 -0
- package/dist/effects/CollisionModule.js.map +1 -1
- package/dist/effects/ColorModule.d.ts +7 -0
- package/dist/effects/ColorModule.d.ts.map +1 -1
- package/dist/effects/ColorModule.js +23 -0
- package/dist/effects/ColorModule.js.map +1 -1
- package/dist/effects/ForceModule.d.ts +35 -0
- package/dist/effects/ForceModule.d.ts.map +1 -1
- package/dist/effects/ForceModule.js +49 -0
- package/dist/effects/ForceModule.js.map +1 -1
- package/dist/effects/GPUParticleBackend.d.ts +186 -0
- package/dist/effects/GPUParticleBackend.d.ts.map +1 -1
- package/dist/effects/GPUParticleBackend.js +692 -1
- package/dist/effects/GPUParticleBackend.js.map +1 -1
- package/dist/effects/HeightfieldModule.d.ts +58 -0
- package/dist/effects/HeightfieldModule.d.ts.map +1 -0
- package/dist/effects/HeightfieldModule.js +129 -0
- package/dist/effects/HeightfieldModule.js.map +1 -0
- package/dist/effects/LightingModule.d.ts +34 -0
- package/dist/effects/LightingModule.d.ts.map +1 -0
- package/dist/effects/LightingModule.js +54 -0
- package/dist/effects/LightingModule.js.map +1 -0
- package/dist/effects/ParticleDiagnostics.d.ts +8 -0
- package/dist/effects/ParticleDiagnostics.d.ts.map +1 -1
- package/dist/effects/ParticleDiagnostics.js +3 -0
- package/dist/effects/ParticleDiagnostics.js.map +1 -1
- package/dist/effects/ParticleModule.d.ts +8 -0
- package/dist/effects/ParticleModule.d.ts.map +1 -1
- package/dist/effects/ParticleModule.js.map +1 -1
- package/dist/effects/ParticleRenderer.d.ts +20 -0
- package/dist/effects/ParticleRenderer.d.ts.map +1 -1
- package/dist/effects/ParticleRenderer.js +57 -7
- package/dist/effects/ParticleRenderer.js.map +1 -1
- package/dist/effects/ParticleSystem.d.ts +45 -1
- package/dist/effects/ParticleSystem.d.ts.map +1 -1
- package/dist/effects/ParticleSystem.js +373 -4
- package/dist/effects/ParticleSystem.js.map +1 -1
- package/dist/effects/SizeModule.d.ts +4 -0
- package/dist/effects/SizeModule.d.ts.map +1 -1
- package/dist/effects/SizeModule.js +16 -0
- package/dist/effects/SizeModule.js.map +1 -1
- package/dist/effects/SubEmitterModule.d.ts +61 -0
- package/dist/effects/SubEmitterModule.d.ts.map +1 -0
- package/dist/effects/SubEmitterModule.js +119 -0
- package/dist/effects/SubEmitterModule.js.map +1 -0
- package/dist/effects/TrailModule.d.ts +38 -0
- package/dist/effects/TrailModule.d.ts.map +1 -1
- package/dist/effects/TrailModule.js +95 -2
- package/dist/effects/TrailModule.js.map +1 -1
- package/dist/effects/TurbulenceModule.d.ts +43 -0
- package/dist/effects/TurbulenceModule.d.ts.map +1 -0
- package/dist/effects/TurbulenceModule.js +130 -0
- package/dist/effects/TurbulenceModule.js.map +1 -0
- package/dist/effects/index.d.ts +4 -0
- package/dist/effects/index.d.ts.map +1 -1
- package/dist/effects/index.js +4 -0
- package/dist/effects/index.js.map +1 -1
- package/dist/index.d.ts +57 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -10
- package/dist/index.js.map +1 -1
- package/dist/materials/MaterialExtensions.js +3 -3
- package/dist/materials/MaterialExtensions.js.map +1 -1
- package/dist/postprocess/NativeBloomPyramid.d.ts +28 -0
- package/dist/postprocess/NativeBloomPyramid.d.ts.map +1 -0
- package/dist/postprocess/NativeBloomPyramid.js +54 -0
- package/dist/postprocess/NativeBloomPyramid.js.map +1 -0
- package/dist/postprocess/NativeLdrEffectLuts.d.ts +10 -1
- package/dist/postprocess/NativeLdrEffectLuts.d.ts.map +1 -1
- package/dist/postprocess/NativeLdrEffectLuts.js +19 -2
- package/dist/postprocess/NativeLdrEffectLuts.js.map +1 -1
- package/dist/postprocess/index.d.ts +2 -0
- package/dist/postprocess/index.d.ts.map +1 -1
- package/dist/postprocess/index.js +1 -0
- package/dist/postprocess/index.js.map +1 -1
- package/dist/production-runtime/PBRHDRPipeline.d.ts +22 -0
- package/dist/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
- package/dist/production-runtime/PBRHDRPipeline.js +125 -0
- package/dist/production-runtime/PBRHDRPipeline.js.map +1 -1
- package/dist/production-runtime/ProductionWebGPURenderer.d.ts +52 -0
- package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
- package/dist/production-runtime/ProductionWebGPURenderer.js +101 -0
- package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
- package/dist/production-runtime/index.d.ts +5 -4
- package/dist/production-runtime/index.d.ts.map +1 -1
- package/dist/production-runtime/index.js +3 -2
- package/dist/production-runtime/index.js.map +1 -1
- package/dist/production-runtime/passes/DepthPrepass.d.ts +26 -1
- package/dist/production-runtime/passes/DepthPrepass.d.ts.map +1 -1
- package/dist/production-runtime/passes/DepthPrepass.js +49 -2
- package/dist/production-runtime/passes/DepthPrepass.js.map +1 -1
- package/dist/production-runtime/passes/FramegraphTopology.d.ts +13 -0
- package/dist/production-runtime/passes/FramegraphTopology.d.ts.map +1 -0
- package/dist/production-runtime/passes/FramegraphTopology.js +59 -0
- package/dist/production-runtime/passes/FramegraphTopology.js.map +1 -0
- package/dist/production-runtime/passes/OpaquePass.d.ts +24 -1
- package/dist/production-runtime/passes/OpaquePass.d.ts.map +1 -1
- package/dist/production-runtime/passes/OpaquePass.js +41 -2
- package/dist/production-runtime/passes/OpaquePass.js.map +1 -1
- package/dist/production-runtime/passes/ShadowPass.d.ts +24 -1
- package/dist/production-runtime/passes/ShadowPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/ShadowPass.js +43 -2
- package/dist/production-runtime/passes/ShadowPass.js.map +1 -1
- package/dist/production-runtime/passes/SkyboxPass.d.ts +21 -1
- package/dist/production-runtime/passes/SkyboxPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/SkyboxPass.js +39 -2
- package/dist/production-runtime/passes/SkyboxPass.js.map +1 -1
- package/dist/production-runtime/passes/ToneMappingPass.d.ts +29 -1
- package/dist/production-runtime/passes/ToneMappingPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/ToneMappingPass.js +53 -2
- package/dist/production-runtime/passes/ToneMappingPass.js.map +1 -1
- package/dist/production-runtime/passes/TransparentPass.d.ts +24 -1
- package/dist/production-runtime/passes/TransparentPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/TransparentPass.js +42 -2
- package/dist/production-runtime/passes/TransparentPass.js.map +1 -1
- package/dist/shadows/CascadeHysteresis.d.ts +67 -0
- package/dist/shadows/CascadeHysteresis.d.ts.map +1 -0
- package/dist/shadows/CascadeHysteresis.js +104 -0
- package/dist/shadows/CascadeHysteresis.js.map +1 -0
- package/dist/shadows/ContactShadows.d.ts +52 -0
- package/dist/shadows/ContactShadows.d.ts.map +1 -1
- package/dist/shadows/ContactShadows.js +122 -0
- package/dist/shadows/ContactShadows.js.map +1 -1
- package/dist/shadows/SpotShadowMaps.d.ts +77 -0
- package/dist/shadows/SpotShadowMaps.d.ts.map +1 -0
- package/dist/shadows/SpotShadowMaps.js +106 -0
- package/dist/shadows/SpotShadowMaps.js.map +1 -0
- package/dist/webgpu/WebGPUPostProcess.d.ts +2 -0
- package/dist/webgpu/WebGPUPostProcess.d.ts.map +1 -1
- package/dist/webgpu/WebGPUPostProcess.js +1 -0
- package/dist/webgpu/WebGPUPostProcess.js.map +1 -1
- package/dist/webgpu/WebGPUPostShaders.d.ts +78 -0
- package/dist/webgpu/WebGPUPostShaders.d.ts.map +1 -0
- package/dist/webgpu/WebGPUPostShaders.js +262 -0
- package/dist/webgpu/WebGPUPostShaders.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DayNightSky.js","sourceRoot":"","sources":["../../../../packages/rendering/src/DayNightSky.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ExternalParityEnvironmentPreset } from "./ExternalParityRenderPreset.js";
|
|
2
|
+
export type EnvironmentPresetPackSlot = "indoor" | "outdoor" | "night";
|
|
3
|
+
export interface EnvironmentPresetPackEntry {
|
|
4
|
+
readonly slot: EnvironmentPresetPackSlot;
|
|
5
|
+
readonly basePreset: ExternalParityEnvironmentPreset;
|
|
6
|
+
/**
|
|
7
|
+
* Measured exposure gain applied to the generated HDR source so every
|
|
8
|
+
* slot's mean linear luma matches the pack target (outdoor daylight).
|
|
9
|
+
* Measured 2026-09-03 from 64x32 generated sources, not guessed.
|
|
10
|
+
*/
|
|
11
|
+
readonly exposureFactor: number;
|
|
12
|
+
readonly evidence: string;
|
|
13
|
+
}
|
|
14
|
+
export interface EnvironmentPresetPack {
|
|
15
|
+
/** Pack-wide mean-luma target: the measured outdoor daylight source mean. */
|
|
16
|
+
readonly targetMeanLuma: number;
|
|
17
|
+
readonly entries: readonly EnvironmentPresetPackEntry[];
|
|
18
|
+
/** Frozen-reference SSIM floor for exposure-normalized PMREM rows. */
|
|
19
|
+
readonly pmremRowSsimFloor: 0.975;
|
|
20
|
+
}
|
|
21
|
+
export declare const AURA_INDOOR_OUTDOOR_NIGHT_PRESET_PACK: EnvironmentPresetPack;
|
|
22
|
+
/**
|
|
23
|
+
* Applies a pack entry's measured exposure gain to generated HDR float
|
|
24
|
+
* data (pure linear gain: structure-preserving by construction, which is
|
|
25
|
+
* what lets the frozen-reference SSIM gate isolate pipeline regressions
|
|
26
|
+
* from exposure intent).
|
|
27
|
+
*/
|
|
28
|
+
export declare function applyPresetPackExposure(data: Float32Array, exposureFactor: number): Float32Array;
|
|
29
|
+
export declare function meanLinearLuma(data: Float32Array, pixelCount: number): number;
|
|
30
|
+
//# sourceMappingURL=EnvironmentPresetPack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnvironmentPresetPack.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/EnvironmentPresetPack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAEpF,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,+BAA+B,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACxD,sEAAsE;IACtE,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC;CACnC;AAED,eAAO,MAAM,qCAAqC,EAAE,qBAuBnD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,YAAY,EAClB,cAAc,EAAE,MAAM,GACrB,YAAY,CASd;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAO7E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export const AURA_INDOOR_OUTDOOR_NIGHT_PRESET_PACK = {
|
|
2
|
+
targetMeanLuma: 0.60698,
|
|
3
|
+
entries: [
|
|
4
|
+
{
|
|
5
|
+
slot: "indoor",
|
|
6
|
+
basePreset: "softbox",
|
|
7
|
+
exposureFactor: 0.866755,
|
|
8
|
+
evidence: "softbox interior source mean 0.70029 normalized to the daylight target 0.60698"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
slot: "outdoor",
|
|
12
|
+
basePreset: "daylight",
|
|
13
|
+
exposureFactor: 1,
|
|
14
|
+
evidence: "daylight source mean 0.60698 defines the pack target; identity gain"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
slot: "night",
|
|
18
|
+
basePreset: "evening",
|
|
19
|
+
exposureFactor: 2.114618,
|
|
20
|
+
evidence: "evening source mean 0.28704 normalized to the daylight target 0.60698"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
pmremRowSsimFloor: 0.975
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Applies a pack entry's measured exposure gain to generated HDR float
|
|
27
|
+
* data (pure linear gain: structure-preserving by construction, which is
|
|
28
|
+
* what lets the frozen-reference SSIM gate isolate pipeline regressions
|
|
29
|
+
* from exposure intent).
|
|
30
|
+
*/
|
|
31
|
+
export function applyPresetPackExposure(data, exposureFactor) {
|
|
32
|
+
if (!Number.isFinite(exposureFactor) || exposureFactor <= 0) {
|
|
33
|
+
throw new RangeError(`Preset pack exposure factor must be finite and positive, got ${exposureFactor}.`);
|
|
34
|
+
}
|
|
35
|
+
const out = new Float32Array(data.length);
|
|
36
|
+
for (let index = 0; index < data.length; index += 1) {
|
|
37
|
+
out[index] = data[index] * exposureFactor;
|
|
38
|
+
}
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
export function meanLinearLuma(data, pixelCount) {
|
|
42
|
+
let sum = 0;
|
|
43
|
+
for (let pixel = 0; pixel < pixelCount; pixel += 1) {
|
|
44
|
+
const base = pixel * 4;
|
|
45
|
+
sum += 0.2126 * data[base] + 0.7152 * data[base + 1] + 0.0722 * data[base + 2];
|
|
46
|
+
}
|
|
47
|
+
return sum / Math.max(1, pixelCount);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=EnvironmentPresetPack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnvironmentPresetPack.js","sourceRoot":"","sources":["../../../../packages/rendering/src/EnvironmentPresetPack.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,qCAAqC,GAA0B;IAC1E,cAAc,EAAE,OAAO;IACvB,OAAO,EAAE;QACP;YACE,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,SAAS;YACrB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,gFAAgF;SAC3F;QACD;YACE,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,UAAU;YACtB,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,qEAAqE;SAChF;QACD;YACE,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,SAAS;YACrB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,uEAAuE;SAClF;KACF;IACD,iBAAiB,EAAE,KAAK;CACzB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAkB,EAClB,cAAsB;IAEtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,UAAU,CAAC,gEAAgE,cAAc,GAAG,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAE,GAAG,cAAc,CAAC;IAC7C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAkB,EAAE,UAAkB;IACnE,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;QACvB,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAE,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,CAAC;IACpF,CAAC;IACD,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/ForwardPass.d.ts
CHANGED
|
@@ -3,9 +3,12 @@ import { type CollectedLight } from "./LightCollector.js";
|
|
|
3
3
|
import { Material } from "./Material.js";
|
|
4
4
|
import { MaterialInstance } from "./MaterialInstance.js";
|
|
5
5
|
import { type MorphTargetDelta } from "./MorphTarget.js";
|
|
6
|
+
import { type RenderShaderProgram, type UniformValue } from "./RenderDevice.js";
|
|
6
7
|
import { BaseRenderPass, type RenderPassContext } from "./RenderPass.js";
|
|
8
|
+
import { type SkinningCpuFallbackReason } from "./WebGPUSkinningLimits.js";
|
|
7
9
|
import { type ShaderLibrary } from "./ShaderLibraryCore.js";
|
|
8
10
|
import { type ShadowFilterKernel } from "./ShadowMap.js";
|
|
11
|
+
import type { ForwardSpotShadowMapOptions } from "./shadows/SpotShadowMaps.js";
|
|
9
12
|
import { TextureBinding } from "./TextureBinding.js";
|
|
10
13
|
export interface RenderItem {
|
|
11
14
|
readonly geometry: Geometry;
|
|
@@ -19,6 +22,12 @@ export interface RenderItem {
|
|
|
19
22
|
readonly skinning?: SkinningPaletteBinding;
|
|
20
23
|
readonly morphTargets?: readonly MorphTargetDelta[];
|
|
21
24
|
readonly morphWeights?: readonly number[];
|
|
25
|
+
/**
|
|
26
|
+
* Wrinkle-detail intensity resolved engine-side from live morph weights
|
|
27
|
+
* (`resolveWrinkleMapStrength`). Shaders that declare `u_wrinkleStrength` modulate
|
|
28
|
+
* procedural normal detail by it; absent (or zero) leaves rendering bit-identical.
|
|
29
|
+
*/
|
|
30
|
+
readonly wrinkleStrength?: number;
|
|
22
31
|
readonly instanceTransforms?: Float32Array | readonly number[];
|
|
23
32
|
readonly instanceColors?: Float32Array | readonly number[];
|
|
24
33
|
readonly instanceAttributes?: readonly RenderItemInstanceAttribute[];
|
|
@@ -57,7 +66,23 @@ export interface SkinningPaletteDiagnostics {
|
|
|
57
66
|
readonly uniformArraySubmissions: number;
|
|
58
67
|
readonly dataTextureSubmissions: number;
|
|
59
68
|
readonly eightInfluenceSubmissions: number;
|
|
69
|
+
readonly cpuFallbackCount: number;
|
|
60
70
|
readonly maxUniformJoints: number;
|
|
71
|
+
/**
|
|
72
|
+
* Per-mesh palette decision (bounded: the first 64 submissions; overflow counted in
|
|
73
|
+
* `decisionOverflow`). Each entry carries the CPU-fallback reason code so a claim about
|
|
74
|
+
* which path carried a rig rests on observed decisions, not inference.
|
|
75
|
+
*/
|
|
76
|
+
readonly decisions: readonly SkinningPaletteDecisionRecord[];
|
|
77
|
+
readonly decisionOverflow: number;
|
|
78
|
+
}
|
|
79
|
+
/** One observed joint-palette decision for a submitted skinned mesh. */
|
|
80
|
+
export interface SkinningPaletteDecisionRecord {
|
|
81
|
+
readonly label: string;
|
|
82
|
+
readonly jointCount: number;
|
|
83
|
+
readonly path: SkinningPalettePath | "cpu";
|
|
84
|
+
readonly reason: SkinningCpuFallbackReason;
|
|
85
|
+
readonly cpuFallback: boolean;
|
|
61
86
|
}
|
|
62
87
|
/** Joints addressable through the uniform-array palette. Re-exported for shaders. */
|
|
63
88
|
export declare const MAX_UNIFORM_SKINNING_JOINTS = 96;
|
|
@@ -115,6 +140,16 @@ export interface ForwardEnvironmentFogOptions {
|
|
|
115
140
|
readonly heightFalloff?: number;
|
|
116
141
|
readonly heightReference?: number;
|
|
117
142
|
readonly maxOpacity?: number;
|
|
143
|
+
/**
|
|
144
|
+
* A5 volumetric inscatter (muse3jsparity-PRD). 0/absent reproduces the
|
|
145
|
+
* legacy fog path exactly; the forward pass binds these only when the
|
|
146
|
+
* program declares them.
|
|
147
|
+
*/
|
|
148
|
+
readonly volumetricIntensity?: number;
|
|
149
|
+
/** World-space direction TOWARD the dominant volumetric light. */
|
|
150
|
+
readonly volumetricLightDirection?: readonly [number, number, number];
|
|
151
|
+
/** Linear RGB of the dominant volumetric light. */
|
|
152
|
+
readonly volumetricLightColor?: readonly [number, number, number];
|
|
118
153
|
}
|
|
119
154
|
export interface ForwardShadowMapOptions {
|
|
120
155
|
readonly texture: TextureBinding;
|
|
@@ -125,6 +160,12 @@ export interface ForwardShadowMapOptions {
|
|
|
125
160
|
readonly texelSize?: readonly [number, number];
|
|
126
161
|
readonly filterKernel?: ShadowFilterKernel;
|
|
127
162
|
readonly pointLight?: ForwardPointShadowMapOptions;
|
|
163
|
+
/**
|
|
164
|
+
* B1 spot shadow path (muse3jsparity-PRD): perspective spot shadow uniforms.
|
|
165
|
+
* Bound only when the program declares the `u_spotShadow*` uniforms, so
|
|
166
|
+
* existing programs render exactly as before.
|
|
167
|
+
*/
|
|
168
|
+
readonly spotLight?: ForwardSpotShadowMapOptions;
|
|
128
169
|
readonly cascades?: readonly ForwardShadowCascadeOptions[];
|
|
129
170
|
}
|
|
130
171
|
export interface ForwardShadowCascadeOptions {
|
|
@@ -158,5 +199,29 @@ export declare class ForwardPass extends BaseRenderPass {
|
|
|
158
199
|
private applyLightUniforms;
|
|
159
200
|
private getShader;
|
|
160
201
|
}
|
|
202
|
+
export declare class SkinningPaletteUploadManager {
|
|
203
|
+
private static readonly validatedGeometryJointCounts;
|
|
204
|
+
private static readonly maxRecordedDecisions;
|
|
205
|
+
private submissions;
|
|
206
|
+
private jointsUploaded;
|
|
207
|
+
private maxJointCount;
|
|
208
|
+
private uniformArraySubmissions;
|
|
209
|
+
private dataTextureSubmissions;
|
|
210
|
+
private eightInfluenceSubmissions;
|
|
211
|
+
private cpuFallbackCount;
|
|
212
|
+
private decisions;
|
|
213
|
+
private decisionOverflow;
|
|
214
|
+
beginFrame(): void;
|
|
215
|
+
/**
|
|
216
|
+
* Which palette paths this frame actually used. Published rather than inferred so a
|
|
217
|
+
* claim about data-texture or eight-influence skinning rests on observed submissions.
|
|
218
|
+
* Each submission also records its `decideSkinningPalettePath` decision (same inputs the
|
|
219
|
+
* upload path used) so the CPU-fallback reason code travels with the diagnostics.
|
|
220
|
+
*/
|
|
221
|
+
diagnostics(): SkinningPaletteDiagnostics;
|
|
222
|
+
bind(item: RenderItem, skinning: SkinningPaletteBinding, material: Material, shader: RenderShaderProgram, uniforms: Map<string, UniformValue>): void;
|
|
223
|
+
private recordDecision;
|
|
224
|
+
}
|
|
161
225
|
export declare function selectForwardShadowMap(shadowMap: ForwardShadowMapOptions | undefined, item: RenderItem, cameraViewMatrix?: Float32Array | readonly number[], cameraPosition?: readonly [number, number, number]): ForwardShadowMapOptions | undefined;
|
|
226
|
+
export declare function applyForwardSpotShadowMapUniforms(spotShadowMap: ForwardSpotShadowMapOptions | undefined, item: RenderItem, shader: RenderShaderProgram, uniforms: Map<string, UniformValue>): void;
|
|
162
227
|
//# sourceMappingURL=ForwardPass.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForwardPass.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ForwardPass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ForwardPass.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ForwardPass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAA2G,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEtL,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,EAA6B,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnG,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IACxD,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IACzD,QAAQ,CAAC,yBAAyB,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IAC/D,QAAQ,CAAC,cAAc,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IAC3D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACrE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/D,sFAAsF;IACtF,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,cAAc,CAAC;AAEnE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC7D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,wEAAwE;AACxE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,GAAG,KAAK,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,KAAqC,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAIxC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,GAAG,KAAK,CAAC;IAC/D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IAC7D,QAAQ,CAAC,0BAA0B,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IACvE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;CACxC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,uCAAuC,CAAC;IACjE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,cAAc,CAAC;IAChD,QAAQ,CAAC,yBAAyB,CAAC,EAAE,cAAc,CAAC;IACpD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,+BAA+B,CAAC,EAAE,MAAM,CAAC;IAClD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC7D,QAAQ,CAAC,yBAAyB,CAAC,EAAE,cAAc,CAAC;CACrD;AAED,MAAM,WAAW,uCAAuC;IACtD,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,aAAa,GAAG,qBAAqB,CAAC;AAEzF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,kEAAkE;IAClE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtE,mDAAmD;IACnD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,4BAA4B,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,2BAA2B,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;CAC5D;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,CAAC;CAC5C;AAkBD,qBAAa,WAAY,SAAQ,cAAc;IAOjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAA0E;IAC9G,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAsC;IAC7E,OAAO,CAAC,iBAAiB,CAAkD;gBAE9C,OAAO,EAAE,kBAAkB;IAKxD,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAoBzC,OAAO,CAAC,QAAQ;IAoFhB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,SAAS;CAYlB;AAED,qBAAa,4BAA4B;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAwC;IAC5F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAM;IAClD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,uBAAuB,CAAK;IACpC,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,yBAAyB,CAAK;IACtC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,gBAAgB,CAAK;IAE7B,UAAU,IAAI,IAAI;IAYlB;;;;;OAKG;IACH,WAAW,IAAI,0BAA0B;IAezC,IAAI,CACF,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAClC,IAAI;IAoBP,OAAO,CAAC,cAAc;CAsBvB;AAsWD,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,uBAAuB,GAAG,SAAS,EAC9C,IAAI,EAAE,UAAU,EAChB,gBAAgB,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,EACnD,cAAc,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACjD,uBAAuB,GAAG,SAAS,CAgBrC;AA+OD,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,2BAA2B,GAAG,SAAS,EACtD,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAClC,IAAI,CAsHN"}
|
package/dist/ForwardPass.js
CHANGED
|
@@ -9,6 +9,7 @@ import { RenderDeviceError } from "./RenderDevice.js";
|
|
|
9
9
|
import { RenderPipeline } from "./RenderPipeline.js";
|
|
10
10
|
import { BaseRenderPass } from "./RenderPass.js";
|
|
11
11
|
import { MAX_UNIFORM_SKINNING_JOINTS as SHADER_MAX_UNIFORM_SKINNING_JOINTS } from "./ShaderChunks.js";
|
|
12
|
+
import { decideSkinningPalettePath } from "./WebGPUSkinningLimits.js";
|
|
12
13
|
import { ShaderModule } from "./ShaderModule.js";
|
|
13
14
|
import { createLeanCoreShaderLibrary } from "./ShaderLibraryCore.js";
|
|
14
15
|
import { createShadowFilterKernel } from "./ShadowMap.js";
|
|
@@ -98,6 +99,7 @@ export class ForwardPass extends BaseRenderPass {
|
|
|
98
99
|
applyOutputColorSpaceUniform(this.options.outputColorSpace ?? "srgb", item, shader, uniforms);
|
|
99
100
|
applyCameraUniforms(this.options.cameraPosition, item, shader, uniforms);
|
|
100
101
|
applyAlphaCutoffUniform(item, shader, uniforms);
|
|
102
|
+
applyWrinkleUniform(item, shader, uniforms);
|
|
101
103
|
applyTransformUniforms(item, shader, uniforms);
|
|
102
104
|
if (item.skinning) {
|
|
103
105
|
this.skinningPaletteUploads.bind(item, item.skinning, baseMaterial, shader, uniforms);
|
|
@@ -173,14 +175,18 @@ export class ForwardPass extends BaseRenderPass {
|
|
|
173
175
|
return module.compile(device);
|
|
174
176
|
}
|
|
175
177
|
}
|
|
176
|
-
class SkinningPaletteUploadManager {
|
|
178
|
+
export class SkinningPaletteUploadManager {
|
|
177
179
|
static validatedGeometryJointCounts = new WeakMap();
|
|
180
|
+
static maxRecordedDecisions = 64;
|
|
178
181
|
submissions = 0;
|
|
179
182
|
jointsUploaded = 0;
|
|
180
183
|
maxJointCount = 0;
|
|
181
184
|
uniformArraySubmissions = 0;
|
|
182
185
|
dataTextureSubmissions = 0;
|
|
183
186
|
eightInfluenceSubmissions = 0;
|
|
187
|
+
cpuFallbackCount = 0;
|
|
188
|
+
decisions = [];
|
|
189
|
+
decisionOverflow = 0;
|
|
184
190
|
beginFrame() {
|
|
185
191
|
this.submissions = 0;
|
|
186
192
|
this.jointsUploaded = 0;
|
|
@@ -188,10 +194,15 @@ class SkinningPaletteUploadManager {
|
|
|
188
194
|
this.uniformArraySubmissions = 0;
|
|
189
195
|
this.dataTextureSubmissions = 0;
|
|
190
196
|
this.eightInfluenceSubmissions = 0;
|
|
197
|
+
this.cpuFallbackCount = 0;
|
|
198
|
+
this.decisions = [];
|
|
199
|
+
this.decisionOverflow = 0;
|
|
191
200
|
}
|
|
192
201
|
/**
|
|
193
202
|
* Which palette paths this frame actually used. Published rather than inferred so a
|
|
194
203
|
* claim about data-texture or eight-influence skinning rests on observed submissions.
|
|
204
|
+
* Each submission also records its `decideSkinningPalettePath` decision (same inputs the
|
|
205
|
+
* upload path used) so the CPU-fallback reason code travels with the diagnostics.
|
|
195
206
|
*/
|
|
196
207
|
diagnostics() {
|
|
197
208
|
return {
|
|
@@ -201,10 +212,15 @@ class SkinningPaletteUploadManager {
|
|
|
201
212
|
uniformArraySubmissions: this.uniformArraySubmissions,
|
|
202
213
|
dataTextureSubmissions: this.dataTextureSubmissions,
|
|
203
214
|
eightInfluenceSubmissions: this.eightInfluenceSubmissions,
|
|
204
|
-
|
|
215
|
+
cpuFallbackCount: this.cpuFallbackCount,
|
|
216
|
+
maxUniformJoints: MAX_UNIFORM_SKINNING_JOINTS,
|
|
217
|
+
decisions: [...this.decisions],
|
|
218
|
+
decisionOverflow: this.decisionOverflow
|
|
205
219
|
};
|
|
206
220
|
}
|
|
207
221
|
bind(item, skinning, material, shader, uniforms) {
|
|
222
|
+
// Recorded before the upload so a contract throw still leaves its reason code behind.
|
|
223
|
+
this.recordDecision(item, skinning, shader);
|
|
208
224
|
const path = applySkinningUniforms(skinning, material, shader, uniforms);
|
|
209
225
|
if (path === "data-texture")
|
|
210
226
|
this.dataTextureSubmissions += 1;
|
|
@@ -224,6 +240,30 @@ class SkinningPaletteUploadManager {
|
|
|
224
240
|
this.jointsUploaded += skinning.jointCount;
|
|
225
241
|
this.maxJointCount = Math.max(this.maxJointCount, skinning.jointCount);
|
|
226
242
|
}
|
|
243
|
+
recordDecision(item, skinning, shader) {
|
|
244
|
+
const reflection = shader.reflection.uniforms;
|
|
245
|
+
const decision = decideSkinningPalettePath({
|
|
246
|
+
jointCount: skinning.jointCount,
|
|
247
|
+
maxUniformJoints: MAX_UNIFORM_SKINNING_JOINTS,
|
|
248
|
+
maxDataTextureJoints: MAX_SKINNING_JOINTS,
|
|
249
|
+
shaderHasSkinningUniforms: reflection.has("u_jointMatrices") && reflection.has("u_jointCount"),
|
|
250
|
+
shaderHasDataTexturePalette: reflection.has("u_jointPaletteTexture") && reflection.has("u_jointPaletteMode")
|
|
251
|
+
});
|
|
252
|
+
if (decision.cpuFallback)
|
|
253
|
+
this.cpuFallbackCount += 1;
|
|
254
|
+
if (this.decisions.length < SkinningPaletteUploadManager.maxRecordedDecisions) {
|
|
255
|
+
this.decisions.push({
|
|
256
|
+
label: item.label ?? "skinned-item",
|
|
257
|
+
jointCount: skinning.jointCount,
|
|
258
|
+
path: decision.path,
|
|
259
|
+
reason: decision.reason,
|
|
260
|
+
cpuFallback: decision.cpuFallback
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
this.decisionOverflow += 1;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
227
267
|
}
|
|
228
268
|
function getForwardPassShaderCache(device, library) {
|
|
229
269
|
let libraryCaches = ForwardPass["shaderCaches"].get(device);
|
|
@@ -281,6 +321,9 @@ function applyEnvironmentFogUniforms(fog, item, shader, uniforms) {
|
|
|
281
321
|
uniforms.set("u_environmentFogHeightFalloff", 0);
|
|
282
322
|
uniforms.set("u_environmentFogHeightReference", 0);
|
|
283
323
|
uniforms.set("u_environmentFogMaxOpacity", 1);
|
|
324
|
+
if (shader.reflection.uniforms.has("u_volumetricIntensity")) {
|
|
325
|
+
uniforms.set("u_volumetricIntensity", 0);
|
|
326
|
+
}
|
|
284
327
|
return;
|
|
285
328
|
}
|
|
286
329
|
const color = Array.from(fog.color);
|
|
@@ -333,6 +376,26 @@ function applyEnvironmentFogUniforms(fog, item, shader, uniforms) {
|
|
|
333
376
|
uniforms.set("u_environmentFogHeightFalloff", heightFalloff);
|
|
334
377
|
uniforms.set("u_environmentFogHeightReference", heightReference);
|
|
335
378
|
uniforms.set("u_environmentFogMaxOpacity", maxOpacity);
|
|
379
|
+
// A5: bind the volumetric inscatter terms only when the program declares
|
|
380
|
+
// them; legacy programs keep the exact legacy fog response.
|
|
381
|
+
const volumetricIntensity = fog.volumetricIntensity ?? 0;
|
|
382
|
+
if (!Number.isFinite(volumetricIntensity) || volumetricIntensity < 0) {
|
|
383
|
+
throw new RenderDeviceError("Forward environment fog volumetricIntensity must be finite and non-negative", "FORWARD_ENVIRONMENT_FOG_CONTRACT", {
|
|
384
|
+
label: item.label,
|
|
385
|
+
volumetricIntensity
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
const volumetricLightDirection = fog.volumetricLightDirection ?? [0, 1, 0];
|
|
389
|
+
const volumetricLightColor = fog.volumetricLightColor ?? [1, 1, 1];
|
|
390
|
+
if (shader.reflection.uniforms.has("u_volumetricIntensity")) {
|
|
391
|
+
uniforms.set("u_volumetricIntensity", volumetricIntensity);
|
|
392
|
+
}
|
|
393
|
+
if (shader.reflection.uniforms.has("u_volumetricLightDirection")) {
|
|
394
|
+
uniforms.set("u_volumetricLightDirection", Array.from(volumetricLightDirection));
|
|
395
|
+
}
|
|
396
|
+
if (shader.reflection.uniforms.has("u_volumetricLightColor")) {
|
|
397
|
+
uniforms.set("u_volumetricLightColor", Array.from(volumetricLightColor));
|
|
398
|
+
}
|
|
336
399
|
}
|
|
337
400
|
function fogModeUniform(mode, label) {
|
|
338
401
|
switch (mode) {
|
|
@@ -572,6 +635,7 @@ function applyForwardShadowMapUniforms(shadowMap, item, shader, uniforms) {
|
|
|
572
635
|
return;
|
|
573
636
|
}
|
|
574
637
|
applyForwardPointShadowMapUniforms(shadowMap?.pointLight, item, shader, uniforms);
|
|
638
|
+
applyForwardSpotShadowMapUniforms(shadowMap?.spotLight, item, shader, uniforms);
|
|
575
639
|
if (!shadowMap) {
|
|
576
640
|
uniforms.set("u_shadowMapTexture", new TextureBinding({ name: "u_shadowMapTexture", required: false }));
|
|
577
641
|
uniforms.set("u_shadowMapEnabled", 0);
|
|
@@ -761,6 +825,125 @@ function applyForwardPointShadowMapUniforms(pointShadowMap, item, shader, unifor
|
|
|
761
825
|
uniforms.set("u_pointShadowPcfSampleCount", filterKernel.samples.length);
|
|
762
826
|
uniforms.set("u_pointShadowPcfSamples", packForwardShadowPcfSamples(filterKernel, item.label));
|
|
763
827
|
}
|
|
828
|
+
export function applyForwardSpotShadowMapUniforms(spotShadowMap, item, shader, uniforms) {
|
|
829
|
+
const requiredUniforms = [
|
|
830
|
+
"u_spotShadowMapTexture",
|
|
831
|
+
"u_spotShadowMapEnabled",
|
|
832
|
+
"u_spotShadowLightPosition",
|
|
833
|
+
"u_spotShadowLightDirection",
|
|
834
|
+
"u_spotShadowMatrix",
|
|
835
|
+
"u_spotShadowCone",
|
|
836
|
+
"u_spotShadowRange",
|
|
837
|
+
"u_spotShadowStrength",
|
|
838
|
+
"u_spotShadowBias",
|
|
839
|
+
"u_spotShadowSlopeBias",
|
|
840
|
+
"u_spotShadowTexelSize",
|
|
841
|
+
"u_spotShadowPcfSampleCount",
|
|
842
|
+
"u_spotShadowPcfSamples"
|
|
843
|
+
];
|
|
844
|
+
if (!requiredUniforms.every((uniform) => shader.reflection.uniforms.has(uniform))) {
|
|
845
|
+
return;
|
|
846
|
+
}
|
|
847
|
+
if (!spotShadowMap) {
|
|
848
|
+
uniforms.set("u_spotShadowMapTexture", new TextureBinding({ name: "u_spotShadowMapTexture", required: false }));
|
|
849
|
+
uniforms.set("u_spotShadowMapEnabled", 0);
|
|
850
|
+
uniforms.set("u_spotShadowLightPosition", [0, 0, 0]);
|
|
851
|
+
uniforms.set("u_spotShadowLightDirection", [0, -1, 0]);
|
|
852
|
+
uniforms.set("u_spotShadowMatrix", new Float32Array(identityMatrix()));
|
|
853
|
+
uniforms.set("u_spotShadowCone", [Math.PI / 4, 0]);
|
|
854
|
+
uniforms.set("u_spotShadowRange", 1);
|
|
855
|
+
uniforms.set("u_spotShadowStrength", 0);
|
|
856
|
+
uniforms.set("u_spotShadowBias", 0);
|
|
857
|
+
uniforms.set("u_spotShadowSlopeBias", 0);
|
|
858
|
+
uniforms.set("u_spotShadowTexelSize", [1, 1]);
|
|
859
|
+
uniforms.set("u_spotShadowPcfSampleCount", 1);
|
|
860
|
+
uniforms.set("u_spotShadowPcfSamples", new Float32Array(MAX_FORWARD_SHADOW_PCF_SAMPLES * 4));
|
|
861
|
+
return;
|
|
862
|
+
}
|
|
863
|
+
const validation = spotShadowMap.texture.validate();
|
|
864
|
+
if (!validation.ok) {
|
|
865
|
+
throw new RenderDeviceError("Forward spot-shadow texture binding validation failed", "FORWARD_SPOT_SHADOW_MAP_CONTRACT", {
|
|
866
|
+
label: item.label,
|
|
867
|
+
diagnostics: validation.diagnostics
|
|
868
|
+
});
|
|
869
|
+
}
|
|
870
|
+
if (spotShadowMap.lightPosition.length !== 3 || !isFiniteArrayLike(spotShadowMap.lightPosition)) {
|
|
871
|
+
throw new RenderDeviceError("Forward spot-shadow lightPosition must contain three finite values", "FORWARD_SPOT_SHADOW_MAP_CONTRACT", {
|
|
872
|
+
label: item.label,
|
|
873
|
+
lightPosition: spotShadowMap.lightPosition
|
|
874
|
+
});
|
|
875
|
+
}
|
|
876
|
+
if (spotShadowMap.lightDirection.length !== 3 || !isFiniteArrayLike(spotShadowMap.lightDirection)) {
|
|
877
|
+
throw new RenderDeviceError("Forward spot-shadow lightDirection must contain three finite values", "FORWARD_SPOT_SHADOW_MAP_CONTRACT", {
|
|
878
|
+
label: item.label,
|
|
879
|
+
lightDirection: spotShadowMap.lightDirection
|
|
880
|
+
});
|
|
881
|
+
}
|
|
882
|
+
if (!Number.isFinite(spotShadowMap.angle) || spotShadowMap.angle <= 0 || spotShadowMap.angle >= Math.PI / 2) {
|
|
883
|
+
throw new RenderDeviceError("Forward spot-shadow angle must be within (0, PI / 2)", "FORWARD_SPOT_SHADOW_MAP_CONTRACT", {
|
|
884
|
+
label: item.label,
|
|
885
|
+
angle: spotShadowMap.angle
|
|
886
|
+
});
|
|
887
|
+
}
|
|
888
|
+
if (spotShadowMap.penumbra !== undefined && (!Number.isFinite(spotShadowMap.penumbra) || spotShadowMap.penumbra < 0 || spotShadowMap.penumbra > 1)) {
|
|
889
|
+
throw new RenderDeviceError("Forward spot-shadow penumbra must be in [0, 1]", "FORWARD_SPOT_SHADOW_MAP_CONTRACT", {
|
|
890
|
+
label: item.label,
|
|
891
|
+
penumbra: spotShadowMap.penumbra
|
|
892
|
+
});
|
|
893
|
+
}
|
|
894
|
+
if (!Number.isFinite(spotShadowMap.range) || spotShadowMap.range <= 0) {
|
|
895
|
+
throw new RenderDeviceError("Forward spot-shadow range must be finite and positive", "FORWARD_SPOT_SHADOW_MAP_CONTRACT", {
|
|
896
|
+
label: item.label,
|
|
897
|
+
range: spotShadowMap.range
|
|
898
|
+
});
|
|
899
|
+
}
|
|
900
|
+
const shadowMatrix = toFloat32Array(spotShadowMap.shadowMatrix, 16, "spotShadowMap.shadowMatrix", item.label);
|
|
901
|
+
const strength = spotShadowMap.strength ?? 0.65;
|
|
902
|
+
const bias = spotShadowMap.bias ?? 0.001;
|
|
903
|
+
const slopeBias = spotShadowMap.slopeBias ?? 1;
|
|
904
|
+
const texelSize = spotShadowMap.texelSize ?? [
|
|
905
|
+
1 / Math.max(1, spotShadowMap.texture.texture?.width ?? 1),
|
|
906
|
+
1 / Math.max(1, spotShadowMap.texture.texture?.height ?? 1)
|
|
907
|
+
];
|
|
908
|
+
if (!Number.isFinite(strength) || strength < 0 || strength > 1) {
|
|
909
|
+
throw new RenderDeviceError("Forward spot-shadow strength must be finite in [0, 1]", "FORWARD_SPOT_SHADOW_MAP_CONTRACT", {
|
|
910
|
+
label: item.label,
|
|
911
|
+
strength
|
|
912
|
+
});
|
|
913
|
+
}
|
|
914
|
+
if (!Number.isFinite(bias) || bias < 0) {
|
|
915
|
+
throw new RenderDeviceError("Forward spot-shadow bias must be finite and non-negative", "FORWARD_SPOT_SHADOW_MAP_CONTRACT", {
|
|
916
|
+
label: item.label,
|
|
917
|
+
bias
|
|
918
|
+
});
|
|
919
|
+
}
|
|
920
|
+
if (!Number.isFinite(slopeBias) || slopeBias < 0) {
|
|
921
|
+
throw new RenderDeviceError("Forward spot-shadow slopeBias must be finite and non-negative", "FORWARD_SPOT_SHADOW_MAP_CONTRACT", {
|
|
922
|
+
label: item.label,
|
|
923
|
+
slopeBias
|
|
924
|
+
});
|
|
925
|
+
}
|
|
926
|
+
if (texelSize.length !== 2 || !texelSize.every((value) => Number.isFinite(value) && value > 0)) {
|
|
927
|
+
throw new RenderDeviceError("Forward spot-shadow texelSize must contain two finite positive values", "FORWARD_SPOT_SHADOW_MAP_CONTRACT", {
|
|
928
|
+
label: item.label,
|
|
929
|
+
texelSize: Array.from(texelSize)
|
|
930
|
+
});
|
|
931
|
+
}
|
|
932
|
+
const filterKernel = spotShadowMap.filterKernel ?? DEFAULT_FORWARD_SHADOW_FILTER_KERNEL;
|
|
933
|
+
uniforms.set("u_spotShadowMapTexture", spotShadowMap.texture);
|
|
934
|
+
uniforms.set("u_spotShadowMapEnabled", 1);
|
|
935
|
+
uniforms.set("u_spotShadowLightPosition", spotShadowMap.lightPosition);
|
|
936
|
+
uniforms.set("u_spotShadowLightDirection", spotShadowMap.lightDirection);
|
|
937
|
+
uniforms.set("u_spotShadowMatrix", shadowMatrix);
|
|
938
|
+
uniforms.set("u_spotShadowCone", [spotShadowMap.angle, spotShadowMap.penumbra ?? 0]);
|
|
939
|
+
uniforms.set("u_spotShadowRange", spotShadowMap.range);
|
|
940
|
+
uniforms.set("u_spotShadowStrength", strength);
|
|
941
|
+
uniforms.set("u_spotShadowBias", bias);
|
|
942
|
+
uniforms.set("u_spotShadowSlopeBias", slopeBias);
|
|
943
|
+
uniforms.set("u_spotShadowTexelSize", texelSize);
|
|
944
|
+
uniforms.set("u_spotShadowPcfSampleCount", filterKernel.samples.length);
|
|
945
|
+
uniforms.set("u_spotShadowPcfSamples", packForwardShadowPcfSamples(filterKernel, item.label));
|
|
946
|
+
}
|
|
764
947
|
function toFloat32Array(values, expectedLength, name, label) {
|
|
765
948
|
const source = values instanceof Float32Array ? values : new Float32Array(values);
|
|
766
949
|
if (source.length !== expectedLength || !isFiniteArrayLike(source)) {
|
|
@@ -1059,6 +1242,17 @@ function applyAlphaCutoffUniform(item, shader, uniforms) {
|
|
|
1059
1242
|
return;
|
|
1060
1243
|
uniforms.set("u_alphaCutoff", 0);
|
|
1061
1244
|
}
|
|
1245
|
+
/**
|
|
1246
|
+
* Wrinkle-detail intensity (E1 face-rig demo): mirrors the morph-uniform pattern — only
|
|
1247
|
+
* shaders declaring `u_wrinkleStrength` are touched, and an absent item value uploads 0,
|
|
1248
|
+
* which every such shader treats as "today's rendering exactly".
|
|
1249
|
+
*/
|
|
1250
|
+
function applyWrinkleUniform(item, shader, uniforms) {
|
|
1251
|
+
if (!shader.reflection.uniforms.has("u_wrinkleStrength") || uniforms.has("u_wrinkleStrength"))
|
|
1252
|
+
return;
|
|
1253
|
+
const strength = item.wrinkleStrength ?? 0;
|
|
1254
|
+
uniforms.set("u_wrinkleStrength", Number.isFinite(strength) ? Math.max(0, strength) : 0);
|
|
1255
|
+
}
|
|
1062
1256
|
function applyTransformUniforms(item, shader, uniforms) {
|
|
1063
1257
|
const modelMatrix = shader.reflection.uniforms.has("u_modelMatrix") || shader.reflection.uniforms.has("u_normalMatrix")
|
|
1064
1258
|
? toMat4Uniform(item.modelMatrix ?? identityMatrix(), "modelMatrix", item.label)
|