@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.
Files changed (374) hide show
  1. package/dist/AtmosphereWetness.d.ts +61 -0
  2. package/dist/AtmosphereWetness.d.ts.map +1 -0
  3. package/dist/AtmosphereWetness.js +99 -0
  4. package/dist/AtmosphereWetness.js.map +1 -0
  5. package/dist/CascadedShadowMaps.d.ts.map +1 -1
  6. package/dist/CascadedShadowMaps.js +3 -1
  7. package/dist/CascadedShadowMaps.js.map +1 -1
  8. package/dist/ClusteredForwardLighting.d.ts +25 -1
  9. package/dist/ClusteredForwardLighting.d.ts.map +1 -1
  10. package/dist/ClusteredForwardLighting.js +80 -3
  11. package/dist/ClusteredForwardLighting.js.map +1 -1
  12. package/dist/DayNightSky.d.ts +63 -0
  13. package/dist/DayNightSky.d.ts.map +1 -0
  14. package/dist/DayNightSky.js +156 -0
  15. package/dist/DayNightSky.js.map +1 -0
  16. package/dist/EnvironmentPresetPack.d.ts +30 -0
  17. package/dist/EnvironmentPresetPack.d.ts.map +1 -0
  18. package/dist/EnvironmentPresetPack.js +49 -0
  19. package/dist/EnvironmentPresetPack.js.map +1 -0
  20. package/dist/ExtensionScalarAtlas.d.ts +18 -0
  21. package/dist/ExtensionScalarAtlas.d.ts.map +1 -0
  22. package/dist/ExtensionScalarAtlas.js +107 -0
  23. package/dist/ExtensionScalarAtlas.js.map +1 -0
  24. package/dist/ForwardPass.d.ts +65 -0
  25. package/dist/ForwardPass.d.ts.map +1 -1
  26. package/dist/ForwardPass.js +196 -2
  27. package/dist/ForwardPass.js.map +1 -1
  28. package/dist/InstancedPBRMaterial.d.ts +1 -0
  29. package/dist/InstancedPBRMaterial.d.ts.map +1 -1
  30. package/dist/InstancedPBRMaterial.js +3 -0
  31. package/dist/InstancedPBRMaterial.js.map +1 -1
  32. package/dist/InstancingDiagnostics.d.ts +69 -0
  33. package/dist/InstancingDiagnostics.d.ts.map +1 -0
  34. package/dist/InstancingDiagnostics.js +98 -0
  35. package/dist/InstancingDiagnostics.js.map +1 -0
  36. package/dist/LeanWebGL2Device.d.ts +265 -0
  37. package/dist/LeanWebGL2Device.d.ts.map +1 -0
  38. package/dist/LeanWebGL2Device.js +4001 -0
  39. package/dist/LeanWebGL2Device.js.map +1 -0
  40. package/dist/LightingRig.d.ts +19 -1
  41. package/dist/LightingRig.d.ts.map +1 -1
  42. package/dist/LightingRig.js +61 -1
  43. package/dist/LightingRig.js.map +1 -1
  44. package/dist/MaterialBinding.js +1 -1
  45. package/dist/MaterialBinding.js.map +1 -1
  46. package/dist/MeshConsolidation.d.ts +12 -0
  47. package/dist/MeshConsolidation.d.ts.map +1 -1
  48. package/dist/MeshConsolidation.js +28 -0
  49. package/dist/MeshConsolidation.js.map +1 -1
  50. package/dist/MorphTargetPlan.d.ts +29 -2
  51. package/dist/MorphTargetPlan.d.ts.map +1 -1
  52. package/dist/MorphTargetPlan.js +23 -4
  53. package/dist/MorphTargetPlan.js.map +1 -1
  54. package/dist/NormalMappedPBRMaterial.d.ts.map +1 -1
  55. package/dist/NormalMappedPBRMaterial.js +22 -2
  56. package/dist/NormalMappedPBRMaterial.js.map +1 -1
  57. package/dist/OceanSurface.d.ts +75 -0
  58. package/dist/OceanSurface.d.ts.map +1 -1
  59. package/dist/OceanSurface.js +211 -0
  60. package/dist/OceanSurface.js.map +1 -1
  61. package/dist/PBRMaterial.d.ts +1 -0
  62. package/dist/PBRMaterial.d.ts.map +1 -1
  63. package/dist/PBRMaterial.js +23 -2
  64. package/dist/PBRMaterial.js.map +1 -1
  65. package/dist/PbrReference.d.ts +48 -0
  66. package/dist/PbrReference.d.ts.map +1 -1
  67. package/dist/PbrReference.js +126 -0
  68. package/dist/PbrReference.js.map +1 -1
  69. package/dist/PlanarReflection.d.ts +221 -0
  70. package/dist/PlanarReflection.d.ts.map +1 -0
  71. package/dist/PlanarReflection.js +541 -0
  72. package/dist/PlanarReflection.js.map +1 -0
  73. package/dist/PostProcessPass.d.ts +32 -0
  74. package/dist/PostProcessPass.d.ts.map +1 -1
  75. package/dist/PostProcessPass.js +79 -36
  76. package/dist/PostProcessPass.js.map +1 -1
  77. package/dist/ProjectionMath.d.ts +3 -0
  78. package/dist/ProjectionMath.d.ts.map +1 -0
  79. package/dist/ProjectionMath.js +26 -0
  80. package/dist/ProjectionMath.js.map +1 -0
  81. package/dist/ReflectionSurfaces.d.ts +17 -0
  82. package/dist/ReflectionSurfaces.d.ts.map +1 -1
  83. package/dist/ReflectionSurfaces.js +103 -1
  84. package/dist/ReflectionSurfaces.js.map +1 -1
  85. package/dist/RenderDevice.d.ts +92 -0
  86. package/dist/RenderDevice.d.ts.map +1 -1
  87. package/dist/RenderDevice.js +85 -0
  88. package/dist/RenderDevice.js.map +1 -1
  89. package/dist/Renderer.d.ts +9 -0
  90. package/dist/Renderer.d.ts.map +1 -1
  91. package/dist/Renderer.js +97 -9
  92. package/dist/Renderer.js.map +1 -1
  93. package/dist/RendererPostprocessPlan.d.ts +64 -3
  94. package/dist/RendererPostprocessPlan.d.ts.map +1 -1
  95. package/dist/RendererPostprocessPlan.js +116 -12
  96. package/dist/RendererPostprocessPlan.js.map +1 -1
  97. package/dist/RendererVisualPipelineReport.d.ts.map +1 -1
  98. package/dist/RendererVisualPipelineReport.js +3 -1
  99. package/dist/RendererVisualPipelineReport.js.map +1 -1
  100. package/dist/Sampler.d.ts +29 -0
  101. package/dist/Sampler.d.ts.map +1 -1
  102. package/dist/Sampler.js +47 -0
  103. package/dist/Sampler.js.map +1 -1
  104. package/dist/ScreenSpaceReflectionPass.d.ts +43 -0
  105. package/dist/ScreenSpaceReflectionPass.d.ts.map +1 -0
  106. package/dist/ScreenSpaceReflectionPass.js +58 -0
  107. package/dist/ScreenSpaceReflectionPass.js.map +1 -0
  108. package/dist/SdfText.d.ts +250 -0
  109. package/dist/SdfText.d.ts.map +1 -0
  110. package/dist/SdfText.js +551 -0
  111. package/dist/SdfText.js.map +1 -0
  112. package/dist/ShaderChunks.d.ts.map +1 -1
  113. package/dist/ShaderChunks.js +30 -12
  114. package/dist/ShaderChunks.js.map +1 -1
  115. package/dist/ShaderLibrary.d.ts.map +1 -1
  116. package/dist/ShaderLibrary.js +601 -186
  117. package/dist/ShaderLibrary.js.map +1 -1
  118. package/dist/ShaderLibraryCore.d.ts +3 -0
  119. package/dist/ShaderLibraryCore.d.ts.map +1 -1
  120. package/dist/ShaderLibraryCore.js +73 -12
  121. package/dist/ShaderLibraryCore.js.map +1 -1
  122. package/dist/ShadowMap.d.ts +24 -0
  123. package/dist/ShadowMap.d.ts.map +1 -1
  124. package/dist/ShadowMap.js +43 -0
  125. package/dist/ShadowMap.js.map +1 -1
  126. package/dist/SkinnedLitMaterial.d.ts.map +1 -1
  127. package/dist/SkinnedLitMaterial.js +2 -0
  128. package/dist/SkinnedLitMaterial.js.map +1 -1
  129. package/dist/SkinningBounds.d.ts +10 -0
  130. package/dist/SkinningBounds.d.ts.map +1 -1
  131. package/dist/SkinningBounds.js +27 -0
  132. package/dist/SkinningBounds.js.map +1 -1
  133. package/dist/SpriteFlipbook.d.ts +60 -0
  134. package/dist/SpriteFlipbook.d.ts.map +1 -0
  135. package/dist/SpriteFlipbook.js +128 -0
  136. package/dist/SpriteFlipbook.js.map +1 -0
  137. package/dist/TemporalHistory.d.ts +37 -0
  138. package/dist/TemporalHistory.d.ts.map +1 -0
  139. package/dist/TemporalHistory.js +135 -0
  140. package/dist/TemporalHistory.js.map +1 -0
  141. package/dist/TemporalMath.d.ts +3 -0
  142. package/dist/TemporalMath.d.ts.map +1 -0
  143. package/dist/TemporalMath.js +9 -0
  144. package/dist/TemporalMath.js.map +1 -0
  145. package/dist/TerrainTiles.d.ts +120 -0
  146. package/dist/TerrainTiles.d.ts.map +1 -0
  147. package/dist/TerrainTiles.js +221 -0
  148. package/dist/TerrainTiles.js.map +1 -0
  149. package/dist/TexturedPBRMaterial.d.ts +4 -0
  150. package/dist/TexturedPBRMaterial.d.ts.map +1 -1
  151. package/dist/TexturedPBRMaterial.js +88 -5
  152. package/dist/TexturedPBRMaterial.js.map +1 -1
  153. package/dist/TexturedUnlitMaterial.d.ts.map +1 -1
  154. package/dist/TexturedUnlitMaterial.js +20 -2
  155. package/dist/TexturedUnlitMaterial.js.map +1 -1
  156. package/dist/UnlitMaterial.d.ts.map +1 -1
  157. package/dist/UnlitMaterial.js +20 -2
  158. package/dist/UnlitMaterial.js.map +1 -1
  159. package/dist/VertexFormat.d.ts +6 -0
  160. package/dist/VertexFormat.d.ts.map +1 -1
  161. package/dist/VertexFormat.js +12 -0
  162. package/dist/VertexFormat.js.map +1 -1
  163. package/dist/VolumetricFog.d.ts +55 -0
  164. package/dist/VolumetricFog.d.ts.map +1 -0
  165. package/dist/VolumetricFog.js +91 -0
  166. package/dist/VolumetricFog.js.map +1 -0
  167. package/dist/WaterSurface.d.ts +77 -0
  168. package/dist/WaterSurface.d.ts.map +1 -0
  169. package/dist/WaterSurface.js +133 -0
  170. package/dist/WaterSurface.js.map +1 -0
  171. package/dist/WebGL2Device.d.ts +73 -0
  172. package/dist/WebGL2Device.d.ts.map +1 -1
  173. package/dist/WebGL2Device.js +836 -79
  174. package/dist/WebGL2Device.js.map +1 -1
  175. package/dist/WebGPUDevice.d.ts +62 -1
  176. package/dist/WebGPUDevice.d.ts.map +1 -1
  177. package/dist/WebGPUDevice.js +844 -51
  178. package/dist/WebGPUDevice.js.map +1 -1
  179. package/dist/WebGPUExtensionAtlas.d.ts +6 -0
  180. package/dist/WebGPUExtensionAtlas.d.ts.map +1 -0
  181. package/dist/WebGPUExtensionAtlas.js +225 -0
  182. package/dist/WebGPUExtensionAtlas.js.map +1 -0
  183. package/dist/WebGPUSkinningLimits.d.ts +40 -0
  184. package/dist/WebGPUSkinningLimits.d.ts.map +1 -1
  185. package/dist/WebGPUSkinningLimits.js +32 -0
  186. package/dist/WebGPUSkinningLimits.js.map +1 -1
  187. package/dist/effects/CollisionModule.d.ts +9 -0
  188. package/dist/effects/CollisionModule.d.ts.map +1 -1
  189. package/dist/effects/CollisionModule.js +10 -0
  190. package/dist/effects/CollisionModule.js.map +1 -1
  191. package/dist/effects/ColorModule.d.ts +7 -0
  192. package/dist/effects/ColorModule.d.ts.map +1 -1
  193. package/dist/effects/ColorModule.js +23 -0
  194. package/dist/effects/ColorModule.js.map +1 -1
  195. package/dist/effects/ForceModule.d.ts +35 -0
  196. package/dist/effects/ForceModule.d.ts.map +1 -1
  197. package/dist/effects/ForceModule.js +49 -0
  198. package/dist/effects/ForceModule.js.map +1 -1
  199. package/dist/effects/GPUParticleBackend.d.ts +188 -0
  200. package/dist/effects/GPUParticleBackend.d.ts.map +1 -1
  201. package/dist/effects/GPUParticleBackend.js +710 -1
  202. package/dist/effects/GPUParticleBackend.js.map +1 -1
  203. package/dist/effects/HeightfieldModule.d.ts +58 -0
  204. package/dist/effects/HeightfieldModule.d.ts.map +1 -0
  205. package/dist/effects/HeightfieldModule.js +129 -0
  206. package/dist/effects/HeightfieldModule.js.map +1 -0
  207. package/dist/effects/LightingModule.d.ts +34 -0
  208. package/dist/effects/LightingModule.d.ts.map +1 -0
  209. package/dist/effects/LightingModule.js +54 -0
  210. package/dist/effects/LightingModule.js.map +1 -0
  211. package/dist/effects/ParticleDiagnostics.d.ts +8 -0
  212. package/dist/effects/ParticleDiagnostics.d.ts.map +1 -1
  213. package/dist/effects/ParticleDiagnostics.js +3 -0
  214. package/dist/effects/ParticleDiagnostics.js.map +1 -1
  215. package/dist/effects/ParticleModule.d.ts +8 -0
  216. package/dist/effects/ParticleModule.d.ts.map +1 -1
  217. package/dist/effects/ParticleModule.js.map +1 -1
  218. package/dist/effects/ParticleRenderer.d.ts +20 -0
  219. package/dist/effects/ParticleRenderer.d.ts.map +1 -1
  220. package/dist/effects/ParticleRenderer.js +57 -7
  221. package/dist/effects/ParticleRenderer.js.map +1 -1
  222. package/dist/effects/ParticleSystem.d.ts +45 -1
  223. package/dist/effects/ParticleSystem.d.ts.map +1 -1
  224. package/dist/effects/ParticleSystem.js +373 -4
  225. package/dist/effects/ParticleSystem.js.map +1 -1
  226. package/dist/effects/ResidentGPUParticleRenderer.d.ts +158 -0
  227. package/dist/effects/ResidentGPUParticleRenderer.d.ts.map +1 -0
  228. package/dist/effects/ResidentGPUParticleRenderer.js +576 -0
  229. package/dist/effects/ResidentGPUParticleRenderer.js.map +1 -0
  230. package/dist/effects/SizeModule.d.ts +4 -0
  231. package/dist/effects/SizeModule.d.ts.map +1 -1
  232. package/dist/effects/SizeModule.js +16 -0
  233. package/dist/effects/SizeModule.js.map +1 -1
  234. package/dist/effects/SubEmitterModule.d.ts +61 -0
  235. package/dist/effects/SubEmitterModule.d.ts.map +1 -0
  236. package/dist/effects/SubEmitterModule.js +119 -0
  237. package/dist/effects/SubEmitterModule.js.map +1 -0
  238. package/dist/effects/TrailModule.d.ts +38 -0
  239. package/dist/effects/TrailModule.d.ts.map +1 -1
  240. package/dist/effects/TrailModule.js +95 -2
  241. package/dist/effects/TrailModule.js.map +1 -1
  242. package/dist/effects/TurbulenceModule.d.ts +43 -0
  243. package/dist/effects/TurbulenceModule.d.ts.map +1 -0
  244. package/dist/effects/TurbulenceModule.js +130 -0
  245. package/dist/effects/TurbulenceModule.js.map +1 -0
  246. package/dist/effects/index.d.ts +4 -0
  247. package/dist/effects/index.d.ts.map +1 -1
  248. package/dist/effects/index.js +4 -0
  249. package/dist/effects/index.js.map +1 -1
  250. package/dist/extension-scalar-atlas.d.ts +3 -0
  251. package/dist/extension-scalar-atlas.d.ts.map +1 -0
  252. package/dist/extension-scalar-atlas.js +2 -0
  253. package/dist/extension-scalar-atlas.js.map +1 -0
  254. package/dist/index.d.ts +58 -19
  255. package/dist/index.d.ts.map +1 -1
  256. package/dist/index.js +32 -10
  257. package/dist/index.js.map +1 -1
  258. package/dist/lean/LeanProductionRenderer.d.ts.map +1 -1
  259. package/dist/lean/LeanProductionRenderer.js +2 -2
  260. package/dist/lean/LeanProductionRenderer.js.map +1 -1
  261. package/dist/lean-core-runtime.d.ts +13 -0
  262. package/dist/lean-core-runtime.d.ts.map +1 -0
  263. package/dist/lean-core-runtime.js +10 -0
  264. package/dist/lean-core-runtime.js.map +1 -0
  265. package/dist/materials/MaterialExtensions.js +3 -3
  266. package/dist/materials/MaterialExtensions.js.map +1 -1
  267. package/dist/postprocess/NativeBloomPyramid.d.ts +44 -0
  268. package/dist/postprocess/NativeBloomPyramid.d.ts.map +1 -0
  269. package/dist/postprocess/NativeBloomPyramid.js +84 -0
  270. package/dist/postprocess/NativeBloomPyramid.js.map +1 -0
  271. package/dist/postprocess/NativeLdrEffectLuts.d.ts +10 -1
  272. package/dist/postprocess/NativeLdrEffectLuts.d.ts.map +1 -1
  273. package/dist/postprocess/NativeLdrEffectLuts.js +19 -2
  274. package/dist/postprocess/NativeLdrEffectLuts.js.map +1 -1
  275. package/dist/postprocess/index.d.ts +2 -0
  276. package/dist/postprocess/index.d.ts.map +1 -1
  277. package/dist/postprocess/index.js +1 -0
  278. package/dist/postprocess/index.js.map +1 -1
  279. package/dist/production-runtime/PBRHDRPipeline.d.ts +22 -0
  280. package/dist/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  281. package/dist/production-runtime/PBRHDRPipeline.js +125 -0
  282. package/dist/production-runtime/PBRHDRPipeline.js.map +1 -1
  283. package/dist/production-runtime/ProductionRendererTypes.d.ts +1 -0
  284. package/dist/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
  285. package/dist/production-runtime/ProductionRendererTypes.js.map +1 -1
  286. package/dist/production-runtime/ProductionRuntimeRenderer.d.ts +3 -0
  287. package/dist/production-runtime/ProductionRuntimeRenderer.d.ts.map +1 -1
  288. package/dist/production-runtime/ProductionRuntimeRenderer.js +8 -1
  289. package/dist/production-runtime/ProductionRuntimeRenderer.js.map +1 -1
  290. package/dist/production-runtime/ProductionWebGL2Renderer.d.ts +4 -0
  291. package/dist/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
  292. package/dist/production-runtime/ProductionWebGL2Renderer.js +15 -0
  293. package/dist/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
  294. package/dist/production-runtime/ProductionWebGPURenderer.d.ts +58 -0
  295. package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  296. package/dist/production-runtime/ProductionWebGPURenderer.js +127 -0
  297. package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  298. package/dist/production-runtime/framegraph/FrameGraph.d.ts +4 -2
  299. package/dist/production-runtime/framegraph/FrameGraph.d.ts.map +1 -1
  300. package/dist/production-runtime/framegraph/FrameGraph.js +62 -4
  301. package/dist/production-runtime/framegraph/FrameGraph.js.map +1 -1
  302. package/dist/production-runtime/framegraph/NativeFrameGraphBindings.d.ts +32 -0
  303. package/dist/production-runtime/framegraph/NativeFrameGraphBindings.d.ts.map +1 -0
  304. package/dist/production-runtime/framegraph/NativeFrameGraphBindings.js +111 -0
  305. package/dist/production-runtime/framegraph/NativeFrameGraphBindings.js.map +1 -0
  306. package/dist/production-runtime/framegraph/RenderPass.d.ts +23 -0
  307. package/dist/production-runtime/framegraph/RenderPass.d.ts.map +1 -1
  308. package/dist/production-runtime/framegraph/RenderPass.js +87 -1
  309. package/dist/production-runtime/framegraph/RenderPass.js.map +1 -1
  310. package/dist/production-runtime/index.d.ts +7 -4
  311. package/dist/production-runtime/index.d.ts.map +1 -1
  312. package/dist/production-runtime/index.js +4 -2
  313. package/dist/production-runtime/index.js.map +1 -1
  314. package/dist/production-runtime/passes/DepthPrepass.d.ts +18 -1
  315. package/dist/production-runtime/passes/DepthPrepass.d.ts.map +1 -1
  316. package/dist/production-runtime/passes/DepthPrepass.js +41 -2
  317. package/dist/production-runtime/passes/DepthPrepass.js.map +1 -1
  318. package/dist/production-runtime/passes/FramegraphTopology.d.ts +13 -0
  319. package/dist/production-runtime/passes/FramegraphTopology.d.ts.map +1 -0
  320. package/dist/production-runtime/passes/FramegraphTopology.js +59 -0
  321. package/dist/production-runtime/passes/FramegraphTopology.js.map +1 -0
  322. package/dist/production-runtime/passes/OpaquePass.d.ts +19 -1
  323. package/dist/production-runtime/passes/OpaquePass.d.ts.map +1 -1
  324. package/dist/production-runtime/passes/OpaquePass.js +43 -2
  325. package/dist/production-runtime/passes/OpaquePass.js.map +1 -1
  326. package/dist/production-runtime/passes/ShadowPass.d.ts +19 -1
  327. package/dist/production-runtime/passes/ShadowPass.d.ts.map +1 -1
  328. package/dist/production-runtime/passes/ShadowPass.js +45 -2
  329. package/dist/production-runtime/passes/ShadowPass.js.map +1 -1
  330. package/dist/production-runtime/passes/SkyboxPass.d.ts +17 -1
  331. package/dist/production-runtime/passes/SkyboxPass.d.ts.map +1 -1
  332. package/dist/production-runtime/passes/SkyboxPass.js +41 -2
  333. package/dist/production-runtime/passes/SkyboxPass.js.map +1 -1
  334. package/dist/production-runtime/passes/ToneMappingPass.d.ts +26 -1
  335. package/dist/production-runtime/passes/ToneMappingPass.d.ts.map +1 -1
  336. package/dist/production-runtime/passes/ToneMappingPass.js +62 -2
  337. package/dist/production-runtime/passes/ToneMappingPass.js.map +1 -1
  338. package/dist/production-runtime/passes/TransparentPass.d.ts +19 -1
  339. package/dist/production-runtime/passes/TransparentPass.d.ts.map +1 -1
  340. package/dist/production-runtime/passes/TransparentPass.js +47 -2
  341. package/dist/production-runtime/passes/TransparentPass.js.map +1 -1
  342. package/dist/reflection-surfaces.d.ts +5 -0
  343. package/dist/reflection-surfaces.d.ts.map +1 -0
  344. package/dist/reflection-surfaces.js +3 -0
  345. package/dist/reflection-surfaces.js.map +1 -0
  346. package/dist/shadows/CascadeHysteresis.d.ts +67 -0
  347. package/dist/shadows/CascadeHysteresis.d.ts.map +1 -0
  348. package/dist/shadows/CascadeHysteresis.js +104 -0
  349. package/dist/shadows/CascadeHysteresis.js.map +1 -0
  350. package/dist/shadows/ContactShadows.d.ts +52 -0
  351. package/dist/shadows/ContactShadows.d.ts.map +1 -1
  352. package/dist/shadows/ContactShadows.js +122 -0
  353. package/dist/shadows/ContactShadows.js.map +1 -1
  354. package/dist/shadows/SpotShadowMaps.d.ts +77 -0
  355. package/dist/shadows/SpotShadowMaps.d.ts.map +1 -0
  356. package/dist/shadows/SpotShadowMaps.js +106 -0
  357. package/dist/shadows/SpotShadowMaps.js.map +1 -0
  358. package/dist/webgpu/WebGPUPostProcess.d.ts +2 -0
  359. package/dist/webgpu/WebGPUPostProcess.d.ts.map +1 -1
  360. package/dist/webgpu/WebGPUPostProcess.js +1 -0
  361. package/dist/webgpu/WebGPUPostProcess.js.map +1 -1
  362. package/dist/webgpu/WebGPUPostShaders.d.ts +77 -0
  363. package/dist/webgpu/WebGPUPostShaders.d.ts.map +1 -0
  364. package/dist/webgpu/WebGPUPostShaders.js +261 -0
  365. package/dist/webgpu/WebGPUPostShaders.js.map +1 -0
  366. package/dist/webgpu/WebGPUTemporal.d.ts +17 -0
  367. package/dist/webgpu/WebGPUTemporal.d.ts.map +1 -0
  368. package/dist/webgpu/WebGPUTemporal.js +64 -0
  369. package/dist/webgpu/WebGPUTemporal.js.map +1 -0
  370. package/dist/webgpu.d.ts +6 -0
  371. package/dist/webgpu.d.ts.map +1 -1
  372. package/dist/webgpu.js +4 -0
  373. package/dist/webgpu.js.map +1 -1
  374. package/package.json +15 -3
