@aura3d/rendering 2.0.4 → 3.0.1
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/CascadedShadowMaps.d.ts.map +1 -1
- package/dist/CascadedShadowMaps.js +3 -1
- package/dist/CascadedShadowMaps.js.map +1 -1
- 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/ExtensionScalarAtlas.d.ts +18 -0
- package/dist/ExtensionScalarAtlas.d.ts.map +1 -0
- package/dist/ExtensionScalarAtlas.js +107 -0
- package/dist/ExtensionScalarAtlas.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/LeanWebGL2Device.d.ts +265 -0
- package/dist/LeanWebGL2Device.d.ts.map +1 -0
- package/dist/LeanWebGL2Device.js +4001 -0
- package/dist/LeanWebGL2Device.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/MaterialBinding.js +1 -1
- package/dist/MaterialBinding.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 +32 -0
- package/dist/PostProcessPass.d.ts.map +1 -1
- package/dist/PostProcessPass.js +79 -36
- package/dist/PostProcessPass.js.map +1 -1
- package/dist/ProjectionMath.d.ts +3 -0
- package/dist/ProjectionMath.d.ts.map +1 -0
- package/dist/ProjectionMath.js +26 -0
- package/dist/ProjectionMath.js.map +1 -0
- package/dist/ReflectionSurfaces.d.ts +17 -0
- package/dist/ReflectionSurfaces.d.ts.map +1 -1
- package/dist/ReflectionSurfaces.js +103 -1
- package/dist/ReflectionSurfaces.js.map +1 -1
- package/dist/RenderDevice.d.ts +92 -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.d.ts +9 -0
- package/dist/Renderer.d.ts.map +1 -1
- package/dist/Renderer.js +97 -9
- package/dist/Renderer.js.map +1 -1
- package/dist/RendererPostprocessPlan.d.ts +64 -3
- package/dist/RendererPostprocessPlan.d.ts.map +1 -1
- package/dist/RendererPostprocessPlan.js +116 -12
- 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/ScreenSpaceReflectionPass.d.ts +43 -0
- package/dist/ScreenSpaceReflectionPass.d.ts.map +1 -0
- package/dist/ScreenSpaceReflectionPass.js +58 -0
- package/dist/ScreenSpaceReflectionPass.js.map +1 -0
- 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 +601 -186
- package/dist/ShaderLibrary.js.map +1 -1
- package/dist/ShaderLibraryCore.d.ts +3 -0
- package/dist/ShaderLibraryCore.d.ts.map +1 -1
- package/dist/ShaderLibraryCore.js +73 -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/TemporalHistory.d.ts +37 -0
- package/dist/TemporalHistory.d.ts.map +1 -0
- package/dist/TemporalHistory.js +135 -0
- package/dist/TemporalHistory.js.map +1 -0
- package/dist/TemporalMath.d.ts +3 -0
- package/dist/TemporalMath.d.ts.map +1 -0
- package/dist/TemporalMath.js +9 -0
- package/dist/TemporalMath.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 +4 -0
- package/dist/TexturedPBRMaterial.d.ts.map +1 -1
- package/dist/TexturedPBRMaterial.js +88 -5
- 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 +73 -0
- package/dist/WebGL2Device.d.ts.map +1 -1
- package/dist/WebGL2Device.js +836 -79
- package/dist/WebGL2Device.js.map +1 -1
- package/dist/WebGPUDevice.d.ts +62 -1
- package/dist/WebGPUDevice.d.ts.map +1 -1
- package/dist/WebGPUDevice.js +844 -51
- package/dist/WebGPUDevice.js.map +1 -1
- package/dist/WebGPUExtensionAtlas.d.ts +6 -0
- package/dist/WebGPUExtensionAtlas.d.ts.map +1 -0
- package/dist/WebGPUExtensionAtlas.js +225 -0
- package/dist/WebGPUExtensionAtlas.js.map +1 -0
- 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 +188 -0
- package/dist/effects/GPUParticleBackend.d.ts.map +1 -1
- package/dist/effects/GPUParticleBackend.js +710 -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/ResidentGPUParticleRenderer.d.ts +158 -0
- package/dist/effects/ResidentGPUParticleRenderer.d.ts.map +1 -0
- package/dist/effects/ResidentGPUParticleRenderer.js +576 -0
- package/dist/effects/ResidentGPUParticleRenderer.js.map +1 -0
- 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/extension-scalar-atlas.d.ts +3 -0
- package/dist/extension-scalar-atlas.d.ts.map +1 -0
- package/dist/extension-scalar-atlas.js +2 -0
- package/dist/extension-scalar-atlas.js.map +1 -0
- package/dist/index.d.ts +58 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -10
- package/dist/index.js.map +1 -1
- package/dist/lean/LeanProductionRenderer.d.ts.map +1 -1
- package/dist/lean/LeanProductionRenderer.js +2 -2
- package/dist/lean/LeanProductionRenderer.js.map +1 -1
- package/dist/lean-core-runtime.d.ts +13 -0
- package/dist/lean-core-runtime.d.ts.map +1 -0
- package/dist/lean-core-runtime.js +10 -0
- package/dist/lean-core-runtime.js.map +1 -0
- package/dist/materials/MaterialExtensions.js +3 -3
- package/dist/materials/MaterialExtensions.js.map +1 -1
- package/dist/postprocess/NativeBloomPyramid.d.ts +44 -0
- package/dist/postprocess/NativeBloomPyramid.d.ts.map +1 -0
- package/dist/postprocess/NativeBloomPyramid.js +84 -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/ProductionRendererTypes.d.ts +1 -0
- package/dist/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
- package/dist/production-runtime/ProductionRendererTypes.js.map +1 -1
- package/dist/production-runtime/ProductionRuntimeRenderer.d.ts +3 -0
- package/dist/production-runtime/ProductionRuntimeRenderer.d.ts.map +1 -1
- package/dist/production-runtime/ProductionRuntimeRenderer.js +8 -1
- package/dist/production-runtime/ProductionRuntimeRenderer.js.map +1 -1
- package/dist/production-runtime/ProductionWebGL2Renderer.d.ts +4 -0
- package/dist/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
- package/dist/production-runtime/ProductionWebGL2Renderer.js +15 -0
- package/dist/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
- package/dist/production-runtime/ProductionWebGPURenderer.d.ts +58 -0
- package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
- package/dist/production-runtime/ProductionWebGPURenderer.js +127 -0
- package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
- package/dist/production-runtime/framegraph/FrameGraph.d.ts +4 -2
- package/dist/production-runtime/framegraph/FrameGraph.d.ts.map +1 -1
- package/dist/production-runtime/framegraph/FrameGraph.js +62 -4
- package/dist/production-runtime/framegraph/FrameGraph.js.map +1 -1
- package/dist/production-runtime/framegraph/NativeFrameGraphBindings.d.ts +32 -0
- package/dist/production-runtime/framegraph/NativeFrameGraphBindings.d.ts.map +1 -0
- package/dist/production-runtime/framegraph/NativeFrameGraphBindings.js +111 -0
- package/dist/production-runtime/framegraph/NativeFrameGraphBindings.js.map +1 -0
- package/dist/production-runtime/framegraph/RenderPass.d.ts +23 -0
- package/dist/production-runtime/framegraph/RenderPass.d.ts.map +1 -1
- package/dist/production-runtime/framegraph/RenderPass.js +87 -1
- package/dist/production-runtime/framegraph/RenderPass.js.map +1 -1
- package/dist/production-runtime/index.d.ts +7 -4
- package/dist/production-runtime/index.d.ts.map +1 -1
- package/dist/production-runtime/index.js +4 -2
- package/dist/production-runtime/index.js.map +1 -1
- package/dist/production-runtime/passes/DepthPrepass.d.ts +18 -1
- package/dist/production-runtime/passes/DepthPrepass.d.ts.map +1 -1
- package/dist/production-runtime/passes/DepthPrepass.js +41 -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 +19 -1
- package/dist/production-runtime/passes/OpaquePass.d.ts.map +1 -1
- package/dist/production-runtime/passes/OpaquePass.js +43 -2
- package/dist/production-runtime/passes/OpaquePass.js.map +1 -1
- package/dist/production-runtime/passes/ShadowPass.d.ts +19 -1
- package/dist/production-runtime/passes/ShadowPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/ShadowPass.js +45 -2
- package/dist/production-runtime/passes/ShadowPass.js.map +1 -1
- package/dist/production-runtime/passes/SkyboxPass.d.ts +17 -1
- package/dist/production-runtime/passes/SkyboxPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/SkyboxPass.js +41 -2
- package/dist/production-runtime/passes/SkyboxPass.js.map +1 -1
- package/dist/production-runtime/passes/ToneMappingPass.d.ts +26 -1
- package/dist/production-runtime/passes/ToneMappingPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/ToneMappingPass.js +62 -2
- package/dist/production-runtime/passes/ToneMappingPass.js.map +1 -1
- package/dist/production-runtime/passes/TransparentPass.d.ts +19 -1
- package/dist/production-runtime/passes/TransparentPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/TransparentPass.js +47 -2
- package/dist/production-runtime/passes/TransparentPass.js.map +1 -1
- package/dist/reflection-surfaces.d.ts +5 -0
- package/dist/reflection-surfaces.d.ts.map +1 -0
- package/dist/reflection-surfaces.js +3 -0
- package/dist/reflection-surfaces.js.map +1 -0
- 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 +77 -0
- package/dist/webgpu/WebGPUPostShaders.d.ts.map +1 -0
- package/dist/webgpu/WebGPUPostShaders.js +261 -0
- package/dist/webgpu/WebGPUPostShaders.js.map +1 -0
- package/dist/webgpu/WebGPUTemporal.d.ts +17 -0
- package/dist/webgpu/WebGPUTemporal.d.ts.map +1 -0
- package/dist/webgpu/WebGPUTemporal.js +64 -0
- package/dist/webgpu/WebGPUTemporal.js.map +1 -0
- package/dist/webgpu.d.ts +6 -0
- package/dist/webgpu.d.ts.map +1 -1
- package/dist/webgpu.js +4 -0
- package/dist/webgpu.js.map +1 -1
- package/package.json +15 -3
package/dist/Sampler.js
CHANGED
|
@@ -16,4 +16,51 @@ export class Sampler {
|
|
|
16
16
|
this.maxAnisotropy = maxAnisotropy;
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
+
/** Device-quantized sampler anisotropy steps (muse3jsparity-PRD C3). */
|
|
20
|
+
export const SAMPLER_ANISOTROPY_STEPS = [1, 2, 4, 8, 16];
|
|
21
|
+
/**
|
|
22
|
+
* C3 floor: root material builders request at least 8x where supported.
|
|
23
|
+
* The renderer still clamps to the device maximum at upload time, so a
|
|
24
|
+
* request above the device capability folds down instead of failing.
|
|
25
|
+
*/
|
|
26
|
+
export const DEFAULT_SAMPLER_ANISOTROPY = 8;
|
|
27
|
+
/**
|
|
28
|
+
* C3 capability-gated anisotropy for root material builders. Snaps the
|
|
29
|
+
* request down to a device-quantized step and, when the device capability
|
|
30
|
+
* is known, caps it instead of failing.
|
|
31
|
+
*/
|
|
32
|
+
export function resolveSamplerAnisotropy(request = {}) {
|
|
33
|
+
const rawDesired = request.desired;
|
|
34
|
+
const desired = typeof rawDesired === "number" && Number.isFinite(rawDesired) && rawDesired >= 1
|
|
35
|
+
? rawDesired
|
|
36
|
+
: DEFAULT_SAMPLER_ANISOTROPY;
|
|
37
|
+
const snappedDesired = snapAnisotropyStep(desired);
|
|
38
|
+
const rawMax = request.maxSupported;
|
|
39
|
+
if (typeof rawMax !== "number" || !Number.isFinite(rawMax)) {
|
|
40
|
+
return {
|
|
41
|
+
applied: snappedDesired,
|
|
42
|
+
capped: false,
|
|
43
|
+
detail: `Anisotropy ${snappedDesired}x requested; device capability unknown — the renderer clamps to the device maximum at upload time.`
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const maxSupported = Math.max(1, rawMax);
|
|
47
|
+
const allowed = Math.min(desired, maxSupported);
|
|
48
|
+
const applied = snapAnisotropyStep(allowed);
|
|
49
|
+
const capped = applied < desired;
|
|
50
|
+
return {
|
|
51
|
+
applied,
|
|
52
|
+
capped,
|
|
53
|
+
detail: capped
|
|
54
|
+
? `Anisotropy ${desired}x requested but device supports ${maxSupported}x — applied ${applied}x.`
|
|
55
|
+
: `Anisotropy ${applied}x applied (requested ${desired}x, device ${maxSupported}x).`
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function snapAnisotropyStep(value) {
|
|
59
|
+
let applied = SAMPLER_ANISOTROPY_STEPS[0];
|
|
60
|
+
for (const step of SAMPLER_ANISOTROPY_STEPS) {
|
|
61
|
+
if (step <= value)
|
|
62
|
+
applied = step;
|
|
63
|
+
}
|
|
64
|
+
return applied;
|
|
65
|
+
}
|
|
19
66
|
//# sourceMappingURL=Sampler.js.map
|
package/dist/Sampler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sampler.js","sourceRoot":"","sources":["../../../../packages/rendering/src/Sampler.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,OAAO;IACF,SAAS,CAAmB;IAC5B,SAAS,CAAmB;IAC5B,QAAQ,CAAqB;IAC7B,QAAQ,CAAqB;IAC7B,aAAa,CAAS;IAEtC,YAAY,aAAgC,EAAE;QAC5C,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,QAAQ,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,QAAQ,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,eAAe,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,eAAe,CAAC;QACvD,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,UAAU,CAAC,qDAAqD,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"Sampler.js","sourceRoot":"","sources":["../../../../packages/rendering/src/Sampler.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,OAAO;IACF,SAAS,CAAmB;IAC5B,SAAS,CAAmB;IAC5B,QAAQ,CAAqB;IAC7B,QAAQ,CAAqB;IAC7B,aAAa,CAAS;IAEtC,YAAY,aAAgC,EAAE;QAC5C,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,QAAQ,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,QAAQ,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,eAAe,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,eAAe,CAAC;QACvD,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,UAAU,CAAC,qDAAqD,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF;AAED,wEAAwE;AACxE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAU,CAAC;AAElE;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAmB5C;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAoC,EAAE;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IACnC,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC;QAC9F,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,0BAA0B,CAAC;IAC/B,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IACpC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,cAAc,cAAc,oGAAoG;SACzI,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACjC,OAAO;QACL,OAAO;QACP,MAAM;QACN,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC,cAAc,OAAO,mCAAmC,YAAY,eAAe,OAAO,IAAI;YAChG,CAAC,CAAC,cAAc,OAAO,wBAAwB,OAAO,aAAa,YAAY,KAAK;KACvF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,OAAO,GAAW,wBAAwB,CAAC,CAAC,CAAE,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,wBAAwB,EAAE,CAAC;QAC5C,IAAI,IAAI,IAAI,KAAK;YAAE,OAAO,GAAG,IAAI,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { RenderDevice, RenderTarget } from "./RenderDevice.js";
|
|
2
|
+
import { createSsrPassDescriptor, type SsrPassDescriptor } from "./PlanarReflection.js";
|
|
3
|
+
export { invertSsrProjection } from "./ProjectionMath.js";
|
|
4
|
+
export interface ReflectionSurfaceSsrInputs {
|
|
5
|
+
/** Color and nonlinear WebGL depth from the same completed scene frame. */
|
|
6
|
+
readonly scene: RenderTarget;
|
|
7
|
+
/** View-space normals encoded to RGB [0,1]; A is roughness, zero excludes the surface. */
|
|
8
|
+
readonly normalMask: RenderTarget;
|
|
9
|
+
readonly projection: Float32Array;
|
|
10
|
+
readonly frame: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ReflectionSurfaceSsrResult {
|
|
13
|
+
readonly target: RenderTarget;
|
|
14
|
+
readonly frame: number;
|
|
15
|
+
readonly revision: number;
|
|
16
|
+
readonly nativeDraws: number;
|
|
17
|
+
readonly pixelBacked: true;
|
|
18
|
+
}
|
|
19
|
+
interface SsrNativeDevice extends RenderDevice {
|
|
20
|
+
executeReflectionSurfaceSsr?(source: RenderTarget, normalMask: RenderTarget, output: RenderTarget, options: {
|
|
21
|
+
projection: Float32Array;
|
|
22
|
+
inverseProjection: Float32Array;
|
|
23
|
+
maxSteps: number;
|
|
24
|
+
maxDistance: number;
|
|
25
|
+
thickness: number;
|
|
26
|
+
intensity: number;
|
|
27
|
+
}): void;
|
|
28
|
+
}
|
|
29
|
+
/** Owns only output; borrows current scene/G-buffer targets from the existing renderer. */
|
|
30
|
+
export declare class ScreenSpaceReflectionPass {
|
|
31
|
+
private readonly device;
|
|
32
|
+
private output;
|
|
33
|
+
private disposed;
|
|
34
|
+
private revision;
|
|
35
|
+
private lastFrame;
|
|
36
|
+
private latest;
|
|
37
|
+
readonly descriptor: SsrPassDescriptor;
|
|
38
|
+
constructor(device: SsrNativeDevice, options: Parameters<typeof createSsrPassDescriptor>[0]);
|
|
39
|
+
execute(inputs: ReflectionSurfaceSsrInputs, intensity?: number): ReflectionSurfaceSsrResult;
|
|
40
|
+
get result(): ReflectionSurfaceSsrResult | undefined;
|
|
41
|
+
dispose(): void;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=ScreenSpaceReflectionPass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScreenSpaceReflectionPass.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ScreenSpaceReflectionPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,0BAA0B;IACzC,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,0FAA0F;IAC1F,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AACD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;CAC5B;AACD,UAAU,eAAgB,SAAQ,YAAY;IAC5C,2BAA2B,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAC/F,OAAO,EAAE;QAAE,UAAU,EAAE,YAAY,CAAC;QAAC,iBAAiB,EAAE,YAAY,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC9J;AAED,2FAA2F;AAC3F,qBAAa,yBAAyB;IAQxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPnC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,MAAM,CAAyC;IACvD,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;gBAEV,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAI5G,OAAO,CAAC,MAAM,EAAE,0BAA0B,EAAE,SAAS,SAAM,GAAG,0BAA0B;IA4BxF,IAAI,MAAM,IAAI,0BAA0B,GAAG,SAAS,CAEnD;IAED,OAAO,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { createSsrPassDescriptor } from "./PlanarReflection.js";
|
|
2
|
+
import { invertSsrProjection } from "./ProjectionMath.js";
|
|
3
|
+
export { invertSsrProjection } from "./ProjectionMath.js";
|
|
4
|
+
/** Owns only output; borrows current scene/G-buffer targets from the existing renderer. */
|
|
5
|
+
export class ScreenSpaceReflectionPass {
|
|
6
|
+
device;
|
|
7
|
+
output;
|
|
8
|
+
disposed = false;
|
|
9
|
+
revision = 0;
|
|
10
|
+
lastFrame = -1;
|
|
11
|
+
latest;
|
|
12
|
+
descriptor;
|
|
13
|
+
constructor(device, options) {
|
|
14
|
+
this.device = device;
|
|
15
|
+
this.descriptor = createSsrPassDescriptor(options);
|
|
16
|
+
}
|
|
17
|
+
execute(inputs, intensity = 0.8) {
|
|
18
|
+
this.latest = undefined;
|
|
19
|
+
if (this.disposed)
|
|
20
|
+
throw new Error("SSR pass is disposed.");
|
|
21
|
+
if (!this.device.executeReflectionSurfaceSsr)
|
|
22
|
+
throw new Error("SSR requires native renderer execution; CPU/mock fallback is unavailable.");
|
|
23
|
+
const { scene, normalMask, frame, projection } = inputs;
|
|
24
|
+
if (!scene || !normalMask || scene.disposed || normalMask.disposed || !scene.depthTexture || scene.depthTexture.disposed)
|
|
25
|
+
throw new Error("SSR requires live scene color, sampleable depth, and normal-mask targets.");
|
|
26
|
+
if (scene.width !== normalMask.width || scene.height !== normalMask.height)
|
|
27
|
+
throw new Error("SSR input dimensions must match.");
|
|
28
|
+
if (!Number.isSafeInteger(frame) || frame <= this.lastFrame)
|
|
29
|
+
throw new Error("SSR requires a new completed frame.");
|
|
30
|
+
if (!Number.isFinite(intensity) || intensity < 0 || intensity > 2)
|
|
31
|
+
throw new RangeError("SSR intensity must be in [0, 2].");
|
|
32
|
+
const inverseProjection = invertSsrProjection(projection);
|
|
33
|
+
const width = Math.max(1, Math.ceil(scene.width * this.descriptor.resolutionScale));
|
|
34
|
+
const height = Math.max(1, Math.ceil(scene.height * this.descriptor.resolutionScale));
|
|
35
|
+
if (!this.output || this.output.width !== width || this.output.height !== height) {
|
|
36
|
+
this.output?.dispose();
|
|
37
|
+
this.output = undefined;
|
|
38
|
+
this.output = this.device.createRenderTarget({ width, height, format: scene.colorTexture.format === "rgba16f" ? "rgba16f" : "rgba8", depth: false, label: "reflection-surface-ssr" });
|
|
39
|
+
}
|
|
40
|
+
this.device.executeReflectionSurfaceSsr(scene, normalMask, this.output, {
|
|
41
|
+
projection, inverseProjection, intensity, maxSteps: this.descriptor.maxSteps,
|
|
42
|
+
maxDistance: this.descriptor.maxDistance, thickness: this.descriptor.thickness,
|
|
43
|
+
});
|
|
44
|
+
this.lastFrame = frame;
|
|
45
|
+
this.latest = Object.freeze({ target: this.output, frame, revision: ++this.revision, nativeDraws: 1, pixelBacked: true });
|
|
46
|
+
return this.latest;
|
|
47
|
+
}
|
|
48
|
+
get result() {
|
|
49
|
+
return this.latest?.target.disposed ? undefined : this.latest;
|
|
50
|
+
}
|
|
51
|
+
dispose() {
|
|
52
|
+
this.disposed = true;
|
|
53
|
+
this.latest = undefined;
|
|
54
|
+
this.output?.dispose();
|
|
55
|
+
this.output = undefined;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=ScreenSpaceReflectionPass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScreenSpaceReflectionPass.js","sourceRoot":"","sources":["../../../../packages/rendering/src/ScreenSpaceReflectionPass.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDF world text for the rendering package (muse3jsparity-PRD G1).
|
|
3
|
+
*
|
|
4
|
+
* ## What this is
|
|
5
|
+
*
|
|
6
|
+
* CPU-side signed-distance-field text: a font atlas baked from the same
|
|
7
|
+
* uppercase-alphanumeric 5x7 bitmap catalog as root `text3D`, plus layout into
|
|
8
|
+
* textured quads, analytic coverage sampling, LOD fade, and occlusion policy
|
|
9
|
+
* helpers. The GPU half (atlas upload + quad submission) belongs to the
|
|
10
|
+
* production-runtime bridge; this module produces the data it consumes and the
|
|
11
|
+
* diagnostics that prove the swap happened (`textPixelBacked`).
|
|
12
|
+
*
|
|
13
|
+
* ## What this is not
|
|
14
|
+
*
|
|
15
|
+
* - Not a font stack: no font-file loading, no Unicode shaping, no kerning, no
|
|
16
|
+
* CJK, no paragraph layout. Supported glyphs are exactly `A-Z 0-9 space - .`
|
|
17
|
+
* (see `SDF_SUPPORTED_GLYPHS`). Anything else is recorded on the layout as
|
|
18
|
+
* `unsupportedCharacters` and skipped — never silently substituted.
|
|
19
|
+
* - Not troika-three-text parity and not TextGeometry parity. The claim label
|
|
20
|
+
* is `production-runtime` SDF text, proven by `textPixelBacked` diagnostics.
|
|
21
|
+
* - Not DOM text. DOM labels (`labels.*` / `ui.*`) stay the accessible
|
|
22
|
+
* surface; SDF text is the lit/occluded in-world surface. Diagnostics keep
|
|
23
|
+
* the two counts separate (`summarizeTextSurfaces`).
|
|
24
|
+
*
|
|
25
|
+
* Pure: no DOM, no WebGL, no `three`. Fully unit-testable.
|
|
26
|
+
*/
|
|
27
|
+
/** Exact glyph scope. Uppercase alphanumeric catalog shared with root `text3D`. */
|
|
28
|
+
export declare const SDF_SUPPORTED_GLYPHS: "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- .";
|
|
29
|
+
/**
|
|
30
|
+
* Font-scope honesty note (G1 checklist: "no arbitrary-shaping claim").
|
|
31
|
+
* Shaping beyond this catalog — lowercase mapping aside — is out of scope.
|
|
32
|
+
*/
|
|
33
|
+
export declare const SDF_FONT_SCOPE_NOTE: string;
|
|
34
|
+
export interface SdfFontAtlasOptions {
|
|
35
|
+
/** Pixels per bitmap cell edge. Must be a positive integer. Default 8. */
|
|
36
|
+
readonly cellResolution?: number;
|
|
37
|
+
/** Padding pixels around each glyph cell in the atlas. Default 8. */
|
|
38
|
+
readonly padding?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface SdfGlyphMetrics {
|
|
41
|
+
readonly glyph: string;
|
|
42
|
+
/** Normalized UV rect [u0, v0, u1, v1] into the atlas. */
|
|
43
|
+
readonly uv: readonly [number, number, number, number];
|
|
44
|
+
/** Advance width in em units (glyph cell + spacing handled by layout). */
|
|
45
|
+
readonly advanceEm: number;
|
|
46
|
+
}
|
|
47
|
+
export interface SdfFontAtlas {
|
|
48
|
+
readonly kind: "aura-sdf-font-atlas";
|
|
49
|
+
/** Grayscale distance field, width*height floats, 0 = far outside, 1 = far inside. */
|
|
50
|
+
readonly distances: Float32Array;
|
|
51
|
+
readonly width: number;
|
|
52
|
+
readonly height: number;
|
|
53
|
+
readonly glyphs: Readonly<Record<string, SdfGlyphMetrics>>;
|
|
54
|
+
readonly glyphCount: number;
|
|
55
|
+
readonly cellResolution: number;
|
|
56
|
+
readonly padding: number;
|
|
57
|
+
/** Max interior distance in pixels, for normalizing shader smoothing. */
|
|
58
|
+
readonly spreadPixels: number;
|
|
59
|
+
}
|
|
60
|
+
export interface SdfTextStyle {
|
|
61
|
+
/** Outline half-width in em. 0 disables. Default 0. */
|
|
62
|
+
readonly outlineWidthEm?: number;
|
|
63
|
+
/** Glow radius in em. 0 disables. Default 0. */
|
|
64
|
+
readonly glowRadiusEm?: number;
|
|
65
|
+
/** Drop-shadow offset in em [x, y]. Omitted disables. */
|
|
66
|
+
readonly shadowOffsetEm?: readonly [number, number];
|
|
67
|
+
/** Shadow opacity 0..1. Default 0.45. */
|
|
68
|
+
readonly shadowOpacity?: number;
|
|
69
|
+
/** Edge smoothing in em. Must be positive. Default 0.02. */
|
|
70
|
+
readonly smoothingEm?: number;
|
|
71
|
+
/** Fade start distance in world units. Omitted disables LOD fade. */
|
|
72
|
+
readonly lodFadeNear?: number;
|
|
73
|
+
/** Fade end distance in world units (fully transparent past this). */
|
|
74
|
+
readonly lodFadeFar?: number;
|
|
75
|
+
}
|
|
76
|
+
export interface SdfTextLayoutOptions {
|
|
77
|
+
/** Glyph height in world units. Must be positive. Default 1. */
|
|
78
|
+
readonly size?: number;
|
|
79
|
+
/** Extra gap between glyphs in world units. Non-negative. Default size * 0.14. */
|
|
80
|
+
readonly letterSpacing?: number;
|
|
81
|
+
readonly style?: SdfTextStyle;
|
|
82
|
+
}
|
|
83
|
+
export interface SdfTextQuad {
|
|
84
|
+
/** Four corner world-space offsets [x, y] from the text origin (baseline-left). */
|
|
85
|
+
readonly corners: readonly [number, number, number, number, number, number, number, number];
|
|
86
|
+
/** UV rect matching the glyph's atlas cell. */
|
|
87
|
+
readonly uv: readonly [number, number, number, number];
|
|
88
|
+
readonly glyph: string;
|
|
89
|
+
}
|
|
90
|
+
export interface SdfTextResolvedStyle {
|
|
91
|
+
readonly outlineWidthEm: number;
|
|
92
|
+
readonly glowRadiusEm: number;
|
|
93
|
+
readonly shadowOffsetEm?: readonly [number, number];
|
|
94
|
+
readonly shadowOpacity: number;
|
|
95
|
+
readonly smoothingEm: number;
|
|
96
|
+
readonly lodFadeNear?: number;
|
|
97
|
+
readonly lodFadeFar?: number;
|
|
98
|
+
}
|
|
99
|
+
export interface SdfTextLayout {
|
|
100
|
+
readonly kind: "aura-sdf-text-layout";
|
|
101
|
+
readonly text: string;
|
|
102
|
+
readonly quads: readonly SdfTextQuad[];
|
|
103
|
+
readonly glyphCount: number;
|
|
104
|
+
readonly unsupportedCharacters: readonly string[];
|
|
105
|
+
readonly widthWorld: number;
|
|
106
|
+
readonly heightWorld: number;
|
|
107
|
+
readonly method: "sdf-atlas-quad";
|
|
108
|
+
readonly style: SdfTextResolvedStyle;
|
|
109
|
+
}
|
|
110
|
+
/** Opacity multiplier for an occluded SDF label under the `"dim"` policy. Mirrors the DOM label layer. */
|
|
111
|
+
export declare const SDF_OCCLUDED_OPACITY = 0.35;
|
|
112
|
+
export type SdfTextOcclusionPolicy = "dim" | "hide" | "show";
|
|
113
|
+
/**
|
|
114
|
+
* Build the SDF font atlas from the built-in bitmap catalog.
|
|
115
|
+
*
|
|
116
|
+
* Distance is computed per atlas pixel by brute-force nearest-edge search over
|
|
117
|
+
* the upscaled 5x7 cell. The atlas is small (39 glyphs), so this stays fast
|
|
118
|
+
* (~39 cells x a few thousand pixels x 35 bitmap cells) and dependency-free.
|
|
119
|
+
*/
|
|
120
|
+
export declare function createSdfFontAtlas(options?: SdfFontAtlasOptions): SdfFontAtlas;
|
|
121
|
+
/** Lay out a string into atlas-backed quads. Uppercase alphanumeric scope enforced. */
|
|
122
|
+
export declare function layoutSdfText(text: string, atlas: SdfFontAtlas, options?: SdfTextLayoutOptions): SdfTextLayout;
|
|
123
|
+
/**
|
|
124
|
+
* Analytic SDF coverage: 1 fully inside, 0 fully outside, smooth edge.
|
|
125
|
+
* `distance` is signed distance in em (positive inside), `smoothingEm` the edge width.
|
|
126
|
+
*/
|
|
127
|
+
export declare function sampleSdfCoverage(distanceEm: number, smoothingEm: number): number;
|
|
128
|
+
/** LOD fade: 1 at or before `fadeNear`, 0 at or past `fadeFar`, smooth between. */
|
|
129
|
+
export declare function sdfTextLodFade(distance: number, fadeNear: number, fadeFar: number): number;
|
|
130
|
+
/** Occlusion handling for SDF text, mirroring the DOM label layer's dim/hide semantics. */
|
|
131
|
+
export declare function applySdfTextOcclusion(occluded: boolean, policy?: SdfTextOcclusionPolicy): {
|
|
132
|
+
readonly visible: boolean;
|
|
133
|
+
readonly opacity: number;
|
|
134
|
+
};
|
|
135
|
+
export interface SdfPixelBackingInput {
|
|
136
|
+
/** True when the atlas texture has been uploaded to the GPU. */
|
|
137
|
+
readonly atlasUploaded: boolean;
|
|
138
|
+
/** True when at least one SDF quad was submitted this frame. */
|
|
139
|
+
readonly quadsSubmitted: boolean;
|
|
140
|
+
/** Glyph quads submitted, for evidence. */
|
|
141
|
+
readonly quadCount?: number;
|
|
142
|
+
}
|
|
143
|
+
export interface SdfPixelBacking {
|
|
144
|
+
/** True only when pixels on screen come from the SDF path. Never inferred — both signals required. */
|
|
145
|
+
readonly textPixelBacked: boolean;
|
|
146
|
+
readonly reason: string;
|
|
147
|
+
readonly quadCount: number;
|
|
148
|
+
}
|
|
149
|
+
/** `textPixelBacked` diagnostics: fail-closed, never inferred from layout alone. */
|
|
150
|
+
export declare function describeSdfTextPixelBacking(input: SdfPixelBackingInput): SdfPixelBacking;
|
|
151
|
+
export interface TextSurfaceSummary {
|
|
152
|
+
/** Accessible DOM surface (`ui.*` + world-anchored `labels.*`). */
|
|
153
|
+
readonly domLabels: number;
|
|
154
|
+
/** Lit/occluded in-world surface (G1 SDF quads). */
|
|
155
|
+
readonly sdfTexts: number;
|
|
156
|
+
/** Extruded mesh catalog (`text3D`) — a third surface, counted separately, never merged. */
|
|
157
|
+
readonly meshTexts: number;
|
|
158
|
+
readonly note: string;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* DOM-vs-3D inventory rule: the three text surfaces are reported as three
|
|
162
|
+
* numbers. Merging them is what let DOM counts masquerade as 3D proof.
|
|
163
|
+
*/
|
|
164
|
+
export declare function summarizeTextSurfaces(input: {
|
|
165
|
+
domLabels: number;
|
|
166
|
+
sdfTexts: number;
|
|
167
|
+
meshTexts: number;
|
|
168
|
+
}): TextSurfaceSummary;
|
|
169
|
+
export type SdfTextRgba = readonly [number, number, number, number];
|
|
170
|
+
export interface SdfTextRasterOptions {
|
|
171
|
+
/** Output texels per world unit. Positive. Default 64. */
|
|
172
|
+
readonly texelsPerWorldUnit?: number;
|
|
173
|
+
/** Glyph fill color, straight-alpha 0..1 channels. Default opaque white. */
|
|
174
|
+
readonly fill?: SdfTextRgba;
|
|
175
|
+
/** Outline color. Omitted (or zero outlineWidthEm) disables. */
|
|
176
|
+
readonly outline?: SdfTextRgba;
|
|
177
|
+
/** Glow color. Omitted (or zero glowRadiusEm) disables. */
|
|
178
|
+
readonly glow?: SdfTextRgba;
|
|
179
|
+
/** Drop-shadow color. Omitted (or no shadowOffsetEm) disables. */
|
|
180
|
+
readonly shadow?: SdfTextRgba;
|
|
181
|
+
}
|
|
182
|
+
export interface SdfTextRasterImage {
|
|
183
|
+
readonly kind: "aura-sdf-text-image";
|
|
184
|
+
readonly width: number;
|
|
185
|
+
readonly height: number;
|
|
186
|
+
/** Straight-alpha RGBA8 bytes, row 0 = glyph top. */
|
|
187
|
+
readonly data: Uint8Array;
|
|
188
|
+
/** Count of texels with alpha > 8 (evidence the sampler drew). */
|
|
189
|
+
readonly coveredTexels: number;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Native SDF sampler (muse3jsparity-PRD G1).
|
|
193
|
+
*
|
|
194
|
+
* Bakes a laid-out text string into an RGBA8 image by sampling the baked
|
|
195
|
+
* atlas distance field per texel through `sampleSdfCoverage` — the same
|
|
196
|
+
* deterministic-bake pattern as the CPU postprocess kernels: the bake runs
|
|
197
|
+
* once, the bytes upload to the GPU as a native texture, quads sample them.
|
|
198
|
+
* This is NOT a per-pixel shader SDF loop; the claim label stays
|
|
199
|
+
* `production-runtime` baked-SDF text, proven by `textPixelBacked`.
|
|
200
|
+
*
|
|
201
|
+
* Layout space: x in [0, widthWorld], y in [0, heightWorld] with y-up.
|
|
202
|
+
* Image space: row 0 is the glyph top (y = heightWorld).
|
|
203
|
+
*/
|
|
204
|
+
export declare function rasterizeSdfTextLabelImage(layout: SdfTextLayout, atlas: SdfFontAtlas, options?: SdfTextRasterOptions): SdfTextRasterImage;
|
|
205
|
+
export interface SdfTextQuadMesh {
|
|
206
|
+
readonly kind: "aura-sdf-text-quad-mesh";
|
|
207
|
+
/** World-space positions, 3 per vertex, y-up in text-local space. */
|
|
208
|
+
readonly positions: Float32Array;
|
|
209
|
+
/** +Z normals, 3 per vertex. */
|
|
210
|
+
readonly normals: Float32Array;
|
|
211
|
+
/** Label-image UVs, 2 per vertex (v = 1 at glyph top). */
|
|
212
|
+
readonly uvs: Float32Array;
|
|
213
|
+
/** Axis-aligned tangents (+X, w = 1), 4 per vertex. */
|
|
214
|
+
readonly tangents: Float32Array;
|
|
215
|
+
readonly indices: readonly number[];
|
|
216
|
+
readonly vertexCount: number;
|
|
217
|
+
readonly quadCount: number;
|
|
218
|
+
readonly min: readonly [number, number, number];
|
|
219
|
+
readonly max: readonly [number, number, number];
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Quad-strip mesh for a rasterized label image (muse3jsparity-PRD G1 quad
|
|
223
|
+
* submission). One quad per layout glyph sharing the label image: uv rects
|
|
224
|
+
* are the quad's sub-rect of the image, so the bridge uploads a single
|
|
225
|
+
* texture per text node.
|
|
226
|
+
*/
|
|
227
|
+
export declare function createSdfTextQuadMesh(layout: SdfTextLayout, image: SdfTextRasterImage): SdfTextQuadMesh;
|
|
228
|
+
export interface SdfTextFrameOpacityInput {
|
|
229
|
+
/** Camera-to-text distance in world units. Non-negative. */
|
|
230
|
+
readonly distance: number;
|
|
231
|
+
readonly lodFadeNear?: number;
|
|
232
|
+
readonly lodFadeFar?: number;
|
|
233
|
+
readonly occluded: boolean;
|
|
234
|
+
readonly occlusionPolicy?: SdfTextOcclusionPolicy;
|
|
235
|
+
}
|
|
236
|
+
export interface SdfTextFrameOpacity {
|
|
237
|
+
readonly visible: boolean;
|
|
238
|
+
/** Per-frame opacity: LOD fade x occlusion policy. */
|
|
239
|
+
readonly opacity: number;
|
|
240
|
+
readonly lodFade: number;
|
|
241
|
+
readonly occlusionOpacity: number;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Per-frame SDF text opacity (muse3jsparity-PRD G1 occlusion + LOD-fade
|
|
245
|
+
* proof). Pure: the bridge evaluates it every frame from the live camera
|
|
246
|
+
* distance and the scene occlusion test, then writes it to the quad
|
|
247
|
+
* material — occlusion dims/hides, distance fades, neither is baked.
|
|
248
|
+
*/
|
|
249
|
+
export declare function resolveSdfTextFrameOpacity(input: SdfTextFrameOpacityInput): SdfTextFrameOpacity;
|
|
250
|
+
//# sourceMappingURL=SdfText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdfText.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/SdfText.ts"],"names":[],"mappings":"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"}
|