@@ -0,0 +1,541 @@
1
+ /**
2
+ * B4 reflection math (muse3jsparity-PRD).
3
+ *
4
+ * Owns the planar-reflector math the `ReflectionSurfaces.ts` claim-boundary
5
+ * contract records as missing: mirror-camera construction, oblique
6
+ * near-plane clipping, glass thickness-tinted refraction parameters, water
7
+ * depth-tinted reflection/refraction parameters, and a package-level SSR
8
+ * ray-march pass descriptor with explicit resolution/step caps.
9
+ *
10
+ * Scope honesty: the plan/descriptor functions below are CPU-side math a
11
+ * renderer path consumes. The capture classes further down ARE renderer
12
+ * paths: they own real render targets, bind the oblique clip projection and
13
+ * the Beer-Lambert / depth-tint pixel composites, and expose sampled
14
+ * textures. ScreenSpaceReflectionPass consumes the SSR descriptor and shares
15
+ * the native renderer kernel; this remains package-level evidence.
16
+ */
17
+ import { Sampler } from "./Sampler.js";
18
+ import { Texture } from "./Texture.js";
19
+ import { TextureBinding } from "./TextureBinding.js";
20
+ import { TexturedUnlitMaterial } from "./TexturedUnlitMaterial.js";
21
+ /**
22
+ * Mirror-camera construction for a horizontal plane at height `planeY`.
23
+ * Follows the three.js Reflector convention: reflect eye/target/up across
24
+ * the plane and supply the reflection matrix for texture-matrix computation.
25
+ */
26
+ export function computePlanarMirrorCamera(eye, target, up, planeY) {
27
+ for (const [label, v] of [["eye", eye], ["target", target], ["up", up]]) {
28
+ if (v.length !== 3 || v.some((c) => !Number.isFinite(c))) {
29
+ throw new RangeError(`Planar mirror ${label} must contain three finite values.`);
30
+ }
31
+ }
32
+ if (!Number.isFinite(planeY))
33
+ throw new RangeError("Planar mirror planeY must be finite.");
34
+ const mirror = (p) => [p[0], 2 * planeY - p[1], p[2]];
35
+ // Reflection across y = planeY flips the Y basis vector.
36
+ const reflectionMatrix = [
37
+ 1, 0, 0, 0,
38
+ 0, -1, 0, 0,
39
+ 0, 0, 1, 0,
40
+ 0, 2 * planeY, 0, 1,
41
+ ];
42
+ // Oblique clip plane in mirrored space: keep geometry above the plane.
43
+ const clipPlane = [0, -1, 0, planeY + 0.001];
44
+ return { eye: mirror(eye), target: mirror(target), up: mirror(up), reflectionMatrix, clipPlane };
45
+ }
46
+ /**
47
+ * Oblique near-plane clip, following the three.js Reflector formulation
48
+ * (r185 semantics): the camera-space clip plane is scaled against the
49
+ * projection elements and spliced into elements [2]/[6]/[10]/[14]
50
+ * (column-major storage, WebGL transpose=false convention used across
51
+ * ForwardPass matrices). Pure matrix surgery; the renderer binds the result.
52
+ */
53
+ export function computeObliqueClipProjection(projectionMatrix, clipPlane, clipBias = 0) {
54
+ if (projectionMatrix.length !== 16 || projectionMatrix.some((c) => !Number.isFinite(c))) {
55
+ throw new RangeError("Oblique clip projection matrix must hold 16 finite numbers.");
56
+ }
57
+ if (clipPlane.length !== 4 || clipPlane.some((c) => !Number.isFinite(c))) {
58
+ throw new RangeError("Oblique clip plane must hold 4 finite numbers.");
59
+ }
60
+ if (!Number.isFinite(clipBias) || clipBias < 0)
61
+ throw new RangeError("Oblique clipBias must be finite and non-negative.");
62
+ const m = [...projectionMatrix];
63
+ const sign = (value) => (value >= 0 ? 1 : -1);
64
+ const qx = (sign(clipPlane[0]) + m[8]) / m[0];
65
+ const qy = (sign(clipPlane[1]) + m[9]) / m[5];
66
+ const qz = -1;
67
+ const qw = (1 + m[10]) / m[14];
68
+ if (![qx, qy, qz, qw].every(Number.isFinite)) {
69
+ throw new RangeError("Oblique clip projection is degenerate for this projection matrix.");
70
+ }
71
+ const dot = clipPlane[0] * qx + clipPlane[1] * qy + clipPlane[2] * qz + clipPlane[3] * qw;
72
+ if (Math.abs(dot) <= 1e-9)
73
+ throw new RangeError("Oblique clip plane is degenerate against the projection frustum.");
74
+ const scale = 2 / dot;
75
+ const scaled = [
76
+ clipPlane[0] * scale,
77
+ clipPlane[1] * scale,
78
+ clipPlane[2] * scale,
79
+ clipPlane[3] * scale,
80
+ ];
81
+ m[2] = scaled[0];
82
+ m[6] = scaled[1];
83
+ m[10] = scaled[2] + 1 - clipBias;
84
+ m[14] = scaled[3];
85
+ return { projectionMatrix: m, clipPlane };
86
+ }
87
+ /**
88
+ * Glass refractor parameters: thickness drives a Beer-Lambert transmittance
89
+ * proxy and the fetch offset scale; roughness drives the blur radius.
90
+ * Bounded: single-scatter proxy, not spectral volume.
91
+ */
92
+ export function resolveGlassRefractionParams(options) {
93
+ const thickness = options.thickness;
94
+ const roughness = options.roughness;
95
+ const absorption = options.absorption ?? 0.35;
96
+ const maxBlur = options.maxBlurTexels ?? 8;
97
+ if (!Number.isFinite(thickness) || thickness < 0)
98
+ throw new RangeError("Glass thickness must be finite and non-negative.");
99
+ if (!Number.isFinite(roughness) || roughness < 0 || roughness > 1)
100
+ throw new RangeError("Glass roughness must be in [0, 1].");
101
+ if (!Number.isFinite(absorption) || absorption < 0)
102
+ throw new RangeError("Glass absorption must be finite and non-negative.");
103
+ if (!Number.isFinite(maxBlur) || maxBlur <= 0)
104
+ throw new RangeError("Glass maxBlurTexels must be finite and positive.");
105
+ return {
106
+ offsetScale: Number((Math.min(thickness, 10) * 0.02).toFixed(6)),
107
+ transmittance: Number(Math.exp(-absorption * thickness).toFixed(6)),
108
+ blurRadiusTexels: Number((roughness * maxBlur).toFixed(4)),
109
+ diagnostic: "Thickness-tinted refraction proxy (single-scatter Beer-Lambert); not spectral volume.",
110
+ };
111
+ }
112
+ /**
113
+ * Water look parameters: shallow water shows refracted bed color, deep
114
+ * water absorbs toward the tint color and favors planar reflection.
115
+ * No true ocean spectra claim.
116
+ */
117
+ export function resolveWaterReflectionRefraction(options) {
118
+ const depth = options.depth;
119
+ if (!Number.isFinite(depth) || depth < 0)
120
+ throw new RangeError("Water depth must be finite and non-negative.");
121
+ const turbidity = options.turbidity ?? 0.5;
122
+ if (!Number.isFinite(turbidity) || turbidity < 0 || turbidity > 1)
123
+ throw new RangeError("Water turbidity must be in [0, 1].");
124
+ const shallow = options.shallowColor ?? [0.35, 0.55, 0.55];
125
+ const deep = options.deepColor ?? [0.02, 0.12, 0.2];
126
+ for (const [label, color] of [["shallowColor", shallow], ["deepColor", deep]]) {
127
+ if (color.length !== 3 || color.some((c) => !Number.isFinite(c) || c < 0 || c > 1)) {
128
+ throw new RangeError(`Water ${label} must contain three finite values in [0, 1].`);
129
+ }
130
+ }
131
+ const depthFactor = 1 - Math.exp(-depth * (0.35 + turbidity));
132
+ const mixAmount = Number(depthFactor.toFixed(6));
133
+ const depthTint = [
134
+ Number((shallow[0] + (deep[0] - shallow[0]) * mixAmount).toFixed(6)),
135
+ Number((shallow[1] + (deep[1] - shallow[1]) * mixAmount).toFixed(6)),
136
+ Number((shallow[2] + (deep[2] - shallow[2]) * mixAmount).toFixed(6)),
137
+ ];
138
+ return {
139
+ reflectionStrength: Number((0.25 + 0.65 * mixAmount).toFixed(4)),
140
+ refractionStrength: Number((0.9 * (1 - mixAmount) + 0.1).toFixed(4)),
141
+ depthTint,
142
+ diagnostic: "Depth-tinted planar look (no true ocean spectra); planar target binding stays a B4 renderer dependency.",
143
+ };
144
+ }
145
+ /**
146
+ * Column-major lookAt for a planar-mirror eye, matching the ForwardPass
147
+ * matrix convention (WebGL transpose=false storage).
148
+ */
149
+ export function computePlanarViewMatrix(eye, target, up) {
150
+ for (const [label, v] of [["eye", eye], ["target", target], ["up", up]]) {
151
+ if (v.length !== 3 || v.some((c) => !Number.isFinite(c))) {
152
+ throw new RangeError(`Planar view ${label} must contain three finite values.`);
153
+ }
154
+ }
155
+ const z = normalize3([eye[0] - target[0], eye[1] - target[1], eye[2] - target[2]]);
156
+ const x = normalize3(cross3(up, z));
157
+ const y = cross3(z, x);
158
+ return new Float32Array([
159
+ x[0], y[0], z[0], 0,
160
+ x[1], y[1], z[1], 0,
161
+ x[2], y[2], z[2], 0,
162
+ -dot3(x, eye), -dot3(y, eye), -dot3(z, eye), 1,
163
+ ]);
164
+ }
165
+ /** Column-major perspective matrix (WebGL transpose=false storage). */
166
+ export function createPlanarProjectionMatrix(fovYRadians, aspect, near, far) {
167
+ if (!Number.isFinite(fovYRadians) || fovYRadians <= 0 || fovYRadians >= Math.PI) {
168
+ throw new RangeError("Planar projection fovY must be in (0, pi).");
169
+ }
170
+ if (!Number.isFinite(aspect) || aspect <= 0)
171
+ throw new RangeError("Planar projection aspect must be finite and positive.");
172
+ if (!Number.isFinite(near) || near <= 0)
173
+ throw new RangeError("Planar projection near must be finite and positive.");
174
+ if (!Number.isFinite(far) || far <= near)
175
+ throw new RangeError("Planar projection far must be greater than near.");
176
+ const f = 1 / Math.tan(fovYRadians / 2);
177
+ const range = 1 / (near - far);
178
+ return new Float32Array([
179
+ f / aspect, 0, 0, 0,
180
+ 0, f, 0, 0,
181
+ 0, 0, (far + near) * range, -1,
182
+ 0, 0, 2 * far * near * range, 0,
183
+ ]);
184
+ }
185
+ /** Column-major 4x4 product `out = a * b`. */
186
+ export function multiplyPlanarMatrices(a, b) {
187
+ if (a.length !== 16 || b.length !== 16)
188
+ throw new RangeError("Planar matrix factors must hold 16 numbers each.");
189
+ const out = new Float32Array(16);
190
+ for (let column = 0; column < 4; column += 1) {
191
+ for (let row = 0; row < 4; row += 1) {
192
+ let value = 0;
193
+ for (let index = 0; index < 4; index += 1)
194
+ value += a[index * 4 + row] * b[column * 4 + index];
195
+ out[column * 4 + row] = value;
196
+ }
197
+ }
198
+ return out;
199
+ }
200
+ /**
201
+ * Renderer-owned mirror path for one horizontal reflector plane.
202
+ *
203
+ * Owns the mirror render target, binds the oblique near-plane clip
204
+ * projection for every capture, and exposes the mirrored scene color as a
205
+ * real 2D texture + `u_planarReflectionTexture` binding that reflector
206
+ * materials sample. The caller renders the scene (minus the reflector
207
+ * itself) through the frame's view-projection matrix.
208
+ */
209
+ export class PlanarReflectionCapture {
210
+ planeY;
211
+ resolution;
212
+ clipBias;
213
+ device;
214
+ target;
215
+ clearColor;
216
+ label;
217
+ texture = null;
218
+ previousPixels = null;
219
+ revision = 0;
220
+ disposed = false;
221
+ constructor(device, planeY, options = {}) {
222
+ if (!device)
223
+ throw new Error("Planar reflection capture requires a render device.");
224
+ if (!Number.isFinite(planeY))
225
+ throw new RangeError("Planar reflection planeY must be finite.");
226
+ this.device = device;
227
+ this.planeY = planeY;
228
+ this.resolution = positiveInteger(options.resolution ?? 128, "planar reflection resolution");
229
+ this.clipBias = options.clipBias ?? 0;
230
+ if (!Number.isFinite(this.clipBias) || this.clipBias < 0) {
231
+ throw new RangeError("Planar reflection clipBias must be finite and non-negative.");
232
+ }
233
+ this.clearColor = validateClearColor(options.clearColor ?? [0, 0, 0, 1]);
234
+ this.label = options.label ?? `planar-reflector-y${planeY}`;
235
+ this.target = device.createRenderTarget({
236
+ width: this.resolution,
237
+ height: this.resolution,
238
+ label: `${this.label}-mirror-target`,
239
+ format: "rgba8",
240
+ depth: "renderbuffer",
241
+ sampleCount: 1,
242
+ });
243
+ }
244
+ computeFrame(eye, target, up, projectionMatrix) {
245
+ this.assertAlive();
246
+ if (projectionMatrix.length !== 16)
247
+ throw new RangeError("Planar reflection projection matrix must hold 16 numbers.");
248
+ const mirror = computePlanarMirrorCamera(eye, target, up, this.planeY);
249
+ const oblique = computeObliqueClipProjection(projectionMatrix, mirror.clipPlane, this.clipBias);
250
+ const viewMatrix = computePlanarViewMatrix(mirror.eye, mirror.target, mirror.up);
251
+ return {
252
+ mirror,
253
+ oblique,
254
+ viewMatrix,
255
+ viewProjectionMatrix: multiplyPlanarMatrices(Float32Array.from(oblique.projectionMatrix), viewMatrix),
256
+ renderTarget: this.target,
257
+ planeY: this.planeY,
258
+ };
259
+ }
260
+ capture(renderScene, eye, target, up, projectionMatrix) {
261
+ const frame = this.computeFrame(eye, target, up, projectionMatrix);
262
+ this.device.beginFrame(this.resolution, this.resolution);
263
+ this.device.setRenderTarget(frame.renderTarget);
264
+ if (this.device.clearRenderTarget)
265
+ this.device.clearRenderTarget(this.clearColor);
266
+ else
267
+ this.device.clear(this.clearColor);
268
+ this.device.endFrame();
269
+ renderScene(frame);
270
+ this.device.setRenderTarget(frame.renderTarget);
271
+ const pixels = this.device.readPixels(0, 0, this.resolution, this.resolution);
272
+ this.device.setRenderTarget(null);
273
+ const pixelHash = hashPixels(pixels);
274
+ const changedPixelCount = this.previousPixels ? countChangedPixels(this.previousPixels, pixels) : pixels.length / 4;
275
+ this.previousPixels = new Uint8Array(pixels);
276
+ this.revision += 1;
277
+ this.texture?.dispose();
278
+ const texture = new Texture({
279
+ width: this.resolution,
280
+ height: this.resolution,
281
+ dimension: "2d",
282
+ format: "rgba8",
283
+ colorSpace: "srgb",
284
+ label: `${this.label}-mirror-r${this.revision}`,
285
+ data: new Uint8Array(pixels),
286
+ });
287
+ this.texture = texture;
288
+ const binding = new TextureBinding({
289
+ name: "u_planarReflectionTexture",
290
+ texture,
291
+ sampler: new Sampler({ minFilter: "linear", magFilter: "linear", addressU: "clamp-to-edge", addressV: "clamp-to-edge" }),
292
+ required: true,
293
+ ready: true,
294
+ expectedColorSpace: "srgb",
295
+ expectedDimension: "2d",
296
+ });
297
+ return {
298
+ planeY: this.planeY,
299
+ frame,
300
+ texture,
301
+ binding,
302
+ revision: this.revision,
303
+ pixelHash,
304
+ changedPixelCount,
305
+ capturedPixelCount: this.resolution * this.resolution,
306
+ };
307
+ }
308
+ /** Reflector floor material sampling the latest mirror capture texture. */
309
+ createReflectorMaterial(name = `${this.label}-reflector-material`) {
310
+ this.assertAlive();
311
+ if (!this.texture)
312
+ throw new Error(`Planar reflection capture ${this.label} has no capture yet; call capture() before creating the reflector material.`);
313
+ return new TexturedUnlitMaterial({ name, texture: this.texture });
314
+ }
315
+ dispose() {
316
+ if (this.disposed)
317
+ return;
318
+ this.disposed = true;
319
+ this.texture?.dispose();
320
+ this.target.dispose();
321
+ }
322
+ assertAlive() {
323
+ if (this.disposed)
324
+ throw new Error(`Planar reflection capture ${this.label} is disposed.`);
325
+ }
326
+ }
327
+ /**
328
+ * Renderer-owned glass path: captures scene color into a real target, then
329
+ * applies the thickness-driven Beer-Lambert transmittance and the
330
+ * roughness-driven scene-color blur fetch on the captured pixels. The
331
+ * blurred+tinted output is exposed as `u_glassRefractionTexture`.
332
+ */
333
+ export class GlassRefractionCapture {
334
+ resolution;
335
+ device;
336
+ target;
337
+ absorption;
338
+ maxBlurTexels;
339
+ clearColor;
340
+ label;
341
+ sceneTexture = null;
342
+ outputTexture = null;
343
+ revision = 0;
344
+ disposed = false;
345
+ constructor(device, options = {}) {
346
+ if (!device)
347
+ throw new Error("Glass refraction capture requires a render device.");
348
+ this.device = device;
349
+ this.resolution = positiveInteger(options.resolution ?? 128, "glass refraction resolution");
350
+ this.absorption = options.absorption ?? 0.35;
351
+ if (!Number.isFinite(this.absorption) || this.absorption < 0) {
352
+ throw new RangeError("Glass capture absorption must be finite and non-negative.");
353
+ }
354
+ this.maxBlurTexels = options.maxBlurTexels ?? 8;
355
+ if (!Number.isFinite(this.maxBlurTexels) || this.maxBlurTexels <= 0) {
356
+ throw new RangeError("Glass capture maxBlurTexels must be finite and positive.");
357
+ }
358
+ this.clearColor = validateClearColor(options.clearColor ?? [0, 0, 0, 1]);
359
+ this.label = options.label ?? "refractor-glass";
360
+ this.target = device.createRenderTarget({
361
+ width: this.resolution,
362
+ height: this.resolution,
363
+ label: `${this.label}-scene-color-target`,
364
+ format: "rgba8",
365
+ depth: "renderbuffer",
366
+ sampleCount: 1,
367
+ });
368
+ }
369
+ capture(renderScene, options) {
370
+ this.assertAlive();
371
+ const params = resolveGlassRefractionParams({
372
+ thickness: options.thickness,
373
+ roughness: options.roughness,
374
+ absorption: this.absorption,
375
+ maxBlurTexels: this.maxBlurTexels,
376
+ });
377
+ this.device.beginFrame(this.resolution, this.resolution);
378
+ this.device.setRenderTarget(this.target);
379
+ if (this.device.clearRenderTarget)
380
+ this.device.clearRenderTarget(this.clearColor);
381
+ else
382
+ this.device.clear(this.clearColor);
383
+ this.device.endFrame();
384
+ renderScene(this.target);
385
+ this.device.setRenderTarget(this.target);
386
+ const scenePixels = this.device.readPixels(0, 0, this.resolution, this.resolution);
387
+ this.device.setRenderTarget(null);
388
+ const blurred = boxBlurPixels(scenePixels, this.resolution, this.resolution, Math.round(params.blurRadiusTexels));
389
+ const output = applyTransmittance(blurred, params.transmittance);
390
+ const tintedPixelCount = countChangedPixels(scenePixels, output);
391
+ this.revision += 1;
392
+ this.sceneTexture?.dispose();
393
+ this.outputTexture?.dispose();
394
+ const sceneTexture = new Texture({
395
+ width: this.resolution, height: this.resolution, dimension: "2d", format: "rgba8",
396
+ colorSpace: "srgb", label: `${this.label}-scene-r${this.revision}`, data: new Uint8Array(scenePixels),
397
+ });
398
+ const texture = new Texture({
399
+ width: this.resolution, height: this.resolution, dimension: "2d", format: "rgba8",
400
+ colorSpace: "srgb", label: `${this.label}-refraction-r${this.revision}`, data: output,
401
+ });
402
+ this.sceneTexture = sceneTexture;
403
+ this.outputTexture = texture;
404
+ const binding = new TextureBinding({
405
+ name: "u_glassRefractionTexture",
406
+ texture,
407
+ sampler: new Sampler({ minFilter: "linear", magFilter: "linear", addressU: "clamp-to-edge", addressV: "clamp-to-edge" }),
408
+ required: true,
409
+ ready: true,
410
+ expectedColorSpace: "srgb",
411
+ expectedDimension: "2d",
412
+ });
413
+ return {
414
+ params, thickness: options.thickness, roughness: options.roughness,
415
+ sceneTexture, texture, binding, revision: this.revision,
416
+ pixelHash: hashPixels(output), tintedPixelCount, capturedPixelCount: this.resolution * this.resolution,
417
+ };
418
+ }
419
+ dispose() {
420
+ if (this.disposed)
421
+ return;
422
+ this.disposed = true;
423
+ this.sceneTexture?.dispose();
424
+ this.outputTexture?.dispose();
425
+ this.target.dispose();
426
+ }
427
+ assertAlive() {
428
+ if (this.disposed)
429
+ throw new Error(`Glass refraction capture ${this.label} is disposed.`);
430
+ }
431
+ }
432
+ function positiveInteger(value, label) {
433
+ if (!Number.isInteger(value) || value <= 0)
434
+ throw new RangeError(`${label} must be a positive integer.`);
435
+ return value;
436
+ }
437
+ function validateClearColor(value) {
438
+ if (value.length !== 4 || !value.every((channel) => Number.isFinite(channel) && channel >= 0 && channel <= 1)) {
439
+ throw new RangeError("Reflection clear color must contain four finite values in [0, 1].");
440
+ }
441
+ return value;
442
+ }
443
+ function normalize3(value) {
444
+ const length = Math.hypot(value[0], value[1], value[2]);
445
+ if (length <= 1e-8)
446
+ throw new Error("Planar view direction vectors must not be parallel.");
447
+ return [value[0] / length, value[1] / length, value[2] / length];
448
+ }
449
+ function cross3(a, b) {
450
+ return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
451
+ }
452
+ function dot3(a, b) {
453
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
454
+ }
455
+ function hashPixels(pixels) {
456
+ let hash = 0x811c9dc5;
457
+ for (const value of pixels) {
458
+ hash ^= value;
459
+ hash = Math.imul(hash, 0x01000193);
460
+ }
461
+ return (hash >>> 0).toString(16).padStart(8, "0");
462
+ }
463
+ function countChangedPixels(first, second, threshold = 2) {
464
+ let changed = 0;
465
+ for (let offset = 0; offset < first.length; offset += 4) {
466
+ if (Math.abs((first[offset] ?? 0) - (second[offset] ?? 0)) > threshold ||
467
+ Math.abs((first[offset + 1] ?? 0) - (second[offset + 1] ?? 0)) > threshold ||
468
+ Math.abs((first[offset + 2] ?? 0) - (second[offset + 2] ?? 0)) > threshold)
469
+ changed += 1;
470
+ }
471
+ return changed;
472
+ }
473
+ function boxBlurPixels(pixels, width, height, radius) {
474
+ if (radius <= 0)
475
+ return new Uint8Array(pixels);
476
+ const output = new Uint8Array(pixels.length);
477
+ for (let y = 0; y < height; y += 1) {
478
+ for (let x = 0; x < width; x += 1) {
479
+ let r = 0, g = 0, b = 0, a = 0, count = 0;
480
+ for (let ky = -radius; ky <= radius; ky += 1) {
481
+ for (let kx = -radius; kx <= radius; kx += 1) {
482
+ const sx = Math.min(width - 1, Math.max(0, x + kx));
483
+ const sy = Math.min(height - 1, Math.max(0, y + ky));
484
+ const offset = (sy * width + sx) * 4;
485
+ r += pixels[offset] ?? 0;
486
+ g += pixels[offset + 1] ?? 0;
487
+ b += pixels[offset + 2] ?? 0;
488
+ a += pixels[offset + 3] ?? 0;
489
+ count += 1;
490
+ }
491
+ }
492
+ const offset = (y * width + x) * 4;
493
+ output[offset] = Math.round(r / count);
494
+ output[offset + 1] = Math.round(g / count);
495
+ output[offset + 2] = Math.round(b / count);
496
+ output[offset + 3] = Math.round(a / count);
497
+ }
498
+ }
499
+ return output;
500
+ }
501
+ function applyTransmittance(pixels, transmittance) {
502
+ const output = new Uint8Array(pixels.length);
503
+ for (let offset = 0; offset < pixels.length; offset += 4) {
504
+ output[offset] = Math.round((pixels[offset] ?? 0) * transmittance);
505
+ output[offset + 1] = Math.round((pixels[offset + 1] ?? 0) * transmittance);
506
+ output[offset + 2] = Math.round((pixels[offset + 2] ?? 0) * transmittance);
507
+ output[offset + 3] = pixels[offset + 3] ?? 255;
508
+ }
509
+ return output;
510
+ }
511
+ /** SSR ray-march pass descriptor: package-level only, explicit caps. */
512
+ export function createSsrPassDescriptor(options = { width: 0, height: 0 }) {
513
+ const resolutionScale = options.resolutionScale ?? 0.5;
514
+ const maxSteps = options.maxSteps ?? 32;
515
+ const maxDistance = options.maxDistance ?? 25;
516
+ const thickness = options.thickness ?? 0.2;
517
+ if (!Number.isInteger(options.width) || options.width <= 0)
518
+ throw new RangeError("SSR width must be a positive integer.");
519
+ if (!Number.isInteger(options.height) || options.height <= 0)
520
+ throw new RangeError("SSR height must be a positive integer.");
521
+ if (!Number.isFinite(resolutionScale) || resolutionScale <= 0 || resolutionScale > 1) {
522
+ throw new RangeError("SSR resolutionScale must be in (0, 1].");
523
+ }
524
+ if (!Number.isInteger(maxSteps) || maxSteps < 4 || maxSteps > 64) {
525
+ throw new RangeError("SSR maxSteps must be an integer in [4, 64].");
526
+ }
527
+ if (!Number.isFinite(maxDistance) || maxDistance <= 0)
528
+ throw new RangeError("SSR maxDistance must be finite and positive.");
529
+ if (!Number.isFinite(thickness) || thickness <= 0)
530
+ throw new RangeError("SSR thickness must be finite and positive.");
531
+ return {
532
+ enabled: true,
533
+ resolutionScale,
534
+ maxSteps,
535
+ maxDistance,
536
+ thickness,
537
+ packageLevel: true,
538
+ diagnostic: "Validated native ScreenSpaceReflectionPass configuration; descriptor alone is not pixel evidence.",
539
+ };
540
+ }
541
+ //# sourceMappingURL=PlanarReflection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanarReflection.js","sourceRoot":"","sources":["../../../../packages/rendering/src/PlanarReflection.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,21 @@ export type ToneMappingOperator = "linear" | "reinhard" | "aces" | "filmic" | "u
4
4
  export type PostProcessColorSpace = "linear" | "srgb";
5
5
  export type DepthTextureFormat = "depth24";
6
6
  export type ToneMappingPresetName = "natural" | "cinematic" | "vibrant" | "realistic" | "stylized";
7
+ export type BloomQualityOption = "performance" | "balanced" | "cinematic";
7
8
  export interface BloomOptions {
8
9
  readonly threshold?: number;
9
10
  readonly intensity?: number;
10
11
  readonly radius?: number;
12
+ /**
13
+ * Native bloom path only (muse3jsparity-PRD A1): `performance` keeps the
14
+ * legacy single-scale ping-pong; `balanced`/`cinematic` use the 5/3-mip
15
+ * pyramid (cinematic implies half-float targets). CPU kernels ignore it.
16
+ */
17
+ readonly quality?: BloomQualityOption;
18
+ /** HDR float bright-extract knee width in [0, 0.5]; 0 keeps the hard step. */
19
+ readonly softKnee?: number;
20
+ /** LDR composite highlight shoulder in [0, 1]; 0 keeps the legacy clamp. */
21
+ readonly shoulder?: number;
11
22
  }
12
23
  export interface FXAAOptions {
13
24
  readonly edgeThreshold?: number;
@@ -155,6 +166,8 @@ export interface VolumetricLightOptions {
155
166
  readonly exposure?: number;
156
167
  readonly samples?: number;
157
168
  readonly occlusionThreshold?: number;
169
+ /** A5 ordered-dither output (one LSB); default false preserves legacy bytes. */
170
+ readonly dither?: boolean;
158
171
  }
159
172
  export interface VolumetricLightResult {
160
173
  readonly width: number;
@@ -222,6 +235,9 @@ export interface SSRResult {
222
235
  readonly maxDistance: number;
223
236
  }
224
237
  export interface SSROptions {
238
+ /** Exact projection or view-projection; native SSR reconstructs in its coordinate space. */
239
+ readonly projection?: Float32Array;
240
+ readonly inverseProjection?: Float32Array;
225
241
  readonly depth?: DepthTextureBinding;
226
242
  readonly intensity?: number;
227
243
  readonly maxDistance?: number;
@@ -435,6 +451,22 @@ export declare function extractBloomBrightPixels(pixels: Uint8Array, width: numb
435
451
  readonly brightPixelCount: number;
436
452
  readonly brightEnergy: number;
437
453
  };
454
+ /**
455
+ * Separable Gaussian weights shared by the CPU bloom kernels and the native
456
+ * WebGL2 `webgl2-bloom-blur` program, so the byte kernels remain the exact
457
+ * mirror of the device pass.
458
+ *
459
+ * The 3.0.1 parity contract (muse3jsparity-PRD, native bloom item 2) upgraded
460
+ * the native pass to a separable Gaussian; the CPU mirror was left as a uniform
461
+ * box average, which made the native-vs-CPU equality proof in
462
+ * tests/browser/native-outline-pixel.spec.ts unsatisfiable. `sigma`,
463
+ * `coefficient` and the truncation at 16 taps are the same expressions the
464
+ * shader uses.
465
+ */
466
+ export declare function bloomBlurWeights(radius: number): {
467
+ readonly weights: readonly number[];
468
+ readonly weightSum: number;
469
+ };
438
470
  export declare function blurBloomPixelsHorizontal(pixels: Uint8Array, width: number, height: number, radius: number): Uint8Array;
439
471
  export declare function blurBloomPixelsVertical(pixels: Uint8Array, width: number, height: number, radius: number): Uint8Array;
440
472
  export declare function compositeBloomPixels(sourcePixels: Uint8Array, blurredPixels: Uint8Array, width: number, height: number, intensity: number, brightPixels?: Uint8Array): {