@aura3d/rendering 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1877) hide show
  1. package/dist/BlendModes.d.ts +34 -0
  2. package/dist/BlendModes.d.ts.map +1 -0
  3. package/dist/BlendModes.js +42 -0
  4. package/dist/BlendModes.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/DepthPass.d.ts +18 -0
  9. package/dist/DepthPass.d.ts.map +1 -1
  10. package/dist/DepthPass.js +103 -20
  11. package/dist/DepthPass.js.map +1 -1
  12. package/dist/EnvironmentBackgroundPass.d.ts +7 -0
  13. package/dist/EnvironmentBackgroundPass.d.ts.map +1 -1
  14. package/dist/EnvironmentBackgroundPass.js +39 -14
  15. package/dist/EnvironmentBackgroundPass.js.map +1 -1
  16. package/dist/EnvironmentMapResources.d.ts +1 -1
  17. package/dist/EnvironmentMapResources.d.ts.map +1 -1
  18. package/dist/EnvironmentMapResources.js +19 -8
  19. package/dist/EnvironmentMapResources.js.map +1 -1
  20. package/dist/EnvironmentPlatform.d.ts +6 -0
  21. package/dist/EnvironmentPlatform.d.ts.map +1 -1
  22. package/dist/EnvironmentPlatform.js +3 -1
  23. package/dist/EnvironmentPlatform.js.map +1 -1
  24. package/dist/EnvironmentPreset.d.ts +7 -0
  25. package/dist/EnvironmentPreset.d.ts.map +1 -1
  26. package/dist/EnvironmentPreset.js +11 -11
  27. package/dist/EnvironmentPreset.js.map +1 -1
  28. package/dist/EnvironmentPresetPack.d.ts +16 -0
  29. package/dist/EnvironmentPresetPack.d.ts.map +1 -1
  30. package/dist/EnvironmentPresetPack.js +28 -0
  31. package/dist/EnvironmentPresetPack.js.map +1 -1
  32. package/dist/ExtensionScalarAtlas.d.ts +18 -0
  33. package/dist/ExtensionScalarAtlas.d.ts.map +1 -0
  34. package/dist/ExtensionScalarAtlas.js +107 -0
  35. package/dist/ExtensionScalarAtlas.js.map +1 -0
  36. package/dist/ExternalParityRenderPreset.d.ts +15 -1
  37. package/dist/ExternalParityRenderPreset.d.ts.map +1 -1
  38. package/dist/ExternalParityRenderPreset.js +52 -7
  39. package/dist/ExternalParityRenderPreset.js.map +1 -1
  40. package/dist/ForwardPass.d.ts +240 -50
  41. package/dist/ForwardPass.d.ts.map +1 -1
  42. package/dist/ForwardPass.js +845 -866
  43. package/dist/ForwardPass.js.map +1 -1
  44. package/dist/Geometry.d.ts +44 -1
  45. package/dist/Geometry.d.ts.map +1 -1
  46. package/dist/Geometry.js +174 -24
  47. package/dist/Geometry.js.map +1 -1
  48. package/dist/InstancedPBRMaterial.d.ts +5 -0
  49. package/dist/InstancedPBRMaterial.d.ts.map +1 -1
  50. package/dist/InstancedPBRMaterial.js +7 -0
  51. package/dist/InstancedPBRMaterial.js.map +1 -1
  52. package/dist/LeanWebGL2Device.d.ts +265 -0
  53. package/dist/LeanWebGL2Device.d.ts.map +1 -0
  54. package/dist/LeanWebGL2Device.js +4001 -0
  55. package/dist/LeanWebGL2Device.js.map +1 -0
  56. package/dist/LightCollector.d.ts +8 -0
  57. package/dist/LightCollector.d.ts.map +1 -1
  58. package/dist/LightCollector.js +1 -1
  59. package/dist/LightCollector.js.map +1 -1
  60. package/dist/LightUniforms.d.ts +78 -0
  61. package/dist/LightUniforms.d.ts.map +1 -1
  62. package/dist/LightUniforms.js +100 -0
  63. package/dist/LightUniforms.js.map +1 -1
  64. package/dist/Material.d.ts +15 -0
  65. package/dist/Material.d.ts.map +1 -1
  66. package/dist/Material.js +19 -2
  67. package/dist/Material.js.map +1 -1
  68. package/dist/MaterialBinding.d.ts +10 -0
  69. package/dist/MaterialBinding.d.ts.map +1 -1
  70. package/dist/MaterialBinding.js +92 -2
  71. package/dist/MaterialBinding.js.map +1 -1
  72. package/dist/MaterialPresets.d.ts +60 -0
  73. package/dist/MaterialPresets.d.ts.map +1 -1
  74. package/dist/MaterialPresets.js +212 -0
  75. package/dist/MaterialPresets.js.map +1 -1
  76. package/dist/NormalMappedPBRMaterial.d.ts +5 -0
  77. package/dist/NormalMappedPBRMaterial.d.ts.map +1 -1
  78. package/dist/NormalMappedPBRMaterial.js +7 -0
  79. package/dist/NormalMappedPBRMaterial.js.map +1 -1
  80. package/dist/OceanSurface.d.ts +8 -0
  81. package/dist/OceanSurface.d.ts.map +1 -1
  82. package/dist/OceanSurface.js +10 -79
  83. package/dist/OceanSurface.js.map +1 -1
  84. package/dist/PBRLightingDefaults.d.ts +8 -0
  85. package/dist/PBRLightingDefaults.d.ts.map +1 -1
  86. package/dist/PBRLightingDefaults.js +8 -0
  87. package/dist/PBRLightingDefaults.js.map +1 -1
  88. package/dist/PBRMaterial.d.ts +5 -0
  89. package/dist/PBRMaterial.d.ts.map +1 -1
  90. package/dist/PBRMaterial.js +7 -0
  91. package/dist/PBRMaterial.js.map +1 -1
  92. package/dist/PlanarReflection.d.ts +2 -2
  93. package/dist/PlanarReflection.js +3 -3
  94. package/dist/PlanarReflection.js.map +1 -1
  95. package/dist/PostProcessPass.d.ts +8 -473
  96. package/dist/PostProcessPass.d.ts.map +1 -1
  97. package/dist/PostProcessPass.js +6 -1984
  98. package/dist/PostProcessPass.js.map +1 -1
  99. package/dist/ProceduralMaterialTextures.d.ts +28 -0
  100. package/dist/ProceduralMaterialTextures.d.ts.map +1 -0
  101. package/dist/ProceduralMaterialTextures.js +217 -0
  102. package/dist/ProceduralMaterialTextures.js.map +1 -0
  103. package/dist/ProjectionMath.d.ts +3 -0
  104. package/dist/ProjectionMath.d.ts.map +1 -0
  105. package/dist/ProjectionMath.js +26 -0
  106. package/dist/ProjectionMath.js.map +1 -0
  107. package/dist/ReflectionProbe.d.ts.map +1 -1
  108. package/dist/ReflectionProbe.js +4 -1
  109. package/dist/ReflectionProbe.js.map +1 -1
  110. package/dist/ReflectionSurfaces.d.ts +4 -1
  111. package/dist/ReflectionSurfaces.d.ts.map +1 -1
  112. package/dist/ReflectionSurfaces.js +10 -1
  113. package/dist/ReflectionSurfaces.js.map +1 -1
  114. package/dist/RenderBackend.d.ts +2 -0
  115. package/dist/RenderBackend.d.ts.map +1 -1
  116. package/dist/RenderBackend.js +3 -0
  117. package/dist/RenderBackend.js.map +1 -1
  118. package/dist/RenderDevice.d.ts +97 -5
  119. package/dist/RenderDevice.d.ts.map +1 -1
  120. package/dist/RenderDevice.js +166 -9
  121. package/dist/RenderDevice.js.map +1 -1
  122. package/dist/RenderGraph.d.ts.map +1 -1
  123. package/dist/RenderGraph.js +17 -0
  124. package/dist/RenderGraph.js.map +1 -1
  125. package/dist/RenderPass.d.ts +7 -0
  126. package/dist/RenderPass.d.ts.map +1 -1
  127. package/dist/RenderPass.js.map +1 -1
  128. package/dist/RenderPipeline.d.ts +5 -0
  129. package/dist/RenderPipeline.d.ts.map +1 -1
  130. package/dist/RenderPipeline.js +6 -0
  131. package/dist/RenderPipeline.js.map +1 -1
  132. package/dist/Renderer.d.ts +270 -66
  133. package/dist/Renderer.d.ts.map +1 -1
  134. package/dist/Renderer.js +970 -1249
  135. package/dist/Renderer.js.map +1 -1
  136. package/dist/RendererPostprocessPlan.d.ts +20 -3
  137. package/dist/RendererPostprocessPlan.d.ts.map +1 -1
  138. package/dist/RendererPostprocessPlan.js +32 -4
  139. package/dist/RendererPostprocessPlan.js.map +1 -1
  140. package/dist/RendererTiming.d.ts +27 -0
  141. package/dist/RendererTiming.d.ts.map +1 -1
  142. package/dist/RendererTiming.js +179 -12
  143. package/dist/RendererTiming.js.map +1 -1
  144. package/dist/ResolutionGovernor.d.ts +56 -0
  145. package/dist/ResolutionGovernor.d.ts.map +1 -0
  146. package/dist/ResolutionGovernor.js +87 -0
  147. package/dist/ResolutionGovernor.js.map +1 -0
  148. package/dist/Sampler.d.ts +34 -1
  149. package/dist/Sampler.d.ts.map +1 -1
  150. package/dist/Sampler.js +55 -2
  151. package/dist/Sampler.js.map +1 -1
  152. package/dist/ScreenSpaceReflectionPass.d.ts +43 -0
  153. package/dist/ScreenSpaceReflectionPass.d.ts.map +1 -0
  154. package/dist/ScreenSpaceReflectionPass.js +58 -0
  155. package/dist/ScreenSpaceReflectionPass.js.map +1 -0
  156. package/dist/ShaderLibrary.d.ts.map +1 -1
  157. package/dist/ShaderLibrary.js +183 -207
  158. package/dist/ShaderLibrary.js.map +1 -1
  159. package/dist/ShaderLibraryCore.d.ts +3 -0
  160. package/dist/ShaderLibraryCore.d.ts.map +1 -1
  161. package/dist/ShaderLibraryCore.js +6 -2
  162. package/dist/ShaderLibraryCore.js.map +1 -1
  163. package/dist/ShaderModule.d.ts +7 -1
  164. package/dist/ShaderModule.d.ts.map +1 -1
  165. package/dist/ShaderModule.js +20 -5
  166. package/dist/ShaderModule.js.map +1 -1
  167. package/dist/ShadowPass.d.ts.map +1 -1
  168. package/dist/ShadowPass.js +14 -7
  169. package/dist/ShadowPass.js.map +1 -1
  170. package/dist/SkinnedLitMaterial.d.ts +5 -0
  171. package/dist/SkinnedLitMaterial.d.ts.map +1 -1
  172. package/dist/SkinnedLitMaterial.js +13 -0
  173. package/dist/SkinnedLitMaterial.js.map +1 -1
  174. package/dist/SkinningBounds.d.ts +18 -0
  175. package/dist/SkinningBounds.d.ts.map +1 -1
  176. package/dist/SkinningBounds.js +78 -0
  177. package/dist/SkinningBounds.js.map +1 -1
  178. package/dist/SkinningPaletteTextureCache.d.ts +117 -0
  179. package/dist/SkinningPaletteTextureCache.d.ts.map +1 -0
  180. package/dist/SkinningPaletteTextureCache.js +205 -0
  181. package/dist/SkinningPaletteTextureCache.js.map +1 -0
  182. package/dist/SkinningUniforms.d.ts +56 -0
  183. package/dist/SkinningUniforms.d.ts.map +1 -0
  184. package/dist/SkinningUniforms.js +262 -0
  185. package/dist/SkinningUniforms.js.map +1 -0
  186. package/dist/TemporalHistory.d.ts +70 -0
  187. package/dist/TemporalHistory.d.ts.map +1 -0
  188. package/dist/TemporalHistory.js +218 -0
  189. package/dist/TemporalHistory.js.map +1 -0
  190. package/dist/TemporalMath.d.ts +3 -0
  191. package/dist/TemporalMath.d.ts.map +1 -0
  192. package/dist/TemporalMath.js +9 -0
  193. package/dist/TemporalMath.js.map +1 -0
  194. package/dist/TerrainHeightfield.d.ts +12 -0
  195. package/dist/TerrainHeightfield.d.ts.map +1 -1
  196. package/dist/TerrainHeightfield.js +29 -6
  197. package/dist/TerrainHeightfield.js.map +1 -1
  198. package/dist/TerrainTiles.d.ts +40 -10
  199. package/dist/TerrainTiles.d.ts.map +1 -1
  200. package/dist/TerrainTiles.js +18 -57
  201. package/dist/TerrainTiles.js.map +1 -1
  202. package/dist/Texture.d.ts +47 -2
  203. package/dist/Texture.d.ts.map +1 -1
  204. package/dist/Texture.js +119 -3
  205. package/dist/Texture.js.map +1 -1
  206. package/dist/TexturedPBRMaterial.d.ts +27 -0
  207. package/dist/TexturedPBRMaterial.d.ts.map +1 -1
  208. package/dist/TexturedPBRMaterial.js +137 -23
  209. package/dist/TexturedPBRMaterial.js.map +1 -1
  210. package/dist/TransmissionRenderTarget.d.ts +33 -0
  211. package/dist/TransmissionRenderTarget.d.ts.map +1 -0
  212. package/dist/TransmissionRenderTarget.js +61 -0
  213. package/dist/TransmissionRenderTarget.js.map +1 -0
  214. package/dist/VegetationScatter.js +1 -1
  215. package/dist/VegetationScatter.js.map +1 -1
  216. package/dist/VolumetricFog.d.ts +42 -0
  217. package/dist/VolumetricFog.d.ts.map +1 -1
  218. package/dist/VolumetricFog.js +52 -1
  219. package/dist/VolumetricFog.js.map +1 -1
  220. package/dist/WaterSurface.d.ts +5 -0
  221. package/dist/WaterSurface.d.ts.map +1 -1
  222. package/dist/WaterSurface.js +5 -0
  223. package/dist/WaterSurface.js.map +1 -1
  224. package/dist/WebGL2Device.d.ts +159 -198
  225. package/dist/WebGL2Device.d.ts.map +1 -1
  226. package/dist/WebGL2Device.js +797 -3443
  227. package/dist/WebGL2Device.js.map +1 -1
  228. package/dist/WebGL2StateCache.d.ts +15 -1
  229. package/dist/WebGL2StateCache.d.ts.map +1 -1
  230. package/dist/WebGL2StateCache.js +31 -2
  231. package/dist/WebGL2StateCache.js.map +1 -1
  232. package/dist/WebGPUDevice.d.ts +16 -9
  233. package/dist/WebGPUDevice.d.ts.map +1 -1
  234. package/dist/WebGPUDevice.js +343 -618
  235. package/dist/WebGPUDevice.js.map +1 -1
  236. package/dist/WebGPUExtensionAtlas.d.ts +6 -0
  237. package/dist/WebGPUExtensionAtlas.d.ts.map +1 -0
  238. package/dist/WebGPUExtensionAtlas.js +225 -0
  239. package/dist/WebGPUExtensionAtlas.js.map +1 -0
  240. package/dist/WebGPUSkinningLimits.d.ts +10 -1
  241. package/dist/WebGPUSkinningLimits.d.ts.map +1 -1
  242. package/dist/WebGPUSkinningLimits.js +15 -1
  243. package/dist/WebGPUSkinningLimits.js.map +1 -1
  244. package/dist/advanced-runtime/index.d.ts +6 -2
  245. package/dist/advanced-runtime/index.d.ts.map +1 -1
  246. package/dist/advanced-runtime/index.js +0 -1
  247. package/dist/advanced-runtime/index.js.map +1 -1
  248. package/dist/animation/AnimationRenderPreset.d.ts +1 -1
  249. package/dist/animation/AnimationRenderPreset.d.ts.map +1 -1
  250. package/dist/animation/AnimationRenderPreset.js +1 -1
  251. package/dist/animation/AnimationRenderPreset.js.map +1 -1
  252. package/dist/animation/applyAnimationRenderPreset.d.ts +1 -1
  253. package/dist/animation/applyAnimationRenderPreset.d.ts.map +1 -1
  254. package/dist/animation/index.d.ts +2 -1
  255. package/dist/animation/index.d.ts.map +1 -1
  256. package/dist/animation/index.js +1 -1
  257. package/dist/animation/index.js.map +1 -1
  258. package/dist/atmosphere/CloudLayer.d.ts +24 -0
  259. package/dist/atmosphere/CloudLayer.d.ts.map +1 -0
  260. package/dist/atmosphere/CloudLayer.js +30 -0
  261. package/dist/atmosphere/CloudLayer.js.map +1 -0
  262. package/dist/atmosphere/FogVolumes.d.ts +30 -0
  263. package/dist/atmosphere/FogVolumes.d.ts.map +1 -0
  264. package/dist/atmosphere/FogVolumes.js +96 -0
  265. package/dist/atmosphere/FogVolumes.js.map +1 -0
  266. package/dist/atmosphere/GradientSky.d.ts +40 -0
  267. package/dist/atmosphere/GradientSky.d.ts.map +1 -0
  268. package/dist/atmosphere/GradientSky.js +75 -0
  269. package/dist/atmosphere/GradientSky.js.map +1 -0
  270. package/dist/atmosphere/HeightFog.d.ts +154 -0
  271. package/dist/atmosphere/HeightFog.d.ts.map +1 -0
  272. package/dist/atmosphere/HeightFog.js +379 -0
  273. package/dist/atmosphere/HeightFog.js.map +1 -0
  274. package/dist/atmosphere/PreethamSky.d.ts +38 -0
  275. package/dist/atmosphere/PreethamSky.d.ts.map +1 -0
  276. package/dist/atmosphere/PreethamSky.js +150 -0
  277. package/dist/atmosphere/PreethamSky.js.map +1 -0
  278. package/dist/atmosphere/SkyBackgroundPass.d.ts +63 -0
  279. package/dist/atmosphere/SkyBackgroundPass.d.ts.map +1 -0
  280. package/dist/atmosphere/SkyBackgroundPass.js +233 -0
  281. package/dist/atmosphere/SkyBackgroundPass.js.map +1 -0
  282. package/dist/atmosphere/SkyCaptureAdapter.d.ts +45 -0
  283. package/dist/atmosphere/SkyCaptureAdapter.d.ts.map +1 -0
  284. package/dist/atmosphere/SkyCaptureAdapter.js +65 -0
  285. package/dist/atmosphere/SkyCaptureAdapter.js.map +1 -0
  286. package/dist/atmosphere/SkyEval.d.ts +56 -0
  287. package/dist/atmosphere/SkyEval.d.ts.map +1 -0
  288. package/dist/atmosphere/SkyEval.js +99 -0
  289. package/dist/atmosphere/SkyEval.js.map +1 -0
  290. package/dist/atmosphere/StarField.d.ts +26 -0
  291. package/dist/atmosphere/StarField.d.ts.map +1 -0
  292. package/dist/atmosphere/StarField.js +31 -0
  293. package/dist/atmosphere/StarField.js.map +1 -0
  294. package/dist/atmosphere/VolumetricFogPass.d.ts +69 -0
  295. package/dist/atmosphere/VolumetricFogPass.d.ts.map +1 -0
  296. package/dist/atmosphere/VolumetricFogPass.js +265 -0
  297. package/dist/atmosphere/VolumetricFogPass.js.map +1 -0
  298. package/dist/atmosphere/fogChunks.d.ts +8 -0
  299. package/dist/atmosphere/fogChunks.d.ts.map +1 -0
  300. package/dist/atmosphere/fogChunks.js +39 -0
  301. package/dist/atmosphere/fogChunks.js.map +1 -0
  302. package/dist/atmosphere/fogUniformStore.d.ts +20 -0
  303. package/dist/atmosphere/fogUniformStore.d.ts.map +1 -0
  304. package/dist/atmosphere/fogUniformStore.js +45 -0
  305. package/dist/atmosphere/fogUniformStore.js.map +1 -0
  306. package/dist/atmosphere/shaders/fog.glsl.d.ts +10 -0
  307. package/dist/atmosphere/shaders/fog.glsl.d.ts.map +1 -0
  308. package/dist/atmosphere/shaders/fog.glsl.js +161 -0
  309. package/dist/atmosphere/shaders/fog.glsl.js.map +1 -0
  310. package/dist/atmosphere/shaders/volumetric-apply.glsl.d.ts +3 -0
  311. package/dist/atmosphere/shaders/volumetric-apply.glsl.d.ts.map +1 -0
  312. package/dist/atmosphere/shaders/volumetric-apply.glsl.js +61 -0
  313. package/dist/atmosphere/shaders/volumetric-apply.glsl.js.map +1 -0
  314. package/dist/atmosphere/shaders/volumetric-inject.glsl.d.ts +4 -0
  315. package/dist/atmosphere/shaders/volumetric-inject.glsl.d.ts.map +1 -0
  316. package/dist/atmosphere/shaders/volumetric-inject.glsl.js +129 -0
  317. package/dist/atmosphere/shaders/volumetric-inject.glsl.js.map +1 -0
  318. package/dist/atmosphere/shaders/volumetric-integrate.glsl.d.ts +3 -0
  319. package/dist/atmosphere/shaders/volumetric-integrate.glsl.d.ts.map +1 -0
  320. package/dist/atmosphere/shaders/volumetric-integrate.glsl.js +55 -0
  321. package/dist/atmosphere/shaders/volumetric-integrate.glsl.js.map +1 -0
  322. package/dist/atmosphere/shaders/wetness.glsl.d.ts +34 -0
  323. package/dist/atmosphere/shaders/wetness.glsl.d.ts.map +1 -0
  324. package/dist/atmosphere/shaders/wetness.glsl.js +101 -0
  325. package/dist/atmosphere/shaders/wetness.glsl.js.map +1 -0
  326. package/dist/atmosphere/sky.glsl.d.ts +8 -0
  327. package/dist/atmosphere/sky.glsl.d.ts.map +1 -0
  328. package/dist/atmosphere/sky.glsl.js +249 -0
  329. package/dist/atmosphere/sky.glsl.js.map +1 -0
  330. package/dist/batching/BatchedGeometryPool.d.ts +72 -0
  331. package/dist/batching/BatchedGeometryPool.d.ts.map +1 -0
  332. package/dist/batching/BatchedGeometryPool.js +138 -0
  333. package/dist/batching/BatchedGeometryPool.js.map +1 -0
  334. package/dist/batching/ContentKeys.d.ts +29 -0
  335. package/dist/batching/ContentKeys.d.ts.map +1 -0
  336. package/dist/batching/ContentKeys.js +220 -0
  337. package/dist/batching/ContentKeys.js.map +1 -0
  338. package/dist/batching/DrawDataTexture.d.ts +51 -0
  339. package/dist/batching/DrawDataTexture.d.ts.map +1 -0
  340. package/dist/batching/DrawDataTexture.js +99 -0
  341. package/dist/batching/DrawDataTexture.js.map +1 -0
  342. package/dist/batching/MultiDrawBatch.d.ts +64 -0
  343. package/dist/batching/MultiDrawBatch.d.ts.map +1 -0
  344. package/dist/batching/MultiDrawBatch.js +103 -0
  345. package/dist/batching/MultiDrawBatch.js.map +1 -0
  346. package/dist/batching/StaticMergePlanner.d.ts +80 -0
  347. package/dist/batching/StaticMergePlanner.d.ts.map +1 -0
  348. package/dist/batching/StaticMergePlanner.js +323 -0
  349. package/dist/batching/StaticMergePlanner.js.map +1 -0
  350. package/dist/batching/index.d.ts +8 -0
  351. package/dist/batching/index.d.ts.map +1 -0
  352. package/dist/batching/index.js +8 -0
  353. package/dist/batching/index.js.map +1 -0
  354. package/dist/batching/shaders/drawId.glsl.d.ts +29 -0
  355. package/dist/batching/shaders/drawId.glsl.d.ts.map +1 -0
  356. package/dist/batching/shaders/drawId.glsl.js +93 -0
  357. package/dist/batching/shaders/drawId.glsl.js.map +1 -0
  358. package/dist/batching/shaders/instanceEmissive.glsl.d.ts +16 -0
  359. package/dist/batching/shaders/instanceEmissive.glsl.d.ts.map +1 -0
  360. package/dist/batching/shaders/instanceEmissive.glsl.js +63 -0
  361. package/dist/batching/shaders/instanceEmissive.glsl.js.map +1 -0
  362. package/dist/cinematic/BloomPass.d.ts +5 -9
  363. package/dist/cinematic/BloomPass.d.ts.map +1 -1
  364. package/dist/cinematic/BloomPass.js +5 -17
  365. package/dist/cinematic/BloomPass.js.map +1 -1
  366. package/dist/cinematic/DepthHazePass.d.ts +5 -11
  367. package/dist/cinematic/DepthHazePass.d.ts.map +1 -1
  368. package/dist/cinematic/DepthHazePass.js +5 -19
  369. package/dist/cinematic/DepthHazePass.js.map +1 -1
  370. package/dist/cinematic/FilmGrainPass.d.ts +5 -8
  371. package/dist/cinematic/FilmGrainPass.d.ts.map +1 -1
  372. package/dist/cinematic/FilmGrainPass.js +5 -16
  373. package/dist/cinematic/FilmGrainPass.js.map +1 -1
  374. package/dist/cinematic/VignettePass.d.ts +5 -9
  375. package/dist/cinematic/VignettePass.d.ts.map +1 -1
  376. package/dist/cinematic/VignettePass.js +5 -16
  377. package/dist/cinematic/VignettePass.js.map +1 -1
  378. package/dist/cinematic/index.d.ts +2 -1
  379. package/dist/cinematic/index.d.ts.map +1 -1
  380. package/dist/cinematic/index.js +1 -1
  381. package/dist/cinematic/index.js.map +1 -1
  382. package/dist/contracts/atmosphere.d.ts +30 -0
  383. package/dist/contracts/atmosphere.d.ts.map +1 -0
  384. package/dist/contracts/atmosphere.js +42 -0
  385. package/dist/contracts/atmosphere.js.map +1 -0
  386. package/dist/contracts/blend.d.ts +28 -0
  387. package/dist/contracts/blend.d.ts.map +1 -0
  388. package/dist/contracts/blend.js +73 -0
  389. package/dist/contracts/blend.js.map +1 -0
  390. package/dist/contracts/core.d.ts +47 -0
  391. package/dist/contracts/core.d.ts.map +1 -0
  392. package/dist/contracts/core.js +70 -0
  393. package/dist/contracts/core.js.map +1 -0
  394. package/dist/contracts/deform.d.ts +38 -0
  395. package/dist/contracts/deform.d.ts.map +1 -0
  396. package/dist/contracts/deform.js +14 -0
  397. package/dist/contracts/deform.js.map +1 -0
  398. package/dist/contracts/device.d.ts +71 -0
  399. package/dist/contracts/device.d.ts.map +1 -0
  400. package/dist/contracts/device.js +97 -0
  401. package/dist/contracts/device.js.map +1 -0
  402. package/dist/contracts/environment.d.ts +55 -0
  403. package/dist/contracts/environment.d.ts.map +1 -0
  404. package/dist/contracts/environment.js +115 -0
  405. package/dist/contracts/environment.js.map +1 -0
  406. package/dist/contracts/flags.state.d.ts +15 -0
  407. package/dist/contracts/flags.state.d.ts.map +1 -0
  408. package/dist/contracts/flags.state.js +45 -0
  409. package/dist/contracts/flags.state.js.map +1 -0
  410. package/dist/contracts/frameGraph.d.ts +78 -0
  411. package/dist/contracts/frameGraph.d.ts.map +1 -0
  412. package/dist/contracts/frameGraph.js +32 -0
  413. package/dist/contracts/frameGraph.js.map +1 -0
  414. package/dist/contracts/frameUniforms.d.ts +43 -0
  415. package/dist/contracts/frameUniforms.d.ts.map +1 -0
  416. package/dist/contracts/frameUniforms.js +35 -0
  417. package/dist/contracts/frameUniforms.js.map +1 -0
  418. package/dist/contracts/geometry.d.ts +33 -0
  419. package/dist/contracts/geometry.d.ts.map +1 -0
  420. package/dist/contracts/geometry.js +59 -0
  421. package/dist/contracts/geometry.js.map +1 -0
  422. package/dist/contracts/index.d.ts +27 -0
  423. package/dist/contracts/index.d.ts.map +1 -0
  424. package/dist/contracts/index.js +27 -0
  425. package/dist/contracts/index.js.map +1 -0
  426. package/dist/contracts/materialLobes.d.ts +41 -0
  427. package/dist/contracts/materialLobes.d.ts.map +1 -0
  428. package/dist/contracts/materialLobes.js +14 -0
  429. package/dist/contracts/materialLobes.js.map +1 -0
  430. package/dist/contracts/output.d.ts +35 -0
  431. package/dist/contracts/output.d.ts.map +1 -0
  432. package/dist/contracts/output.js +18 -0
  433. package/dist/contracts/output.js.map +1 -0
  434. package/dist/contracts/particles.d.ts +41 -0
  435. package/dist/contracts/particles.d.ts.map +1 -0
  436. package/dist/contracts/particles.js +15 -0
  437. package/dist/contracts/particles.js.map +1 -0
  438. package/dist/contracts/post.d.ts +71 -0
  439. package/dist/contracts/post.d.ts.map +1 -0
  440. package/dist/contracts/post.js +28 -0
  441. package/dist/contracts/post.js.map +1 -0
  442. package/dist/contracts/program.d.ts +158 -0
  443. package/dist/contracts/program.d.ts.map +1 -0
  444. package/dist/contracts/program.js +128 -0
  445. package/dist/contracts/program.js.map +1 -0
  446. package/dist/contracts/quality.d.ts +93 -0
  447. package/dist/contracts/quality.d.ts.map +1 -0
  448. package/dist/contracts/quality.js +149 -0
  449. package/dist/contracts/quality.js.map +1 -0
  450. package/dist/contracts/renderItem.d.ts +58 -0
  451. package/dist/contracts/renderItem.d.ts.map +1 -0
  452. package/dist/contracts/renderItem.js +8 -0
  453. package/dist/contracts/renderItem.js.map +1 -0
  454. package/dist/contracts/renderSource.d.ts +63 -0
  455. package/dist/contracts/renderSource.d.ts.map +1 -0
  456. package/dist/contracts/renderSource.js +7 -0
  457. package/dist/contracts/renderSource.js.map +1 -0
  458. package/dist/contracts/rendererFactory.d.ts +42 -0
  459. package/dist/contracts/rendererFactory.d.ts.map +1 -0
  460. package/dist/contracts/rendererFactory.js +32 -0
  461. package/dist/contracts/rendererFactory.js.map +1 -0
  462. package/dist/contracts/sampling.d.ts +23 -0
  463. package/dist/contracts/sampling.d.ts.map +1 -0
  464. package/dist/contracts/sampling.js +17 -0
  465. package/dist/contracts/sampling.js.map +1 -0
  466. package/dist/contracts/shadows.d.ts +53 -0
  467. package/dist/contracts/shadows.d.ts.map +1 -0
  468. package/dist/contracts/shadows.js +66 -0
  469. package/dist/contracts/shadows.js.map +1 -0
  470. package/dist/contracts/testing/ChunkHarness.d.ts +18 -0
  471. package/dist/contracts/testing/ChunkHarness.d.ts.map +1 -0
  472. package/dist/contracts/testing/ChunkHarness.js +68 -0
  473. package/dist/contracts/testing/ChunkHarness.js.map +1 -0
  474. package/dist/contracts/textureFormats.d.ts +18 -0
  475. package/dist/contracts/textureFormats.d.ts.map +1 -0
  476. package/dist/contracts/textureFormats.js +13 -0
  477. package/dist/contracts/textureFormats.js.map +1 -0
  478. package/dist/contracts/velocity.d.ts +37 -0
  479. package/dist/contracts/velocity.d.ts.map +1 -0
  480. package/dist/contracts/velocity.js +22 -0
  481. package/dist/contracts/velocity.js.map +1 -0
  482. package/dist/effects/GPUParticleBackend.d.ts +4 -2
  483. package/dist/effects/GPUParticleBackend.d.ts.map +1 -1
  484. package/dist/effects/GPUParticleBackend.js +20 -2
  485. package/dist/effects/GPUParticleBackend.js.map +1 -1
  486. package/dist/effects/ResidentGPUParticleRenderer.d.ts +158 -0
  487. package/dist/effects/ResidentGPUParticleRenderer.d.ts.map +1 -0
  488. package/dist/effects/ResidentGPUParticleRenderer.js +576 -0
  489. package/dist/effects/ResidentGPUParticleRenderer.js.map +1 -0
  490. package/dist/environment/EnvUniforms.d.ts +42 -0
  491. package/dist/environment/EnvUniforms.d.ts.map +1 -0
  492. package/dist/environment/EnvUniforms.js +54 -0
  493. package/dist/environment/EnvUniforms.js.map +1 -0
  494. package/dist/environment/EnvironmentCache.d.ts +83 -0
  495. package/dist/environment/EnvironmentCache.d.ts.map +1 -0
  496. package/dist/environment/EnvironmentCache.js +205 -0
  497. package/dist/environment/EnvironmentCache.js.map +1 -0
  498. package/dist/environment/EnvironmentProbeFactory.d.ts +41 -0
  499. package/dist/environment/EnvironmentProbeFactory.d.ts.map +1 -0
  500. package/dist/environment/EnvironmentProbeFactory.js +52 -0
  501. package/dist/environment/EnvironmentProbeFactory.js.map +1 -0
  502. package/dist/environment/GPUPMREMGenerator.d.ts +44 -0
  503. package/dist/environment/GPUPMREMGenerator.d.ts.map +1 -0
  504. package/dist/environment/GPUPMREMGenerator.js +98 -0
  505. package/dist/environment/GPUPMREMGenerator.js.map +1 -0
  506. package/dist/environment/HdrEquirect.d.ts +28 -0
  507. package/dist/environment/HdrEquirect.d.ts.map +1 -0
  508. package/dist/environment/HdrEquirect.js +205 -0
  509. package/dist/environment/HdrEquirect.js.map +1 -0
  510. package/dist/environment/LightingSamplerBudget.d.ts +20 -0
  511. package/dist/environment/LightingSamplerBudget.d.ts.map +1 -0
  512. package/dist/environment/LightingSamplerBudget.js +94 -0
  513. package/dist/environment/LightingSamplerBudget.js.map +1 -0
  514. package/dist/environment/Prd02BackgroundShaderLibrary.d.ts +10 -0
  515. package/dist/environment/Prd02BackgroundShaderLibrary.d.ts.map +1 -0
  516. package/dist/environment/Prd02BackgroundShaderLibrary.js +100 -0
  517. package/dist/environment/Prd02BackgroundShaderLibrary.js.map +1 -0
  518. package/dist/environment/Rgb9e5Cube.d.ts +25 -0
  519. package/dist/environment/Rgb9e5Cube.d.ts.map +1 -0
  520. package/dist/environment/Rgb9e5Cube.js +103 -0
  521. package/dist/environment/Rgb9e5Cube.js.map +1 -0
  522. package/dist/environment/RoomEnvironmentScene.d.ts +57 -0
  523. package/dist/environment/RoomEnvironmentScene.d.ts.map +1 -0
  524. package/dist/environment/RoomEnvironmentScene.js +165 -0
  525. package/dist/environment/RoomEnvironmentScene.js.map +1 -0
  526. package/dist/environment/SphericalHarmonics.d.ts +32 -0
  527. package/dist/environment/SphericalHarmonics.d.ts.map +1 -0
  528. package/dist/environment/SphericalHarmonics.js +155 -0
  529. package/dist/environment/SphericalHarmonics.js.map +1 -0
  530. package/dist/environment/probeBuild.d.ts +97 -0
  531. package/dist/environment/probeBuild.d.ts.map +1 -0
  532. package/dist/environment/probeBuild.js +406 -0
  533. package/dist/environment/probeBuild.js.map +1 -0
  534. package/dist/environment/workers/cpuPrefilter.d.ts +58 -0
  535. package/dist/environment/workers/cpuPrefilter.d.ts.map +1 -0
  536. package/dist/environment/workers/cpuPrefilter.js +288 -0
  537. package/dist/environment/workers/cpuPrefilter.js.map +1 -0
  538. package/dist/extension-scalar-atlas.d.ts +3 -0
  539. package/dist/extension-scalar-atlas.d.ts.map +1 -0
  540. package/dist/extension-scalar-atlas.js +2 -0
  541. package/dist/extension-scalar-atlas.js.map +1 -0
  542. package/dist/forward/Deform.d.ts +56 -0
  543. package/dist/forward/Deform.d.ts.map +1 -0
  544. package/dist/forward/Deform.js +517 -0
  545. package/dist/forward/Deform.js.map +1 -0
  546. package/dist/forward/DrawSubmit.d.ts +32 -0
  547. package/dist/forward/DrawSubmit.d.ts.map +1 -0
  548. package/dist/forward/DrawSubmit.js +75 -0
  549. package/dist/forward/DrawSubmit.js.map +1 -0
  550. package/dist/forward/Lighting.d.ts +35 -0
  551. package/dist/forward/Lighting.d.ts.map +1 -0
  552. package/dist/forward/Lighting.js +477 -0
  553. package/dist/forward/Lighting.js.map +1 -0
  554. package/dist/forward/Transmission.d.ts +62 -0
  555. package/dist/forward/Transmission.d.ts.map +1 -0
  556. package/dist/forward/Transmission.js +299 -0
  557. package/dist/forward/Transmission.js.map +1 -0
  558. package/dist/forward/Velocity.d.ts +47 -0
  559. package/dist/forward/Velocity.d.ts.map +1 -0
  560. package/dist/forward/Velocity.js +153 -0
  561. package/dist/forward/Velocity.js.map +1 -0
  562. package/dist/forward/transmissionTargetStore.d.ts +21 -0
  563. package/dist/forward/transmissionTargetStore.d.ts.map +1 -0
  564. package/dist/forward/transmissionTargetStore.js +8 -0
  565. package/dist/forward/transmissionTargetStore.js.map +1 -0
  566. package/dist/geometry/Primitives.d.ts +28 -0
  567. package/dist/geometry/Primitives.d.ts.map +1 -0
  568. package/dist/geometry/Primitives.js +110 -0
  569. package/dist/geometry/Primitives.js.map +1 -0
  570. package/dist/index.d.ts +140 -57
  571. package/dist/index.d.ts.map +1 -1
  572. package/dist/index.js +102 -51
  573. package/dist/index.js.map +1 -1
  574. package/dist/lanes/index.d.ts +17 -0
  575. package/dist/lanes/index.d.ts.map +1 -0
  576. package/dist/lanes/index.js +17 -0
  577. package/dist/lanes/index.js.map +1 -0
  578. package/dist/lanes/prd01.d.ts +6 -0
  579. package/dist/lanes/prd01.d.ts.map +1 -0
  580. package/dist/lanes/prd01.js +19 -0
  581. package/dist/lanes/prd01.js.map +1 -0
  582. package/dist/lanes/prd02.d.ts +62 -0
  583. package/dist/lanes/prd02.d.ts.map +1 -0
  584. package/dist/lanes/prd02.js +117 -0
  585. package/dist/lanes/prd02.js.map +1 -0
  586. package/dist/lanes/prd03.d.ts +19 -0
  587. package/dist/lanes/prd03.d.ts.map +1 -0
  588. package/dist/lanes/prd03.js +55 -0
  589. package/dist/lanes/prd03.js.map +1 -0
  590. package/dist/lanes/prd04.d.ts +22 -0
  591. package/dist/lanes/prd04.d.ts.map +1 -0
  592. package/dist/lanes/prd04.js +35 -0
  593. package/dist/lanes/prd04.js.map +1 -0
  594. package/dist/lanes/prd05.d.ts +4 -0
  595. package/dist/lanes/prd05.d.ts.map +1 -0
  596. package/dist/lanes/prd05.js +31 -0
  597. package/dist/lanes/prd05.js.map +1 -0
  598. package/dist/lanes/prd06.d.ts +33 -0
  599. package/dist/lanes/prd06.d.ts.map +1 -0
  600. package/dist/lanes/prd06.js +217 -0
  601. package/dist/lanes/prd06.js.map +1 -0
  602. package/dist/lanes/prd07.d.ts +49 -0
  603. package/dist/lanes/prd07.d.ts.map +1 -0
  604. package/dist/lanes/prd07.js +112 -0
  605. package/dist/lanes/prd07.js.map +1 -0
  606. package/dist/lanes/prd08.d.ts +2 -0
  607. package/dist/lanes/prd08.d.ts.map +1 -0
  608. package/dist/lanes/prd08.js +17 -0
  609. package/dist/lanes/prd08.js.map +1 -0
  610. package/dist/lanes/prd09.d.ts +6 -0
  611. package/dist/lanes/prd09.d.ts.map +1 -0
  612. package/dist/lanes/prd09.js +6 -0
  613. package/dist/lanes/prd09.js.map +1 -0
  614. package/dist/lanes/prd10.d.ts +2 -0
  615. package/dist/lanes/prd10.d.ts.map +1 -0
  616. package/dist/lanes/prd10.js +10 -0
  617. package/dist/lanes/prd10.js.map +1 -0
  618. package/dist/lanes/prd11.d.ts +61 -0
  619. package/dist/lanes/prd11.d.ts.map +1 -0
  620. package/dist/lanes/prd11.js +244 -0
  621. package/dist/lanes/prd11.js.map +1 -0
  622. package/dist/lanes/prd12.d.ts +6 -0
  623. package/dist/lanes/prd12.d.ts.map +1 -0
  624. package/dist/lanes/prd12.js +6 -0
  625. package/dist/lanes/prd12.js.map +1 -0
  626. package/dist/lanes/prd13.d.ts +6 -0
  627. package/dist/lanes/prd13.d.ts.map +1 -0
  628. package/dist/lanes/prd13.js +6 -0
  629. package/dist/lanes/prd13.js.map +1 -0
  630. package/dist/lanes/prd14.d.ts +6 -0
  631. package/dist/lanes/prd14.d.ts.map +1 -0
  632. package/dist/lanes/prd14.js +6 -0
  633. package/dist/lanes/prd14.js.map +1 -0
  634. package/dist/lanes/prd15.d.ts +6 -0
  635. package/dist/lanes/prd15.d.ts.map +1 -0
  636. package/dist/lanes/prd15.js +6 -0
  637. package/dist/lanes/prd15.js.map +1 -0
  638. package/dist/lean/LeanProductionRenderer.d.ts.map +1 -1
  639. package/dist/lean/LeanProductionRenderer.js +2 -2
  640. package/dist/lean/LeanProductionRenderer.js.map +1 -1
  641. package/dist/lean-core-runtime.d.ts +13 -0
  642. package/dist/lean-core-runtime.d.ts.map +1 -0
  643. package/dist/lean-core-runtime.js +10 -0
  644. package/dist/lean-core-runtime.js.map +1 -0
  645. package/dist/materials/PhysicalFeatures.d.ts +71 -0
  646. package/dist/materials/PhysicalFeatures.d.ts.map +1 -0
  647. package/dist/materials/PhysicalFeatures.js +255 -0
  648. package/dist/materials/PhysicalFeatures.js.map +1 -0
  649. package/dist/materials/PhysicalMaterial.d.ts +85 -0
  650. package/dist/materials/PhysicalMaterial.d.ts.map +1 -1
  651. package/dist/materials/PhysicalMaterial.js +21 -0
  652. package/dist/materials/PhysicalMaterial.js.map +1 -1
  653. package/dist/materials/features.d.ts +47 -0
  654. package/dist/materials/features.d.ts.map +1 -0
  655. package/dist/materials/features.js +282 -0
  656. package/dist/materials/features.js.map +1 -0
  657. package/dist/materials/lobes.d.ts +3 -0
  658. package/dist/materials/lobes.d.ts.map +1 -0
  659. package/dist/materials/lobes.js +225 -0
  660. package/dist/materials/lobes.js.map +1 -0
  661. package/dist/output/HdrTarget.d.ts +27 -0
  662. package/dist/output/HdrTarget.d.ts.map +1 -0
  663. package/dist/output/HdrTarget.js +48 -0
  664. package/dist/output/HdrTarget.js.map +1 -0
  665. package/dist/output/OutputPass.d.ts +28 -0
  666. package/dist/output/OutputPass.d.ts.map +1 -0
  667. package/dist/output/OutputPass.js +142 -0
  668. package/dist/output/OutputPass.js.map +1 -0
  669. package/dist/output/ToneMappingOperators.glsl.d.ts +22 -0
  670. package/dist/output/ToneMappingOperators.glsl.d.ts.map +1 -0
  671. package/dist/output/ToneMappingOperators.glsl.js +217 -0
  672. package/dist/output/ToneMappingOperators.glsl.js.map +1 -0
  673. package/dist/passes/ContactShadowPass.d.ts +57 -0
  674. package/dist/passes/ContactShadowPass.d.ts.map +1 -0
  675. package/dist/passes/ContactShadowPass.js +151 -0
  676. package/dist/passes/ContactShadowPass.js.map +1 -0
  677. package/dist/passes/Prd02ContactShadowsContributor.d.ts +16 -0
  678. package/dist/passes/Prd02ContactShadowsContributor.d.ts.map +1 -0
  679. package/dist/passes/Prd02ContactShadowsContributor.js +133 -0
  680. package/dist/passes/Prd02ContactShadowsContributor.js.map +1 -0
  681. package/dist/passes/Prd02SubFlags.d.ts +22 -0
  682. package/dist/passes/Prd02SubFlags.d.ts.map +1 -0
  683. package/dist/passes/Prd02SubFlags.js +32 -0
  684. package/dist/passes/Prd02SubFlags.js.map +1 -0
  685. package/dist/performance/BVH.d.ts +46 -0
  686. package/dist/performance/BVH.d.ts.map +1 -1
  687. package/dist/performance/BVH.js +212 -0
  688. package/dist/performance/BVH.js.map +1 -1
  689. package/dist/performance/Batcher.d.ts +11 -0
  690. package/dist/performance/Batcher.d.ts.map +1 -1
  691. package/dist/performance/Batcher.js +10 -0
  692. package/dist/performance/Batcher.js.map +1 -1
  693. package/dist/performance/FrustumCuller.d.ts +29 -0
  694. package/dist/performance/FrustumCuller.d.ts.map +1 -1
  695. package/dist/performance/FrustumCuller.js +78 -1
  696. package/dist/performance/FrustumCuller.js.map +1 -1
  697. package/dist/performance/LOD.d.ts +6 -0
  698. package/dist/performance/LOD.d.ts.map +1 -1
  699. package/dist/performance/LOD.js +12 -0
  700. package/dist/performance/LOD.js.map +1 -1
  701. package/dist/performance/RenderItemSorting.d.ts +2 -0
  702. package/dist/performance/RenderItemSorting.d.ts.map +1 -1
  703. package/dist/performance/RenderItemSorting.js +5 -1
  704. package/dist/performance/RenderItemSorting.js.map +1 -1
  705. package/dist/post/CubeLut.d.ts +15 -0
  706. package/dist/post/CubeLut.d.ts.map +1 -0
  707. package/dist/post/CubeLut.js +86 -0
  708. package/dist/post/CubeLut.js.map +1 -0
  709. package/dist/post/DisplayLutCache.d.ts +31 -0
  710. package/dist/post/DisplayLutCache.d.ts.map +1 -0
  711. package/dist/post/DisplayLutCache.js +44 -0
  712. package/dist/post/DisplayLutCache.js.map +1 -0
  713. package/dist/post/PostAntiAlias.d.ts +49 -0
  714. package/dist/post/PostAntiAlias.d.ts.map +1 -0
  715. package/dist/post/PostAntiAlias.js +75 -0
  716. package/dist/post/PostAntiAlias.js.map +1 -0
  717. package/dist/post/PostGraph.d.ts +206 -0
  718. package/dist/post/PostGraph.d.ts.map +1 -0
  719. package/dist/post/PostGraph.js +234 -0
  720. package/dist/post/PostGraph.js.map +1 -0
  721. package/dist/post/PostQualityTiers.d.ts +95 -0
  722. package/dist/post/PostQualityTiers.d.ts.map +1 -0
  723. package/dist/post/PostQualityTiers.js +62 -0
  724. package/dist/post/PostQualityTiers.js.map +1 -0
  725. package/dist/post/PostResources.d.ts +49 -0
  726. package/dist/post/PostResources.d.ts.map +1 -0
  727. package/dist/post/PostResources.js +119 -0
  728. package/dist/post/PostResources.js.map +1 -0
  729. package/dist/post/PostTimer.d.ts +37 -0
  730. package/dist/post/PostTimer.d.ts.map +1 -0
  731. package/dist/post/PostTimer.js +88 -0
  732. package/dist/post/PostTimer.js.map +1 -0
  733. package/dist/post/ScreenFeelPass.d.ts +83 -0
  734. package/dist/post/ScreenFeelPass.d.ts.map +1 -0
  735. package/dist/post/ScreenFeelPass.js +197 -0
  736. package/dist/post/ScreenFeelPass.js.map +1 -0
  737. package/dist/post/ToneOperators.d.ts +42 -0
  738. package/dist/post/ToneOperators.d.ts.map +1 -0
  739. package/dist/post/ToneOperators.js +179 -0
  740. package/dist/post/ToneOperators.js.map +1 -0
  741. package/dist/post/chunks/indirectFraction.glsl.d.ts +50 -0
  742. package/dist/post/chunks/indirectFraction.glsl.d.ts.map +1 -0
  743. package/dist/post/chunks/indirectFraction.glsl.js +82 -0
  744. package/dist/post/chunks/indirectFraction.glsl.js.map +1 -0
  745. package/dist/post/chunks/velocity.glsl.d.ts +35 -0
  746. package/dist/post/chunks/velocity.glsl.d.ts.map +1 -0
  747. package/dist/post/chunks/velocity.glsl.js +86 -0
  748. package/dist/post/chunks/velocity.glsl.js.map +1 -0
  749. package/dist/post/shaders/bloom.glsl.d.ts +21 -0
  750. package/dist/post/shaders/bloom.glsl.d.ts.map +1 -0
  751. package/dist/post/shaders/bloom.glsl.js +120 -0
  752. package/dist/post/shaders/bloom.glsl.js.map +1 -0
  753. package/dist/post/shaders/bloom.wgsl.d.ts +10 -0
  754. package/dist/post/shaders/bloom.wgsl.d.ts.map +1 -0
  755. package/dist/post/shaders/bloom.wgsl.js +121 -0
  756. package/dist/post/shaders/bloom.wgsl.js.map +1 -0
  757. package/dist/post/shaders/common.glsl.d.ts +11 -0
  758. package/dist/post/shaders/common.glsl.d.ts.map +1 -0
  759. package/dist/post/shaders/common.glsl.js +34 -0
  760. package/dist/post/shaders/common.glsl.js.map +1 -0
  761. package/dist/post/shaders/common.wgsl.d.ts +25 -0
  762. package/dist/post/shaders/common.wgsl.d.ts.map +1 -0
  763. package/dist/post/shaders/common.wgsl.js +48 -0
  764. package/dist/post/shaders/common.wgsl.js.map +1 -0
  765. package/dist/post/shaders/composite.glsl.d.ts +25 -0
  766. package/dist/post/shaders/composite.glsl.d.ts.map +1 -0
  767. package/dist/post/shaders/composite.glsl.js +96 -0
  768. package/dist/post/shaders/composite.glsl.js.map +1 -0
  769. package/dist/post/shaders/composite.wgsl.d.ts +10 -0
  770. package/dist/post/shaders/composite.wgsl.d.ts.map +1 -0
  771. package/dist/post/shaders/composite.wgsl.js +92 -0
  772. package/dist/post/shaders/composite.wgsl.js.map +1 -0
  773. package/dist/post/shaders/depthDownsample.glsl.d.ts +20 -0
  774. package/dist/post/shaders/depthDownsample.glsl.d.ts.map +1 -0
  775. package/dist/post/shaders/depthDownsample.glsl.js +78 -0
  776. package/dist/post/shaders/depthDownsample.glsl.js.map +1 -0
  777. package/dist/post/shaders/depthDownsample.wgsl.d.ts +17 -0
  778. package/dist/post/shaders/depthDownsample.wgsl.d.ts.map +1 -0
  779. package/dist/post/shaders/depthDownsample.wgsl.js +87 -0
  780. package/dist/post/shaders/depthDownsample.wgsl.js.map +1 -0
  781. package/dist/post/shaders/displayGrade.glsl.d.ts +18 -0
  782. package/dist/post/shaders/displayGrade.glsl.d.ts.map +1 -0
  783. package/dist/post/shaders/displayGrade.glsl.js +80 -0
  784. package/dist/post/shaders/displayGrade.glsl.js.map +1 -0
  785. package/dist/post/shaders/displayGrade.wgsl.d.ts +9 -0
  786. package/dist/post/shaders/displayGrade.wgsl.d.ts.map +1 -0
  787. package/dist/post/shaders/displayGrade.wgsl.js +75 -0
  788. package/dist/post/shaders/displayGrade.wgsl.js.map +1 -0
  789. package/dist/post/shaders/dof.glsl.d.ts +25 -0
  790. package/dist/post/shaders/dof.glsl.d.ts.map +1 -0
  791. package/dist/post/shaders/dof.glsl.js +129 -0
  792. package/dist/post/shaders/dof.glsl.js.map +1 -0
  793. package/dist/post/shaders/dof.wgsl.d.ts +11 -0
  794. package/dist/post/shaders/dof.wgsl.d.ts.map +1 -0
  795. package/dist/post/shaders/dof.wgsl.js +119 -0
  796. package/dist/post/shaders/dof.wgsl.js.map +1 -0
  797. package/dist/post/shaders/exposure.glsl.d.ts +43 -0
  798. package/dist/post/shaders/exposure.glsl.d.ts.map +1 -0
  799. package/dist/post/shaders/exposure.glsl.js +115 -0
  800. package/dist/post/shaders/exposure.glsl.js.map +1 -0
  801. package/dist/post/shaders/exposure.wgsl.d.ts +16 -0
  802. package/dist/post/shaders/exposure.wgsl.d.ts.map +1 -0
  803. package/dist/post/shaders/exposure.wgsl.js +97 -0
  804. package/dist/post/shaders/exposure.wgsl.js.map +1 -0
  805. package/dist/post/shaders/finalize.glsl.d.ts +17 -0
  806. package/dist/post/shaders/finalize.glsl.d.ts.map +1 -0
  807. package/dist/post/shaders/finalize.glsl.js +120 -0
  808. package/dist/post/shaders/finalize.glsl.js.map +1 -0
  809. package/dist/post/shaders/finalize.wgsl.d.ts +13 -0
  810. package/dist/post/shaders/finalize.wgsl.d.ts.map +1 -0
  811. package/dist/post/shaders/finalize.wgsl.js +124 -0
  812. package/dist/post/shaders/finalize.wgsl.js.map +1 -0
  813. package/dist/post/shaders/fxaa.glsl.d.ts +26 -0
  814. package/dist/post/shaders/fxaa.glsl.d.ts.map +1 -0
  815. package/dist/post/shaders/fxaa.glsl.js +246 -0
  816. package/dist/post/shaders/fxaa.glsl.js.map +1 -0
  817. package/dist/post/shaders/fxaa.wgsl.d.ts +17 -0
  818. package/dist/post/shaders/fxaa.wgsl.d.ts.map +1 -0
  819. package/dist/post/shaders/fxaa.wgsl.js +268 -0
  820. package/dist/post/shaders/fxaa.wgsl.js.map +1 -0
  821. package/dist/post/shaders/godrays.glsl.d.ts +16 -0
  822. package/dist/post/shaders/godrays.glsl.d.ts.map +1 -0
  823. package/dist/post/shaders/godrays.glsl.js +70 -0
  824. package/dist/post/shaders/godrays.glsl.js.map +1 -0
  825. package/dist/post/shaders/godrays.wgsl.d.ts +8 -0
  826. package/dist/post/shaders/godrays.wgsl.d.ts.map +1 -0
  827. package/dist/post/shaders/godrays.wgsl.js +60 -0
  828. package/dist/post/shaders/godrays.wgsl.js.map +1 -0
  829. package/dist/post/shaders/gtao.glsl.d.ts +29 -0
  830. package/dist/post/shaders/gtao.glsl.d.ts.map +1 -0
  831. package/dist/post/shaders/gtao.glsl.js +190 -0
  832. package/dist/post/shaders/gtao.glsl.js.map +1 -0
  833. package/dist/post/shaders/gtao.wgsl.d.ts +13 -0
  834. package/dist/post/shaders/gtao.wgsl.d.ts.map +1 -0
  835. package/dist/post/shaders/gtao.wgsl.js +163 -0
  836. package/dist/post/shaders/gtao.wgsl.js.map +1 -0
  837. package/dist/post/shaders/gtaoDenoise.glsl.d.ts +22 -0
  838. package/dist/post/shaders/gtaoDenoise.glsl.d.ts.map +1 -0
  839. package/dist/post/shaders/gtaoDenoise.glsl.js +121 -0
  840. package/dist/post/shaders/gtaoDenoise.glsl.js.map +1 -0
  841. package/dist/post/shaders/gtaoDenoise.wgsl.d.ts +11 -0
  842. package/dist/post/shaders/gtaoDenoise.wgsl.d.ts.map +1 -0
  843. package/dist/post/shaders/gtaoDenoise.wgsl.js +117 -0
  844. package/dist/post/shaders/gtaoDenoise.wgsl.js.map +1 -0
  845. package/dist/post/shaders/motionBlur.glsl.d.ts +21 -0
  846. package/dist/post/shaders/motionBlur.glsl.d.ts.map +1 -0
  847. package/dist/post/shaders/motionBlur.glsl.js +110 -0
  848. package/dist/post/shaders/motionBlur.glsl.js.map +1 -0
  849. package/dist/post/shaders/motionBlur.wgsl.d.ts +10 -0
  850. package/dist/post/shaders/motionBlur.wgsl.d.ts.map +1 -0
  851. package/dist/post/shaders/motionBlur.wgsl.js +102 -0
  852. package/dist/post/shaders/motionBlur.wgsl.js.map +1 -0
  853. package/dist/post/shaders/smaa.glsl.d.ts +28 -0
  854. package/dist/post/shaders/smaa.glsl.d.ts.map +1 -0
  855. package/dist/post/shaders/smaa.glsl.js +354 -0
  856. package/dist/post/shaders/smaa.glsl.js.map +1 -0
  857. package/dist/post/shaders/smaa.wgsl.d.ts +20 -0
  858. package/dist/post/shaders/smaa.wgsl.d.ts.map +1 -0
  859. package/dist/post/shaders/smaa.wgsl.js +375 -0
  860. package/dist/post/shaders/smaa.wgsl.js.map +1 -0
  861. package/dist/post/shaders/taa.glsl.d.ts +23 -0
  862. package/dist/post/shaders/taa.glsl.d.ts.map +1 -0
  863. package/dist/post/shaders/taa.glsl.js +169 -0
  864. package/dist/post/shaders/taa.glsl.js.map +1 -0
  865. package/dist/post/shaders/taa.wgsl.d.ts +10 -0
  866. package/dist/post/shaders/taa.wgsl.d.ts.map +1 -0
  867. package/dist/post/shaders/taa.wgsl.js +185 -0
  868. package/dist/post/shaders/taa.wgsl.js.map +1 -0
  869. package/dist/post/shaders/velocityDilate.glsl.d.ts +16 -0
  870. package/dist/post/shaders/velocityDilate.glsl.d.ts.map +1 -0
  871. package/dist/post/shaders/velocityDilate.glsl.js +45 -0
  872. package/dist/post/shaders/velocityDilate.glsl.js.map +1 -0
  873. package/dist/post/shaders/velocityDilate.wgsl.d.ts +8 -0
  874. package/dist/post/shaders/velocityDilate.wgsl.d.ts.map +1 -0
  875. package/dist/post/shaders/velocityDilate.wgsl.js +30 -0
  876. package/dist/post/shaders/velocityDilate.wgsl.js.map +1 -0
  877. package/dist/post/smaa/textures.d.ts +17 -0
  878. package/dist/post/smaa/textures.d.ts.map +1 -0
  879. package/dist/post/smaa/textures.js +17 -0
  880. package/dist/post/smaa/textures.js.map +1 -0
  881. package/dist/post/v2Entry.d.ts +25 -0
  882. package/dist/post/v2Entry.d.ts.map +1 -0
  883. package/dist/post/v2Entry.js +28 -0
  884. package/dist/post/v2Entry.js.map +1 -0
  885. package/dist/post/v2Stages.d.ts +156 -0
  886. package/dist/post/v2Stages.d.ts.map +1 -0
  887. package/dist/post/v2Stages.js +1189 -0
  888. package/dist/post/v2Stages.js.map +1 -0
  889. package/dist/postprocess/EffectComposer.d.ts +6 -109
  890. package/dist/postprocess/EffectComposer.d.ts.map +1 -1
  891. package/dist/postprocess/EffectComposer.js +6 -246
  892. package/dist/postprocess/EffectComposer.js.map +1 -1
  893. package/dist/postprocess/NativeBloomPyramid.d.ts +51 -1
  894. package/dist/postprocess/NativeBloomPyramid.d.ts.map +1 -1
  895. package/dist/postprocess/NativeBloomPyramid.js +88 -1
  896. package/dist/postprocess/NativeBloomPyramid.js.map +1 -1
  897. package/dist/postprocess/SSAOPass.d.ts +5 -5
  898. package/dist/postprocess/SSAOPass.d.ts.map +1 -1
  899. package/dist/postprocess/SSAOPass.js +5 -17
  900. package/dist/postprocess/SSAOPass.js.map +1 -1
  901. package/dist/probes/IrradianceVolume.d.ts +45 -0
  902. package/dist/probes/IrradianceVolume.d.ts.map +1 -0
  903. package/dist/probes/IrradianceVolume.js +230 -0
  904. package/dist/probes/IrradianceVolume.js.map +1 -0
  905. package/dist/probes/LtcLuts.d.ts +30 -0
  906. package/dist/probes/LtcLuts.d.ts.map +1 -0
  907. package/dist/probes/LtcLuts.js +120 -0
  908. package/dist/probes/LtcLuts.js.map +1 -0
  909. package/dist/probes/Prd02ProbesContributor.d.ts +53 -0
  910. package/dist/probes/Prd02ProbesContributor.d.ts.map +1 -0
  911. package/dist/probes/Prd02ProbesContributor.js +241 -0
  912. package/dist/probes/Prd02ProbesContributor.js.map +1 -0
  913. package/dist/probes/ProbeBoxProjection.d.ts +53 -0
  914. package/dist/probes/ProbeBoxProjection.d.ts.map +1 -0
  915. package/dist/probes/ProbeBoxProjection.js +99 -0
  916. package/dist/probes/ProbeBoxProjection.js.map +1 -0
  917. package/dist/probes/ReflectionProbeSystem.d.ts +64 -0
  918. package/dist/probes/ReflectionProbeSystem.d.ts.map +1 -0
  919. package/dist/probes/ReflectionProbeSystem.js +157 -0
  920. package/dist/probes/ReflectionProbeSystem.js.map +1 -0
  921. package/dist/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  922. package/dist/production-runtime/PBRHDRPipeline.js +23 -9
  923. package/dist/production-runtime/PBRHDRPipeline.js.map +1 -1
  924. package/dist/production-runtime/ProductionRendererTypes.d.ts +17 -6
  925. package/dist/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
  926. package/dist/production-runtime/ProductionRendererTypes.js.map +1 -1
  927. package/dist/production-runtime/ProductionRuntimeRenderer.d.ts +3 -0
  928. package/dist/production-runtime/ProductionRuntimeRenderer.d.ts.map +1 -1
  929. package/dist/production-runtime/ProductionRuntimeRenderer.js +8 -1
  930. package/dist/production-runtime/ProductionRuntimeRenderer.js.map +1 -1
  931. package/dist/production-runtime/ProductionWebGL2Renderer.d.ts +4 -0
  932. package/dist/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
  933. package/dist/production-runtime/ProductionWebGL2Renderer.js +15 -0
  934. package/dist/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
  935. package/dist/production-runtime/ProductionWebGPURenderer.d.ts +11 -5
  936. package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  937. package/dist/production-runtime/ProductionWebGPURenderer.js +38 -47
  938. package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  939. package/dist/production-runtime/backendSelection.d.ts +26 -0
  940. package/dist/production-runtime/backendSelection.d.ts.map +1 -0
  941. package/dist/production-runtime/backendSelection.js +46 -0
  942. package/dist/production-runtime/backendSelection.js.map +1 -0
  943. package/dist/production-runtime/backends/WebGL2RendererBackend.d.ts +1 -1
  944. package/dist/production-runtime/backends/WebGL2RendererBackend.d.ts.map +1 -1
  945. package/dist/production-runtime/backends/WebGL2RendererBackend.js +8 -4
  946. package/dist/production-runtime/backends/WebGL2RendererBackend.js.map +1 -1
  947. package/dist/production-runtime/backends/WebGPURendererBackend.d.ts +2 -19
  948. package/dist/production-runtime/backends/WebGPURendererBackend.d.ts.map +1 -1
  949. package/dist/production-runtime/backends/WebGPURendererBackend.js +2 -18
  950. package/dist/production-runtime/backends/WebGPURendererBackend.js.map +1 -1
  951. package/dist/production-runtime/backends/webgl2/WebGL2Buffer.d.ts +2 -10
  952. package/dist/production-runtime/backends/webgl2/WebGL2Buffer.d.ts.map +1 -1
  953. package/dist/production-runtime/backends/webgl2/WebGL2Buffer.js +2 -7
  954. package/dist/production-runtime/backends/webgl2/WebGL2Buffer.js.map +1 -1
  955. package/dist/production-runtime/backends/webgl2/WebGL2Capabilities.d.ts +2 -10
  956. package/dist/production-runtime/backends/webgl2/WebGL2Capabilities.d.ts.map +1 -1
  957. package/dist/production-runtime/backends/webgl2/WebGL2Capabilities.js +2 -7
  958. package/dist/production-runtime/backends/webgl2/WebGL2Capabilities.js.map +1 -1
  959. package/dist/production-runtime/backends/webgl2/WebGL2RenderTarget.d.ts +2 -10
  960. package/dist/production-runtime/backends/webgl2/WebGL2RenderTarget.d.ts.map +1 -1
  961. package/dist/production-runtime/backends/webgl2/WebGL2RenderTarget.js +2 -7
  962. package/dist/production-runtime/backends/webgl2/WebGL2RenderTarget.js.map +1 -1
  963. package/dist/production-runtime/backends/webgl2/WebGL2Shader.d.ts +2 -10
  964. package/dist/production-runtime/backends/webgl2/WebGL2Shader.d.ts.map +1 -1
  965. package/dist/production-runtime/backends/webgl2/WebGL2Shader.js +2 -7
  966. package/dist/production-runtime/backends/webgl2/WebGL2Shader.js.map +1 -1
  967. package/dist/production-runtime/backends/webgl2/WebGL2StateCache.d.ts +1 -0
  968. package/dist/production-runtime/backends/webgl2/WebGL2StateCache.d.ts.map +1 -1
  969. package/dist/production-runtime/backends/webgl2/WebGL2StateCache.js +1 -0
  970. package/dist/production-runtime/backends/webgl2/WebGL2StateCache.js.map +1 -1
  971. package/dist/production-runtime/backends/webgl2/WebGL2Texture.d.ts +2 -10
  972. package/dist/production-runtime/backends/webgl2/WebGL2Texture.d.ts.map +1 -1
  973. package/dist/production-runtime/backends/webgl2/WebGL2Texture.js +2 -7
  974. package/dist/production-runtime/backends/webgl2/WebGL2Texture.js.map +1 -1
  975. package/dist/production-runtime/backends/webgpu/WebGPUBuffer.d.ts +2 -10
  976. package/dist/production-runtime/backends/webgpu/WebGPUBuffer.d.ts.map +1 -1
  977. package/dist/production-runtime/backends/webgpu/WebGPUBuffer.js +2 -7
  978. package/dist/production-runtime/backends/webgpu/WebGPUBuffer.js.map +1 -1
  979. package/dist/production-runtime/backends/webgpu/WebGPUCapabilities.d.ts +2 -10
  980. package/dist/production-runtime/backends/webgpu/WebGPUCapabilities.d.ts.map +1 -1
  981. package/dist/production-runtime/backends/webgpu/WebGPUCapabilities.js +2 -7
  982. package/dist/production-runtime/backends/webgpu/WebGPUCapabilities.js.map +1 -1
  983. package/dist/production-runtime/backends/webgpu/WebGPURenderTarget.d.ts +2 -10
  984. package/dist/production-runtime/backends/webgpu/WebGPURenderTarget.d.ts.map +1 -1
  985. package/dist/production-runtime/backends/webgpu/WebGPURenderTarget.js +2 -7
  986. package/dist/production-runtime/backends/webgpu/WebGPURenderTarget.js.map +1 -1
  987. package/dist/production-runtime/backends/webgpu/WebGPUShader.d.ts +2 -10
  988. package/dist/production-runtime/backends/webgpu/WebGPUShader.d.ts.map +1 -1
  989. package/dist/production-runtime/backends/webgpu/WebGPUShader.js +2 -7
  990. package/dist/production-runtime/backends/webgpu/WebGPUShader.js.map +1 -1
  991. package/dist/production-runtime/backends/webgpu/WebGPUTexture.d.ts +2 -10
  992. package/dist/production-runtime/backends/webgpu/WebGPUTexture.d.ts.map +1 -1
  993. package/dist/production-runtime/backends/webgpu/WebGPUTexture.js +2 -7
  994. package/dist/production-runtime/backends/webgpu/WebGPUTexture.js.map +1 -1
  995. package/dist/production-runtime/framegraph/FrameGraph.d.ts +4 -2
  996. package/dist/production-runtime/framegraph/FrameGraph.d.ts.map +1 -1
  997. package/dist/production-runtime/framegraph/FrameGraph.js +62 -4
  998. package/dist/production-runtime/framegraph/FrameGraph.js.map +1 -1
  999. package/dist/production-runtime/framegraph/NativeFrameGraphBindings.d.ts +32 -0
  1000. package/dist/production-runtime/framegraph/NativeFrameGraphBindings.d.ts.map +1 -0
  1001. package/dist/production-runtime/framegraph/NativeFrameGraphBindings.js +111 -0
  1002. package/dist/production-runtime/framegraph/NativeFrameGraphBindings.js.map +1 -0
  1003. package/dist/production-runtime/framegraph/RenderPass.d.ts +23 -0
  1004. package/dist/production-runtime/framegraph/RenderPass.d.ts.map +1 -1
  1005. package/dist/production-runtime/framegraph/RenderPass.js +87 -1
  1006. package/dist/production-runtime/framegraph/RenderPass.js.map +1 -1
  1007. package/dist/production-runtime/index.d.ts +8 -6
  1008. package/dist/production-runtime/index.d.ts.map +1 -1
  1009. package/dist/production-runtime/index.js +10 -3
  1010. package/dist/production-runtime/index.js.map +1 -1
  1011. package/dist/production-runtime/materials/GLTFMaterialAdapter.d.ts +12 -13
  1012. package/dist/production-runtime/materials/GLTFMaterialAdapter.d.ts.map +1 -1
  1013. package/dist/production-runtime/materials/GLTFMaterialAdapter.js +10 -4
  1014. package/dist/production-runtime/materials/GLTFMaterialAdapter.js.map +1 -1
  1015. package/dist/production-runtime/materials/GLTFPBRMaterialAdapter.d.ts +9 -2
  1016. package/dist/production-runtime/materials/GLTFPBRMaterialAdapter.d.ts.map +1 -1
  1017. package/dist/production-runtime/materials/GLTFPBRMaterialAdapter.js +7 -1
  1018. package/dist/production-runtime/materials/GLTFPBRMaterialAdapter.js.map +1 -1
  1019. package/dist/production-runtime/materials/MaterialCompiler.d.ts +10 -8
  1020. package/dist/production-runtime/materials/MaterialCompiler.d.ts.map +1 -1
  1021. package/dist/production-runtime/materials/MaterialCompiler.js +9 -4
  1022. package/dist/production-runtime/materials/MaterialCompiler.js.map +1 -1
  1023. package/dist/production-runtime/materials/PBRShaderFeatures.d.ts.map +1 -1
  1024. package/dist/production-runtime/materials/PBRShaderFeatures.js +30 -1
  1025. package/dist/production-runtime/materials/PBRShaderFeatures.js.map +1 -1
  1026. package/dist/production-runtime/passes/DepthPrepass.d.ts +4 -12
  1027. package/dist/production-runtime/passes/DepthPrepass.d.ts.map +1 -1
  1028. package/dist/production-runtime/passes/DepthPrepass.js +3 -11
  1029. package/dist/production-runtime/passes/DepthPrepass.js.map +1 -1
  1030. package/dist/production-runtime/passes/FramegraphTopology.js +1 -1
  1031. package/dist/production-runtime/passes/FramegraphTopology.js.map +1 -1
  1032. package/dist/production-runtime/passes/OpaquePass.d.ts +3 -8
  1033. package/dist/production-runtime/passes/OpaquePass.d.ts.map +1 -1
  1034. package/dist/production-runtime/passes/OpaquePass.js +3 -1
  1035. package/dist/production-runtime/passes/OpaquePass.js.map +1 -1
  1036. package/dist/production-runtime/passes/ShadowPass.d.ts +3 -8
  1037. package/dist/production-runtime/passes/ShadowPass.d.ts.map +1 -1
  1038. package/dist/production-runtime/passes/ShadowPass.js +2 -0
  1039. package/dist/production-runtime/passes/ShadowPass.js.map +1 -1
  1040. package/dist/production-runtime/passes/SkyboxPass.d.ts +3 -7
  1041. package/dist/production-runtime/passes/SkyboxPass.d.ts.map +1 -1
  1042. package/dist/production-runtime/passes/SkyboxPass.js +2 -0
  1043. package/dist/production-runtime/passes/SkyboxPass.js.map +1 -1
  1044. package/dist/production-runtime/passes/ToneMappingPass.d.ts +7 -10
  1045. package/dist/production-runtime/passes/ToneMappingPass.d.ts.map +1 -1
  1046. package/dist/production-runtime/passes/ToneMappingPass.js +9 -0
  1047. package/dist/production-runtime/passes/ToneMappingPass.js.map +1 -1
  1048. package/dist/production-runtime/passes/TransparentPass.d.ts +4 -9
  1049. package/dist/production-runtime/passes/TransparentPass.d.ts.map +1 -1
  1050. package/dist/production-runtime/passes/TransparentPass.js +6 -1
  1051. package/dist/production-runtime/passes/TransparentPass.js.map +1 -1
  1052. package/dist/production-runtime/renderProofs.d.ts +54 -0
  1053. package/dist/production-runtime/renderProofs.d.ts.map +1 -0
  1054. package/dist/production-runtime/renderProofs.js +245 -0
  1055. package/dist/production-runtime/renderProofs.js.map +1 -0
  1056. package/dist/program/DFGLut.d.ts +23 -0
  1057. package/dist/program/DFGLut.d.ts.map +1 -0
  1058. package/dist/program/DFGLut.js +58 -0
  1059. package/dist/program/DFGLut.js.map +1 -0
  1060. package/dist/program/DFGLutData.d.ts +35 -0
  1061. package/dist/program/DFGLutData.d.ts.map +1 -0
  1062. package/dist/program/DFGLutData.js +52 -0
  1063. package/dist/program/DFGLutData.js.map +1 -0
  1064. package/dist/program/FeatureSelect.d.ts +35 -0
  1065. package/dist/program/FeatureSelect.d.ts.map +1 -0
  1066. package/dist/program/FeatureSelect.js +88 -0
  1067. package/dist/program/FeatureSelect.js.map +1 -0
  1068. package/dist/program/MaterialFeatures.d.ts +66 -0
  1069. package/dist/program/MaterialFeatures.d.ts.map +1 -0
  1070. package/dist/program/MaterialFeatures.js +242 -0
  1071. package/dist/program/MaterialFeatures.js.map +1 -0
  1072. package/dist/program/ProgramCache.d.ts +83 -0
  1073. package/dist/program/ProgramCache.d.ts.map +1 -0
  1074. package/dist/program/ProgramCache.js +194 -0
  1075. package/dist/program/ProgramCache.js.map +1 -0
  1076. package/dist/program/ProgramFeatures.d.ts +21 -0
  1077. package/dist/program/ProgramFeatures.d.ts.map +1 -0
  1078. package/dist/program/ProgramFeatures.js +95 -0
  1079. package/dist/program/ProgramFeatures.js.map +1 -0
  1080. package/dist/program/ProgramGenerator.d.ts +60 -0
  1081. package/dist/program/ProgramGenerator.d.ts.map +1 -0
  1082. package/dist/program/ProgramGenerator.js +760 -0
  1083. package/dist/program/ProgramGenerator.js.map +1 -0
  1084. package/dist/program/ProgramKey.d.ts +10 -0
  1085. package/dist/program/ProgramKey.d.ts.map +1 -0
  1086. package/dist/program/ProgramKey.js +13 -0
  1087. package/dist/program/ProgramKey.js.map +1 -0
  1088. package/dist/program/ProgramWarmup.d.ts +37 -0
  1089. package/dist/program/ProgramWarmup.d.ts.map +1 -0
  1090. package/dist/program/ProgramWarmup.js +68 -0
  1091. package/dist/program/ProgramWarmup.js.map +1 -0
  1092. package/dist/program/UniformLayout.d.ts +40 -0
  1093. package/dist/program/UniformLayout.d.ts.map +1 -0
  1094. package/dist/program/UniformLayout.js +105 -0
  1095. package/dist/program/UniformLayout.js.map +1 -0
  1096. package/dist/program/chunks/alpha.glsl.d.ts +7 -0
  1097. package/dist/program/chunks/alpha.glsl.d.ts.map +1 -0
  1098. package/dist/program/chunks/alpha.glsl.js +17 -0
  1099. package/dist/program/chunks/alpha.glsl.js.map +1 -0
  1100. package/dist/program/chunks/brdf.glsl.d.ts +12 -0
  1101. package/dist/program/chunks/brdf.glsl.d.ts.map +1 -0
  1102. package/dist/program/chunks/brdf.glsl.js +144 -0
  1103. package/dist/program/chunks/brdf.glsl.js.map +1 -0
  1104. package/dist/program/chunks/colorspace.glsl.d.ts +8 -0
  1105. package/dist/program/chunks/colorspace.glsl.d.ts.map +1 -0
  1106. package/dist/program/chunks/colorspace.glsl.js +16 -0
  1107. package/dist/program/chunks/colorspace.glsl.js.map +1 -0
  1108. package/dist/program/chunks/common.glsl.d.ts +7 -0
  1109. package/dist/program/chunks/common.glsl.d.ts.map +1 -0
  1110. package/dist/program/chunks/common.glsl.js +25 -0
  1111. package/dist/program/chunks/common.glsl.js.map +1 -0
  1112. package/dist/program/chunks/depth.glsl.d.ts +9 -0
  1113. package/dist/program/chunks/depth.glsl.d.ts.map +1 -0
  1114. package/dist/program/chunks/depth.glsl.js +18 -0
  1115. package/dist/program/chunks/depth.glsl.js.map +1 -0
  1116. package/dist/program/chunks/drawId.wgsl.d.ts +9 -0
  1117. package/dist/program/chunks/drawId.wgsl.d.ts.map +1 -0
  1118. package/dist/program/chunks/drawId.wgsl.js +29 -0
  1119. package/dist/program/chunks/drawId.wgsl.js.map +1 -0
  1120. package/dist/program/chunks/fog_default.glsl.d.ts +8 -0
  1121. package/dist/program/chunks/fog_default.glsl.d.ts.map +1 -0
  1122. package/dist/program/chunks/fog_default.glsl.js +31 -0
  1123. package/dist/program/chunks/fog_default.glsl.js.map +1 -0
  1124. package/dist/program/chunks/indirect_default.glsl.d.ts +29 -0
  1125. package/dist/program/chunks/indirect_default.glsl.d.ts.map +1 -0
  1126. package/dist/program/chunks/indirect_default.glsl.js +113 -0
  1127. package/dist/program/chunks/indirect_default.glsl.js.map +1 -0
  1128. package/dist/program/chunks/instanceEmissive.wgsl.d.ts +10 -0
  1129. package/dist/program/chunks/instanceEmissive.wgsl.d.ts.map +1 -0
  1130. package/dist/program/chunks/instanceEmissive.wgsl.js +21 -0
  1131. package/dist/program/chunks/instanceEmissive.wgsl.js.map +1 -0
  1132. package/dist/program/chunks/instancing.glsl.d.ts +8 -0
  1133. package/dist/program/chunks/instancing.glsl.d.ts.map +1 -0
  1134. package/dist/program/chunks/instancing.glsl.js +25 -0
  1135. package/dist/program/chunks/instancing.glsl.js.map +1 -0
  1136. package/dist/program/chunks/lights_legacy.glsl.d.ts +15 -0
  1137. package/dist/program/chunks/lights_legacy.glsl.d.ts.map +1 -0
  1138. package/dist/program/chunks/lights_legacy.glsl.js +95 -0
  1139. package/dist/program/chunks/lights_legacy.glsl.js.map +1 -0
  1140. package/dist/program/chunks/manifest.d.ts +42 -0
  1141. package/dist/program/chunks/manifest.d.ts.map +1 -0
  1142. package/dist/program/chunks/manifest.js +48 -0
  1143. package/dist/program/chunks/manifest.js.map +1 -0
  1144. package/dist/program/chunks/normal.glsl.d.ts +8 -0
  1145. package/dist/program/chunks/normal.glsl.d.ts.map +1 -0
  1146. package/dist/program/chunks/normal.glsl.js +34 -0
  1147. package/dist/program/chunks/normal.glsl.js.map +1 -0
  1148. package/dist/program/chunks/shadow_forward.glsl.d.ts +23 -0
  1149. package/dist/program/chunks/shadow_forward.glsl.d.ts.map +1 -0
  1150. package/dist/program/chunks/shadow_forward.glsl.js +73 -0
  1151. package/dist/program/chunks/shadow_forward.glsl.js.map +1 -0
  1152. package/dist/quality/DeviceClasses.d.ts +31 -0
  1153. package/dist/quality/DeviceClasses.d.ts.map +1 -0
  1154. package/dist/quality/DeviceClasses.js +83 -0
  1155. package/dist/quality/DeviceClasses.js.map +1 -0
  1156. package/dist/quality/DeviceProbe.d.ts +42 -0
  1157. package/dist/quality/DeviceProbe.d.ts.map +1 -0
  1158. package/dist/quality/DeviceProbe.js +83 -0
  1159. package/dist/quality/DeviceProbe.js.map +1 -0
  1160. package/dist/quality/FrameStats.d.ts +62 -0
  1161. package/dist/quality/FrameStats.d.ts.map +1 -0
  1162. package/dist/quality/FrameStats.js +220 -0
  1163. package/dist/quality/FrameStats.js.map +1 -0
  1164. package/dist/quality/PostprocessGuard.d.ts +49 -0
  1165. package/dist/quality/PostprocessGuard.d.ts.map +1 -0
  1166. package/dist/quality/PostprocessGuard.js +92 -0
  1167. package/dist/quality/PostprocessGuard.js.map +1 -0
  1168. package/dist/quality/QualityController.d.ts +93 -0
  1169. package/dist/quality/QualityController.d.ts.map +1 -0
  1170. package/dist/quality/QualityController.js +248 -0
  1171. package/dist/quality/QualityController.js.map +1 -0
  1172. package/dist/quality/QualityGovernor.d.ts +78 -0
  1173. package/dist/quality/QualityGovernor.d.ts.map +1 -0
  1174. package/dist/quality/QualityGovernor.js +170 -0
  1175. package/dist/quality/QualityGovernor.js.map +1 -0
  1176. package/dist/quality/QualityTier.d.ts +17 -0
  1177. package/dist/quality/QualityTier.d.ts.map +1 -0
  1178. package/dist/quality/QualityTier.js +23 -0
  1179. package/dist/quality/QualityTier.js.map +1 -0
  1180. package/dist/quality/RenderScaleController.d.ts +35 -0
  1181. package/dist/quality/RenderScaleController.d.ts.map +1 -0
  1182. package/dist/quality/RenderScaleController.js +57 -0
  1183. package/dist/quality/RenderScaleController.js.map +1 -0
  1184. package/dist/quality/RetentionPolicy.d.ts +11 -0
  1185. package/dist/quality/RetentionPolicy.d.ts.map +1 -0
  1186. package/dist/quality/RetentionPolicy.js +12 -0
  1187. package/dist/quality/RetentionPolicy.js.map +1 -0
  1188. package/dist/quality/TierResolver.d.ts +52 -0
  1189. package/dist/quality/TierResolver.d.ts.map +1 -0
  1190. package/dist/quality/TierResolver.js +155 -0
  1191. package/dist/quality/TierResolver.js.map +1 -0
  1192. package/dist/quality/liveTier.d.ts +23 -0
  1193. package/dist/quality/liveTier.d.ts.map +1 -0
  1194. package/dist/quality/liveTier.js +16 -0
  1195. package/dist/quality/liveTier.js.map +1 -0
  1196. package/dist/reference/BloomPass.d.ts +10 -0
  1197. package/dist/reference/BloomPass.d.ts.map +1 -0
  1198. package/dist/reference/BloomPass.js +18 -0
  1199. package/dist/reference/BloomPass.js.map +1 -0
  1200. package/dist/reference/DepthHazePass.d.ts +12 -0
  1201. package/dist/reference/DepthHazePass.d.ts.map +1 -0
  1202. package/dist/reference/DepthHazePass.js +20 -0
  1203. package/dist/reference/DepthHazePass.js.map +1 -0
  1204. package/dist/reference/EffectComposer.d.ts +110 -0
  1205. package/dist/reference/EffectComposer.d.ts.map +1 -0
  1206. package/dist/reference/EffectComposer.js +247 -0
  1207. package/dist/reference/EffectComposer.js.map +1 -0
  1208. package/dist/reference/FilmGrainPass.d.ts +9 -0
  1209. package/dist/reference/FilmGrainPass.d.ts.map +1 -0
  1210. package/dist/reference/FilmGrainPass.js +17 -0
  1211. package/dist/reference/FilmGrainPass.js.map +1 -0
  1212. package/dist/reference/PostProcessPass.d.ts +511 -0
  1213. package/dist/reference/PostProcessPass.d.ts.map +1 -0
  1214. package/dist/reference/PostProcessPass.js +2020 -0
  1215. package/dist/reference/PostProcessPass.js.map +1 -0
  1216. package/dist/reference/SSAOPass.d.ts +6 -0
  1217. package/dist/reference/SSAOPass.d.ts.map +1 -0
  1218. package/dist/reference/SSAOPass.js +18 -0
  1219. package/dist/reference/SSAOPass.js.map +1 -0
  1220. package/dist/reference/VignettePass.d.ts +10 -0
  1221. package/dist/reference/VignettePass.d.ts.map +1 -0
  1222. package/dist/reference/VignettePass.js +17 -0
  1223. package/dist/reference/VignettePass.js.map +1 -0
  1224. package/dist/reference/index.d.ts +15 -0
  1225. package/dist/reference/index.d.ts.map +1 -0
  1226. package/dist/reference/index.js +15 -0
  1227. package/dist/reference/index.js.map +1 -0
  1228. package/dist/reflection-surfaces.d.ts +5 -0
  1229. package/dist/reflection-surfaces.d.ts.map +1 -0
  1230. package/dist/reflection-surfaces.js +3 -0
  1231. package/dist/reflection-surfaces.js.map +1 -0
  1232. package/dist/renderer/Background.d.ts +49 -0
  1233. package/dist/renderer/Background.d.ts.map +1 -0
  1234. package/dist/renderer/Background.js +259 -0
  1235. package/dist/renderer/Background.js.map +1 -0
  1236. package/dist/renderer/CullingBatching.d.ts +55 -0
  1237. package/dist/renderer/CullingBatching.d.ts.map +1 -0
  1238. package/dist/renderer/CullingBatching.js +362 -0
  1239. package/dist/renderer/CullingBatching.js.map +1 -0
  1240. package/dist/renderer/DeviceLifecycle.d.ts +29 -0
  1241. package/dist/renderer/DeviceLifecycle.d.ts.map +1 -0
  1242. package/dist/renderer/DeviceLifecycle.js +48 -0
  1243. package/dist/renderer/DeviceLifecycle.js.map +1 -0
  1244. package/dist/renderer/FrameGraph.d.ts +96 -0
  1245. package/dist/renderer/FrameGraph.d.ts.map +1 -0
  1246. package/dist/renderer/FrameGraph.js +301 -0
  1247. package/dist/renderer/FrameGraph.js.map +1 -0
  1248. package/dist/renderer/InterleavedTransparentPass.d.ts +31 -0
  1249. package/dist/renderer/InterleavedTransparentPass.d.ts.map +1 -0
  1250. package/dist/renderer/InterleavedTransparentPass.js +65 -0
  1251. package/dist/renderer/InterleavedTransparentPass.js.map +1 -0
  1252. package/dist/renderer/PixelRatio.d.ts +64 -0
  1253. package/dist/renderer/PixelRatio.d.ts.map +1 -0
  1254. package/dist/renderer/PixelRatio.js +81 -0
  1255. package/dist/renderer/PixelRatio.js.map +1 -0
  1256. package/dist/renderer/PostprocessExecution.d.ts +82 -0
  1257. package/dist/renderer/PostprocessExecution.d.ts.map +1 -0
  1258. package/dist/renderer/PostprocessExecution.js +741 -0
  1259. package/dist/renderer/PostprocessExecution.js.map +1 -0
  1260. package/dist/renderer/Prd06ShaderWarmup.d.ts +32 -0
  1261. package/dist/renderer/Prd06ShaderWarmup.d.ts.map +1 -0
  1262. package/dist/renderer/Prd06ShaderWarmup.js +45 -0
  1263. package/dist/renderer/Prd06ShaderWarmup.js.map +1 -0
  1264. package/dist/renderer/RenderShared.d.ts +11 -0
  1265. package/dist/renderer/RenderShared.d.ts.map +1 -0
  1266. package/dist/renderer/RenderShared.js +47 -0
  1267. package/dist/renderer/RenderShared.js.map +1 -0
  1268. package/dist/renderer/RendererFactory.d.ts +3 -0
  1269. package/dist/renderer/RendererFactory.d.ts.map +1 -0
  1270. package/dist/renderer/RendererFactory.js +19 -0
  1271. package/dist/renderer/RendererFactory.js.map +1 -0
  1272. package/dist/renderer/RendererHost.d.ts +25 -0
  1273. package/dist/renderer/RendererHost.d.ts.map +1 -0
  1274. package/dist/renderer/RendererHost.js +4 -0
  1275. package/dist/renderer/RendererHost.js.map +1 -0
  1276. package/dist/renderer/SceneDepthCopyPass.d.ts +50 -0
  1277. package/dist/renderer/SceneDepthCopyPass.d.ts.map +1 -0
  1278. package/dist/renderer/SceneDepthCopyPass.js +124 -0
  1279. package/dist/renderer/SceneDepthCopyPass.js.map +1 -0
  1280. package/dist/renderer/ShadowOrchestration.d.ts +32 -0
  1281. package/dist/renderer/ShadowOrchestration.d.ts.map +1 -0
  1282. package/dist/renderer/ShadowOrchestration.js +491 -0
  1283. package/dist/renderer/ShadowOrchestration.js.map +1 -0
  1284. package/dist/renderer/SkinnedBounds.d.ts +6 -0
  1285. package/dist/renderer/SkinnedBounds.d.ts.map +1 -0
  1286. package/dist/renderer/SkinnedBounds.js +74 -0
  1287. package/dist/renderer/SkinnedBounds.js.map +1 -0
  1288. package/dist/renderer/coreOutputPostRoute.d.ts +40 -0
  1289. package/dist/renderer/coreOutputPostRoute.d.ts.map +1 -0
  1290. package/dist/renderer/coreOutputPostRoute.js +46 -0
  1291. package/dist/renderer/coreOutputPostRoute.js.map +1 -0
  1292. package/dist/renderer/postSkipped.d.ts +12 -0
  1293. package/dist/renderer/postSkipped.d.ts.map +1 -0
  1294. package/dist/renderer/postSkipped.js +54 -0
  1295. package/dist/renderer/postSkipped.js.map +1 -0
  1296. package/dist/renderer/qrSubFlags.d.ts +45 -0
  1297. package/dist/renderer/qrSubFlags.d.ts.map +1 -0
  1298. package/dist/renderer/qrSubFlags.js +130 -0
  1299. package/dist/renderer/qrSubFlags.js.map +1 -0
  1300. package/dist/resources/InstanceBuffer.d.ts +34 -0
  1301. package/dist/resources/InstanceBuffer.d.ts.map +1 -0
  1302. package/dist/resources/InstanceBuffer.js +96 -0
  1303. package/dist/resources/InstanceBuffer.js.map +1 -0
  1304. package/dist/resources/MorphTargetTexture.d.ts +53 -0
  1305. package/dist/resources/MorphTargetTexture.d.ts.map +1 -0
  1306. package/dist/resources/MorphTargetTexture.js +135 -0
  1307. package/dist/resources/MorphTargetTexture.js.map +1 -0
  1308. package/dist/resources/RenderTargetPool.d.ts +47 -0
  1309. package/dist/resources/RenderTargetPool.d.ts.map +1 -0
  1310. package/dist/resources/RenderTargetPool.js +113 -0
  1311. package/dist/resources/RenderTargetPool.js.map +1 -0
  1312. package/dist/resources/ResourceRegistry.d.ts +48 -0
  1313. package/dist/resources/ResourceRegistry.d.ts.map +1 -0
  1314. package/dist/resources/ResourceRegistry.js +95 -0
  1315. package/dist/resources/ResourceRegistry.js.map +1 -0
  1316. package/dist/resources/UniformBlock.d.ts +90 -0
  1317. package/dist/resources/UniformBlock.d.ts.map +1 -0
  1318. package/dist/resources/UniformBlock.js +184 -0
  1319. package/dist/resources/UniformBlock.js.map +1 -0
  1320. package/dist/shaders/camera-fade.glsl.d.ts +26 -0
  1321. package/dist/shaders/camera-fade.glsl.d.ts.map +1 -0
  1322. package/dist/shaders/camera-fade.glsl.js +109 -0
  1323. package/dist/shaders/camera-fade.glsl.js.map +1 -0
  1324. package/dist/shaders/chunks/contact_shadow.glsl.d.ts +12 -0
  1325. package/dist/shaders/chunks/contact_shadow.glsl.d.ts.map +1 -0
  1326. package/dist/shaders/chunks/contact_shadow.glsl.js +53 -0
  1327. package/dist/shaders/chunks/contact_shadow.glsl.js.map +1 -0
  1328. package/dist/shaders/chunks/lighting_ibl.glsl.d.ts +29 -0
  1329. package/dist/shaders/chunks/lighting_ibl.glsl.d.ts.map +1 -0
  1330. package/dist/shaders/chunks/lighting_ibl.glsl.js +122 -0
  1331. package/dist/shaders/chunks/lighting_ibl.glsl.js.map +1 -0
  1332. package/dist/shaders/chunks/lighting_mirrors.d.ts +18 -0
  1333. package/dist/shaders/chunks/lighting_mirrors.d.ts.map +1 -0
  1334. package/dist/shaders/chunks/lighting_mirrors.js +35 -0
  1335. package/dist/shaders/chunks/lighting_mirrors.js.map +1 -0
  1336. package/dist/shaders/chunks/lighting_punctual.glsl.d.ts +17 -0
  1337. package/dist/shaders/chunks/lighting_punctual.glsl.d.ts.map +1 -0
  1338. package/dist/shaders/chunks/lighting_punctual.glsl.js +197 -0
  1339. package/dist/shaders/chunks/lighting_punctual.glsl.js.map +1 -0
  1340. package/dist/shaders/chunks/sh9.glsl.d.ts +9 -0
  1341. package/dist/shaders/chunks/sh9.glsl.d.ts.map +1 -0
  1342. package/dist/shaders/chunks/sh9.glsl.js +41 -0
  1343. package/dist/shaders/chunks/sh9.glsl.js.map +1 -0
  1344. package/dist/shaders/chunks/shadow_caster.glsl.d.ts +10 -0
  1345. package/dist/shaders/chunks/shadow_caster.glsl.d.ts.map +1 -0
  1346. package/dist/shaders/chunks/shadow_caster.glsl.js +32 -0
  1347. package/dist/shaders/chunks/shadow_caster.glsl.js.map +1 -0
  1348. package/dist/shaders/chunks/shadow_receive.glsl.d.ts +13 -0
  1349. package/dist/shaders/chunks/shadow_receive.glsl.d.ts.map +1 -0
  1350. package/dist/shaders/chunks/shadow_receive.glsl.js +136 -0
  1351. package/dist/shaders/chunks/shadow_receive.glsl.js.map +1 -0
  1352. package/dist/shaders/debug-view.glsl.d.ts +18 -0
  1353. package/dist/shaders/debug-view.glsl.d.ts.map +1 -0
  1354. package/dist/shaders/debug-view.glsl.js +153 -0
  1355. package/dist/shaders/debug-view.glsl.js.map +1 -0
  1356. package/dist/shaders/deform/deform.glsl.d.ts +17 -0
  1357. package/dist/shaders/deform/deform.glsl.d.ts.map +1 -0
  1358. package/dist/shaders/deform/deform.glsl.js +99 -0
  1359. package/dist/shaders/deform/deform.glsl.js.map +1 -0
  1360. package/dist/shaders/deform/deform.wgsl.d.ts +15 -0
  1361. package/dist/shaders/deform/deform.wgsl.d.ts.map +1 -0
  1362. package/dist/shaders/deform/deform.wgsl.js +89 -0
  1363. package/dist/shaders/deform/deform.wgsl.js.map +1 -0
  1364. package/dist/shaders/deform/depthFeature.d.ts +22 -0
  1365. package/dist/shaders/deform/depthFeature.d.ts.map +1 -0
  1366. package/dist/shaders/deform/depthFeature.js +44 -0
  1367. package/dist/shaders/deform/depthFeature.js.map +1 -0
  1368. package/dist/shaders/deform/forwardFeature.d.ts +114 -0
  1369. package/dist/shaders/deform/forwardFeature.d.ts.map +1 -0
  1370. package/dist/shaders/deform/forwardFeature.js +300 -0
  1371. package/dist/shaders/deform/forwardFeature.js.map +1 -0
  1372. package/dist/shaders/deform/morph.glsl.d.ts +14 -0
  1373. package/dist/shaders/deform/morph.glsl.d.ts.map +1 -0
  1374. package/dist/shaders/deform/morph.glsl.js +45 -0
  1375. package/dist/shaders/deform/morph.glsl.js.map +1 -0
  1376. package/dist/shaders/deform/morph.wgsl.d.ts +21 -0
  1377. package/dist/shaders/deform/morph.wgsl.d.ts.map +1 -0
  1378. package/dist/shaders/deform/morph.wgsl.js +73 -0
  1379. package/dist/shaders/deform/morph.wgsl.js.map +1 -0
  1380. package/dist/shaders/deform/skinning.glsl.d.ts +8 -0
  1381. package/dist/shaders/deform/skinning.glsl.d.ts.map +1 -0
  1382. package/dist/shaders/deform/skinning.glsl.js +37 -0
  1383. package/dist/shaders/deform/skinning.glsl.js.map +1 -0
  1384. package/dist/shaders/deform/skinning.wgsl.d.ts +26 -0
  1385. package/dist/shaders/deform/skinning.wgsl.d.ts.map +1 -0
  1386. package/dist/shaders/deform/skinning.wgsl.js +58 -0
  1387. package/dist/shaders/deform/skinning.wgsl.js.map +1 -0
  1388. package/dist/shaders/deform/twins.d.ts +8 -0
  1389. package/dist/shaders/deform/twins.d.ts.map +1 -0
  1390. package/dist/shaders/deform/twins.js +20 -0
  1391. package/dist/shaders/deform/twins.js.map +1 -0
  1392. package/dist/shaders/lod-dither.glsl.d.ts +12 -0
  1393. package/dist/shaders/lod-dither.glsl.d.ts.map +1 -0
  1394. package/dist/shaders/lod-dither.glsl.js +101 -0
  1395. package/dist/shaders/lod-dither.glsl.js.map +1 -0
  1396. package/dist/shaders/physical/alpha_a2c.glsl.d.ts +19 -0
  1397. package/dist/shaders/physical/alpha_a2c.glsl.d.ts.map +1 -0
  1398. package/dist/shaders/physical/alpha_a2c.glsl.js +29 -0
  1399. package/dist/shaders/physical/alpha_a2c.glsl.js.map +1 -0
  1400. package/dist/shaders/physical/anisotropy.glsl.d.ts +23 -0
  1401. package/dist/shaders/physical/anisotropy.glsl.d.ts.map +1 -0
  1402. package/dist/shaders/physical/anisotropy.glsl.js +116 -0
  1403. package/dist/shaders/physical/anisotropy.glsl.js.map +1 -0
  1404. package/dist/shaders/physical/bsdf_lobes_common.glsl.d.ts +25 -0
  1405. package/dist/shaders/physical/bsdf_lobes_common.glsl.d.ts.map +1 -0
  1406. package/dist/shaders/physical/bsdf_lobes_common.glsl.js +95 -0
  1407. package/dist/shaders/physical/bsdf_lobes_common.glsl.js.map +1 -0
  1408. package/dist/shaders/physical/clearcoat.glsl.d.ts +23 -0
  1409. package/dist/shaders/physical/clearcoat.glsl.d.ts.map +1 -0
  1410. package/dist/shaders/physical/clearcoat.glsl.js +70 -0
  1411. package/dist/shaders/physical/clearcoat.glsl.js.map +1 -0
  1412. package/dist/shaders/physical/debug_view.glsl.d.ts +19 -0
  1413. package/dist/shaders/physical/debug_view.glsl.d.ts.map +1 -0
  1414. package/dist/shaders/physical/debug_view.glsl.js +76 -0
  1415. package/dist/shaders/physical/debug_view.glsl.js.map +1 -0
  1416. package/dist/shaders/physical/dispersion.glsl.d.ts +18 -0
  1417. package/dist/shaders/physical/dispersion.glsl.d.ts.map +1 -0
  1418. package/dist/shaders/physical/dispersion.glsl.js +67 -0
  1419. package/dist/shaders/physical/dispersion.glsl.js.map +1 -0
  1420. package/dist/shaders/physical/emissive_strength.glsl.d.ts +18 -0
  1421. package/dist/shaders/physical/emissive_strength.glsl.d.ts.map +1 -0
  1422. package/dist/shaders/physical/emissive_strength.glsl.js +20 -0
  1423. package/dist/shaders/physical/emissive_strength.glsl.js.map +1 -0
  1424. package/dist/shaders/physical/index.d.ts +27 -0
  1425. package/dist/shaders/physical/index.d.ts.map +1 -0
  1426. package/dist/shaders/physical/index.js +69 -0
  1427. package/dist/shaders/physical/index.js.map +1 -0
  1428. package/dist/shaders/physical/iridescence.glsl.d.ts +25 -0
  1429. package/dist/shaders/physical/iridescence.glsl.d.ts.map +1 -0
  1430. package/dist/shaders/physical/iridescence.glsl.js +186 -0
  1431. package/dist/shaders/physical/iridescence.glsl.js.map +1 -0
  1432. package/dist/shaders/physical/lobe_calls.glsl.d.ts +83 -0
  1433. package/dist/shaders/physical/lobe_calls.glsl.d.ts.map +1 -0
  1434. package/dist/shaders/physical/lobe_calls.glsl.js +397 -0
  1435. package/dist/shaders/physical/lobe_calls.glsl.js.map +1 -0
  1436. package/dist/shaders/physical/sheen.glsl.d.ts +24 -0
  1437. package/dist/shaders/physical/sheen.glsl.d.ts.map +1 -0
  1438. package/dist/shaders/physical/sheen.glsl.js +108 -0
  1439. package/dist/shaders/physical/sheen.glsl.js.map +1 -0
  1440. package/dist/shaders/physical/specular_ior.glsl.d.ts +20 -0
  1441. package/dist/shaders/physical/specular_ior.glsl.d.ts.map +1 -0
  1442. package/dist/shaders/physical/specular_ior.glsl.js +64 -0
  1443. package/dist/shaders/physical/specular_ior.glsl.js.map +1 -0
  1444. package/dist/shaders/physical/tangent_frame.glsl.d.ts +27 -0
  1445. package/dist/shaders/physical/tangent_frame.glsl.d.ts.map +1 -0
  1446. package/dist/shaders/physical/tangent_frame.glsl.js +71 -0
  1447. package/dist/shaders/physical/tangent_frame.glsl.js.map +1 -0
  1448. package/dist/shaders/physical/transmission.glsl.d.ts +25 -0
  1449. package/dist/shaders/physical/transmission.glsl.d.ts.map +1 -0
  1450. package/dist/shaders/physical/transmission.glsl.js +204 -0
  1451. package/dist/shaders/physical/transmission.glsl.js.map +1 -0
  1452. package/dist/shaders/physical/transmission_copy.glsl.d.ts +15 -0
  1453. package/dist/shaders/physical/transmission_copy.glsl.d.ts.map +1 -0
  1454. package/dist/shaders/physical/transmission_copy.glsl.js +33 -0
  1455. package/dist/shaders/physical/transmission_copy.glsl.js.map +1 -0
  1456. package/dist/shaders/physical/unlit.glsl.d.ts +17 -0
  1457. package/dist/shaders/physical/unlit.glsl.d.ts.map +1 -0
  1458. package/dist/shaders/physical/unlit.glsl.js +19 -0
  1459. package/dist/shaders/physical/unlit.glsl.js.map +1 -0
  1460. package/dist/shaders/physical/uv_transform.glsl.d.ts +18 -0
  1461. package/dist/shaders/physical/uv_transform.glsl.d.ts.map +1 -0
  1462. package/dist/shaders/physical/uv_transform.glsl.js +30 -0
  1463. package/dist/shaders/physical/uv_transform.glsl.js.map +1 -0
  1464. package/dist/shaders/physical/volume.glsl.d.ts +19 -0
  1465. package/dist/shaders/physical/volume.glsl.d.ts.map +1 -0
  1466. package/dist/shaders/physical/volume.glsl.js +47 -0
  1467. package/dist/shaders/physical/volume.glsl.js.map +1 -0
  1468. package/dist/shaders/physical-wgsl/alpha_a2c.wgsl.d.ts +8 -0
  1469. package/dist/shaders/physical-wgsl/alpha_a2c.wgsl.d.ts.map +1 -0
  1470. package/dist/shaders/physical-wgsl/alpha_a2c.wgsl.js +26 -0
  1471. package/dist/shaders/physical-wgsl/alpha_a2c.wgsl.js.map +1 -0
  1472. package/dist/shaders/physical-wgsl/anisotropy.wgsl.d.ts +10 -0
  1473. package/dist/shaders/physical-wgsl/anisotropy.wgsl.d.ts.map +1 -0
  1474. package/dist/shaders/physical-wgsl/anisotropy.wgsl.js +97 -0
  1475. package/dist/shaders/physical-wgsl/anisotropy.wgsl.js.map +1 -0
  1476. package/dist/shaders/physical-wgsl/bsdf_lobes_common.wgsl.d.ts +11 -0
  1477. package/dist/shaders/physical-wgsl/bsdf_lobes_common.wgsl.d.ts.map +1 -0
  1478. package/dist/shaders/physical-wgsl/bsdf_lobes_common.wgsl.js +76 -0
  1479. package/dist/shaders/physical-wgsl/bsdf_lobes_common.wgsl.js.map +1 -0
  1480. package/dist/shaders/physical-wgsl/clearcoat.wgsl.d.ts +9 -0
  1481. package/dist/shaders/physical-wgsl/clearcoat.wgsl.d.ts.map +1 -0
  1482. package/dist/shaders/physical-wgsl/clearcoat.wgsl.js +56 -0
  1483. package/dist/shaders/physical-wgsl/clearcoat.wgsl.js.map +1 -0
  1484. package/dist/shaders/physical-wgsl/debug_view.wgsl.d.ts +10 -0
  1485. package/dist/shaders/physical-wgsl/debug_view.wgsl.d.ts.map +1 -0
  1486. package/dist/shaders/physical-wgsl/debug_view.wgsl.js +71 -0
  1487. package/dist/shaders/physical-wgsl/debug_view.wgsl.js.map +1 -0
  1488. package/dist/shaders/physical-wgsl/dispersion.wgsl.d.ts +10 -0
  1489. package/dist/shaders/physical-wgsl/dispersion.wgsl.d.ts.map +1 -0
  1490. package/dist/shaders/physical-wgsl/dispersion.wgsl.js +51 -0
  1491. package/dist/shaders/physical-wgsl/dispersion.wgsl.js.map +1 -0
  1492. package/dist/shaders/physical-wgsl/emissive_strength.wgsl.d.ts +9 -0
  1493. package/dist/shaders/physical-wgsl/emissive_strength.wgsl.d.ts.map +1 -0
  1494. package/dist/shaders/physical-wgsl/emissive_strength.wgsl.js +15 -0
  1495. package/dist/shaders/physical-wgsl/emissive_strength.wgsl.js.map +1 -0
  1496. package/dist/shaders/physical-wgsl/index.d.ts +35 -0
  1497. package/dist/shaders/physical-wgsl/index.d.ts.map +1 -0
  1498. package/dist/shaders/physical-wgsl/index.js +51 -0
  1499. package/dist/shaders/physical-wgsl/index.js.map +1 -0
  1500. package/dist/shaders/physical-wgsl/iridescence.wgsl.d.ts +9 -0
  1501. package/dist/shaders/physical-wgsl/iridescence.wgsl.d.ts.map +1 -0
  1502. package/dist/shaders/physical-wgsl/iridescence.wgsl.js +162 -0
  1503. package/dist/shaders/physical-wgsl/iridescence.wgsl.js.map +1 -0
  1504. package/dist/shaders/physical-wgsl/sheen.wgsl.d.ts +9 -0
  1505. package/dist/shaders/physical-wgsl/sheen.wgsl.d.ts.map +1 -0
  1506. package/dist/shaders/physical-wgsl/sheen.wgsl.js +85 -0
  1507. package/dist/shaders/physical-wgsl/sheen.wgsl.js.map +1 -0
  1508. package/dist/shaders/physical-wgsl/specular_ior.wgsl.d.ts +10 -0
  1509. package/dist/shaders/physical-wgsl/specular_ior.wgsl.d.ts.map +1 -0
  1510. package/dist/shaders/physical-wgsl/specular_ior.wgsl.js +47 -0
  1511. package/dist/shaders/physical-wgsl/specular_ior.wgsl.js.map +1 -0
  1512. package/dist/shaders/physical-wgsl/tangent_frame.wgsl.d.ts +11 -0
  1513. package/dist/shaders/physical-wgsl/tangent_frame.wgsl.d.ts.map +1 -0
  1514. package/dist/shaders/physical-wgsl/tangent_frame.wgsl.js +57 -0
  1515. package/dist/shaders/physical-wgsl/tangent_frame.wgsl.js.map +1 -0
  1516. package/dist/shaders/physical-wgsl/transmission.wgsl.d.ts +14 -0
  1517. package/dist/shaders/physical-wgsl/transmission.wgsl.d.ts.map +1 -0
  1518. package/dist/shaders/physical-wgsl/transmission.wgsl.js +159 -0
  1519. package/dist/shaders/physical-wgsl/transmission.wgsl.js.map +1 -0
  1520. package/dist/shaders/physical-wgsl/unlit.wgsl.d.ts +8 -0
  1521. package/dist/shaders/physical-wgsl/unlit.wgsl.d.ts.map +1 -0
  1522. package/dist/shaders/physical-wgsl/unlit.wgsl.js +13 -0
  1523. package/dist/shaders/physical-wgsl/unlit.wgsl.js.map +1 -0
  1524. package/dist/shaders/physical-wgsl/uv_transform.wgsl.d.ts +10 -0
  1525. package/dist/shaders/physical-wgsl/uv_transform.wgsl.d.ts.map +1 -0
  1526. package/dist/shaders/physical-wgsl/uv_transform.wgsl.js +24 -0
  1527. package/dist/shaders/physical-wgsl/uv_transform.wgsl.js.map +1 -0
  1528. package/dist/shaders/physical-wgsl/volume.wgsl.d.ts +10 -0
  1529. package/dist/shaders/physical-wgsl/volume.wgsl.d.ts.map +1 -0
  1530. package/dist/shaders/physical-wgsl/volume.wgsl.js +35 -0
  1531. package/dist/shaders/physical-wgsl/volume.wgsl.js.map +1 -0
  1532. package/dist/shadows/DirectionalCascadeFitter.d.ts +97 -0
  1533. package/dist/shadows/DirectionalCascadeFitter.d.ts.map +1 -0
  1534. package/dist/shadows/DirectionalCascadeFitter.js +372 -0
  1535. package/dist/shadows/DirectionalCascadeFitter.js.map +1 -0
  1536. package/dist/shadows/Prd02DepthShaderLibrary.d.ts +77 -0
  1537. package/dist/shadows/Prd02DepthShaderLibrary.d.ts.map +1 -0
  1538. package/dist/shadows/Prd02DepthShaderLibrary.js +381 -0
  1539. package/dist/shadows/Prd02DepthShaderLibrary.js.map +1 -0
  1540. package/dist/shadows/Prd02ReceiveShadowContributor.d.ts +20 -0
  1541. package/dist/shadows/Prd02ReceiveShadowContributor.d.ts.map +1 -0
  1542. package/dist/shadows/Prd02ReceiveShadowContributor.js +20 -0
  1543. package/dist/shadows/Prd02ReceiveShadowContributor.js.map +1 -0
  1544. package/dist/shadows/Prd02ShadowBridge.d.ts +111 -0
  1545. package/dist/shadows/Prd02ShadowBridge.d.ts.map +1 -0
  1546. package/dist/shadows/Prd02ShadowBridge.js +267 -0
  1547. package/dist/shadows/Prd02ShadowBridge.js.map +1 -0
  1548. package/dist/shadows/Prd02ShadowFilter.d.ts +29 -0
  1549. package/dist/shadows/Prd02ShadowFilter.d.ts.map +1 -0
  1550. package/dist/shadows/Prd02ShadowFilter.js +35 -0
  1551. package/dist/shadows/Prd02ShadowFilter.js.map +1 -0
  1552. package/dist/shadows/Prd02ShadowsContributor.d.ts +44 -0
  1553. package/dist/shadows/Prd02ShadowsContributor.d.ts.map +1 -0
  1554. package/dist/shadows/Prd02ShadowsContributor.js +197 -0
  1555. package/dist/shadows/Prd02ShadowsContributor.js.map +1 -0
  1556. package/dist/shadows/ShadowAtlas.d.ts +59 -0
  1557. package/dist/shadows/ShadowAtlas.d.ts.map +1 -0
  1558. package/dist/shadows/ShadowAtlas.js +137 -0
  1559. package/dist/shadows/ShadowAtlas.js.map +1 -0
  1560. package/dist/shadows/ShadowDebugViews.d.ts +5 -0
  1561. package/dist/shadows/ShadowDebugViews.d.ts.map +1 -1
  1562. package/dist/shadows/ShadowDebugViews.js +15 -10
  1563. package/dist/shadows/ShadowDebugViews.js.map +1 -1
  1564. package/dist/shadows/ShadowFrameBinding.d.ts +18 -0
  1565. package/dist/shadows/ShadowFrameBinding.d.ts.map +1 -0
  1566. package/dist/shadows/ShadowFrameBinding.js +52 -0
  1567. package/dist/shadows/ShadowFrameBinding.js.map +1 -0
  1568. package/dist/shadows/ShadowSystem.d.ts +125 -0
  1569. package/dist/shadows/ShadowSystem.d.ts.map +1 -0
  1570. package/dist/shadows/ShadowSystem.js +293 -0
  1571. package/dist/shadows/ShadowSystem.js.map +1 -0
  1572. package/dist/textures/TextureBudget.d.ts +42 -0
  1573. package/dist/textures/TextureBudget.d.ts.map +1 -0
  1574. package/dist/textures/TextureBudget.js +180 -0
  1575. package/dist/textures/TextureBudget.js.map +1 -0
  1576. package/dist/vfx/BeamPass.d.ts +42 -0
  1577. package/dist/vfx/BeamPass.d.ts.map +1 -0
  1578. package/dist/vfx/BeamPass.js +249 -0
  1579. package/dist/vfx/BeamPass.js.map +1 -0
  1580. package/dist/vfx/BlendFallback.d.ts +19 -0
  1581. package/dist/vfx/BlendFallback.d.ts.map +1 -0
  1582. package/dist/vfx/BlendFallback.js +73 -0
  1583. package/dist/vfx/BlendFallback.js.map +1 -0
  1584. package/dist/vfx/DecalBatch.d.ts +120 -0
  1585. package/dist/vfx/DecalBatch.d.ts.map +1 -0
  1586. package/dist/vfx/DecalBatch.js +234 -0
  1587. package/dist/vfx/DecalBatch.js.map +1 -0
  1588. package/dist/vfx/DecalPass.d.ts +63 -0
  1589. package/dist/vfx/DecalPass.d.ts.map +1 -0
  1590. package/dist/vfx/DecalPass.js +159 -0
  1591. package/dist/vfx/DecalPass.js.map +1 -0
  1592. package/dist/vfx/LowResParticles.d.ts +31 -0
  1593. package/dist/vfx/LowResParticles.d.ts.map +1 -0
  1594. package/dist/vfx/LowResParticles.js +151 -0
  1595. package/dist/vfx/LowResParticles.js.map +1 -0
  1596. package/dist/vfx/MeshParticleBatch.d.ts +49 -0
  1597. package/dist/vfx/MeshParticleBatch.d.ts.map +1 -0
  1598. package/dist/vfx/MeshParticleBatch.js +184 -0
  1599. package/dist/vfx/MeshParticleBatch.js.map +1 -0
  1600. package/dist/vfx/MeshParticlePass.d.ts +28 -0
  1601. package/dist/vfx/MeshParticlePass.d.ts.map +1 -0
  1602. package/dist/vfx/MeshParticlePass.js +150 -0
  1603. package/dist/vfx/MeshParticlePass.js.map +1 -0
  1604. package/dist/vfx/ParticleBatchPass.d.ts +61 -0
  1605. package/dist/vfx/ParticleBatchPass.d.ts.map +1 -0
  1606. package/dist/vfx/ParticleBatchPass.js +320 -0
  1607. package/dist/vfx/ParticleBatchPass.js.map +1 -0
  1608. package/dist/vfx/ParticleGpuSim.d.ts +85 -0
  1609. package/dist/vfx/ParticleGpuSim.d.ts.map +1 -0
  1610. package/dist/vfx/ParticleGpuSim.js +301 -0
  1611. package/dist/vfx/ParticleGpuSim.js.map +1 -0
  1612. package/dist/vfx/ParticleInstanceLayout.d.ts +38 -0
  1613. package/dist/vfx/ParticleInstanceLayout.d.ts.map +1 -0
  1614. package/dist/vfx/ParticleInstanceLayout.js +105 -0
  1615. package/dist/vfx/ParticleInstanceLayout.js.map +1 -0
  1616. package/dist/vfx/ParticleSort.d.ts +21 -0
  1617. package/dist/vfx/ParticleSort.d.ts.map +1 -0
  1618. package/dist/vfx/ParticleSort.js +80 -0
  1619. package/dist/vfx/ParticleSort.js.map +1 -0
  1620. package/dist/vfx/ProceduralVolumeEmitter.d.ts +90 -0
  1621. package/dist/vfx/ProceduralVolumeEmitter.d.ts.map +1 -0
  1622. package/dist/vfx/ProceduralVolumeEmitter.js +155 -0
  1623. package/dist/vfx/ProceduralVolumeEmitter.js.map +1 -0
  1624. package/dist/vfx/RibbonBatch.d.ts +71 -0
  1625. package/dist/vfx/RibbonBatch.d.ts.map +1 -0
  1626. package/dist/vfx/RibbonBatch.js +234 -0
  1627. package/dist/vfx/RibbonBatch.js.map +1 -0
  1628. package/dist/vfx/RibbonPass.d.ts +21 -0
  1629. package/dist/vfx/RibbonPass.d.ts.map +1 -0
  1630. package/dist/vfx/RibbonPass.js +108 -0
  1631. package/dist/vfx/RibbonPass.js.map +1 -0
  1632. package/dist/vfx/SceneDepthAdapter.d.ts +28 -0
  1633. package/dist/vfx/SceneDepthAdapter.d.ts.map +1 -0
  1634. package/dist/vfx/SceneDepthAdapter.js +70 -0
  1635. package/dist/vfx/SceneDepthAdapter.js.map +1 -0
  1636. package/dist/vfx/VfxAtlas.d.ts +68 -0
  1637. package/dist/vfx/VfxAtlas.d.ts.map +1 -0
  1638. package/dist/vfx/VfxAtlas.js +106 -0
  1639. package/dist/vfx/VfxAtlas.js.map +1 -0
  1640. package/dist/vfx/contributors.d.ts +73 -0
  1641. package/dist/vfx/contributors.d.ts.map +1 -0
  1642. package/dist/vfx/contributors.js +615 -0
  1643. package/dist/vfx/contributors.js.map +1 -0
  1644. package/dist/vfx/decalLighting.d.ts +8 -0
  1645. package/dist/vfx/decalLighting.d.ts.map +1 -0
  1646. package/dist/vfx/decalLighting.js +53 -0
  1647. package/dist/vfx/decalLighting.js.map +1 -0
  1648. package/dist/vfx/depthSampler.d.ts +3 -0
  1649. package/dist/vfx/depthSampler.d.ts.map +1 -0
  1650. package/dist/vfx/depthSampler.js +10 -0
  1651. package/dist/vfx/depthSampler.js.map +1 -0
  1652. package/dist/vfx/prd07FeaturePars.d.ts +12 -0
  1653. package/dist/vfx/prd07FeaturePars.d.ts.map +1 -0
  1654. package/dist/vfx/prd07FeaturePars.js +54 -0
  1655. package/dist/vfx/prd07FeaturePars.js.map +1 -0
  1656. package/dist/vfx/shaders/beam.glsl.d.ts +11 -0
  1657. package/dist/vfx/shaders/beam.glsl.d.ts.map +1 -0
  1658. package/dist/vfx/shaders/beam.glsl.js +89 -0
  1659. package/dist/vfx/shaders/beam.glsl.js.map +1 -0
  1660. package/dist/vfx/shaders/decal.glsl.d.ts +14 -0
  1661. package/dist/vfx/shaders/decal.glsl.d.ts.map +1 -0
  1662. package/dist/vfx/shaders/decal.glsl.js +157 -0
  1663. package/dist/vfx/shaders/decal.glsl.js.map +1 -0
  1664. package/dist/vfx/shaders/gpu-sim.glsl.d.ts +5 -0
  1665. package/dist/vfx/shaders/gpu-sim.glsl.d.ts.map +1 -0
  1666. package/dist/vfx/shaders/gpu-sim.glsl.js +177 -0
  1667. package/dist/vfx/shaders/gpu-sim.glsl.js.map +1 -0
  1668. package/dist/vfx/shaders/lowresComposite.glsl.d.ts +9 -0
  1669. package/dist/vfx/shaders/lowresComposite.glsl.d.ts.map +1 -0
  1670. package/dist/vfx/shaders/lowresComposite.glsl.js +64 -0
  1671. package/dist/vfx/shaders/lowresComposite.glsl.js.map +1 -0
  1672. package/dist/vfx/shaders/mesh-particle.glsl.d.ts +4 -0
  1673. package/dist/vfx/shaders/mesh-particle.glsl.d.ts.map +1 -0
  1674. package/dist/vfx/shaders/mesh-particle.glsl.js +55 -0
  1675. package/dist/vfx/shaders/mesh-particle.glsl.js.map +1 -0
  1676. package/dist/vfx/shaders/particle.glsl.d.ts +24 -0
  1677. package/dist/vfx/shaders/particle.glsl.d.ts.map +1 -0
  1678. package/dist/vfx/shaders/particle.glsl.js +215 -0
  1679. package/dist/vfx/shaders/particle.glsl.js.map +1 -0
  1680. package/dist/vfx/shaders/ribbon.glsl.d.ts +9 -0
  1681. package/dist/vfx/shaders/ribbon.glsl.d.ts.map +1 -0
  1682. package/dist/vfx/shaders/ribbon.glsl.js +60 -0
  1683. package/dist/vfx/shaders/ribbon.glsl.js.map +1 -0
  1684. package/dist/vfx/shaders/volume.glsl.d.ts +5 -0
  1685. package/dist/vfx/shaders/volume.glsl.d.ts.map +1 -0
  1686. package/dist/vfx/shaders/volume.glsl.js +52 -0
  1687. package/dist/vfx/shaders/volume.glsl.js.map +1 -0
  1688. package/dist/webgl2/ContextLifecycle.d.ts +43 -0
  1689. package/dist/webgl2/ContextLifecycle.d.ts.map +1 -0
  1690. package/dist/webgl2/ContextLifecycle.js +189 -0
  1691. package/dist/webgl2/ContextLifecycle.js.map +1 -0
  1692. package/dist/webgl2/Counters.d.ts +58 -0
  1693. package/dist/webgl2/Counters.d.ts.map +1 -0
  1694. package/dist/webgl2/Counters.js +207 -0
  1695. package/dist/webgl2/Counters.js.map +1 -0
  1696. package/dist/webgl2/DeviceHost.d.ts +41 -0
  1697. package/dist/webgl2/DeviceHost.d.ts.map +1 -0
  1698. package/dist/webgl2/DeviceHost.js +3 -0
  1699. package/dist/webgl2/DeviceHost.js.map +1 -0
  1700. package/dist/webgl2/LegacyPost.d.ts +279 -0
  1701. package/dist/webgl2/LegacyPost.d.ts.map +1 -0
  1702. package/dist/webgl2/LegacyPost.js +2477 -0
  1703. package/dist/webgl2/LegacyPost.js.map +1 -0
  1704. package/dist/webgl2/MultiDraw.d.ts +96 -0
  1705. package/dist/webgl2/MultiDraw.d.ts.map +1 -0
  1706. package/dist/webgl2/MultiDraw.js +716 -0
  1707. package/dist/webgl2/MultiDraw.js.map +1 -0
  1708. package/dist/webgl2/Probe.d.ts +27 -0
  1709. package/dist/webgl2/Probe.d.ts.map +1 -0
  1710. package/dist/webgl2/Probe.js +303 -0
  1711. package/dist/webgl2/Probe.js.map +1 -0
  1712. package/dist/webgl2/Samplers.d.ts +20 -0
  1713. package/dist/webgl2/Samplers.d.ts.map +1 -0
  1714. package/dist/webgl2/Samplers.js +179 -0
  1715. package/dist/webgl2/Samplers.js.map +1 -0
  1716. package/dist/webgl2/TextureFormats.d.ts +48 -0
  1717. package/dist/webgl2/TextureFormats.d.ts.map +1 -0
  1718. package/dist/webgl2/TextureFormats.js +185 -0
  1719. package/dist/webgl2/TextureFormats.js.map +1 -0
  1720. package/dist/webgl2/TextureUpload.d.ts +38 -0
  1721. package/dist/webgl2/TextureUpload.d.ts.map +1 -0
  1722. package/dist/webgl2/TextureUpload.js +346 -0
  1723. package/dist/webgl2/TextureUpload.js.map +1 -0
  1724. package/dist/webgpu/WebGPUBuffer.d.ts +1 -0
  1725. package/dist/webgpu/WebGPUBuffer.d.ts.map +1 -1
  1726. package/dist/webgpu/WebGPUCompute.d.ts +1 -0
  1727. package/dist/webgpu/WebGPUCompute.d.ts.map +1 -1
  1728. package/dist/webgpu/WebGPUCompute.js +1 -0
  1729. package/dist/webgpu/WebGPUCompute.js.map +1 -1
  1730. package/dist/webgpu/WebGPUPipelineCache.d.ts +4 -0
  1731. package/dist/webgpu/WebGPUPipelineCache.d.ts.map +1 -1
  1732. package/dist/webgpu/WebGPUPipelineCache.js +4 -0
  1733. package/dist/webgpu/WebGPUPipelineCache.js.map +1 -1
  1734. package/dist/webgpu/WebGPUPostShaders.d.ts +2 -3
  1735. package/dist/webgpu/WebGPUPostShaders.d.ts.map +1 -1
  1736. package/dist/webgpu/WebGPUPostShaders.js +35 -5
  1737. package/dist/webgpu/WebGPUPostShaders.js.map +1 -1
  1738. package/dist/webgpu/WebGPUTemporal.d.ts +17 -0
  1739. package/dist/webgpu/WebGPUTemporal.d.ts.map +1 -0
  1740. package/dist/webgpu/WebGPUTemporal.js +64 -0
  1741. package/dist/webgpu/WebGPUTemporal.js.map +1 -0
  1742. package/dist/webgpu/WebGPUTexture.d.ts +1 -0
  1743. package/dist/webgpu/WebGPUTexture.d.ts.map +1 -1
  1744. package/dist/webgpu/WebGPUTexture.js.map +1 -1
  1745. package/dist/webgpu.d.ts +6 -0
  1746. package/dist/webgpu.d.ts.map +1 -1
  1747. package/dist/webgpu.js +4 -0
  1748. package/dist/webgpu.js.map +1 -1
  1749. package/dist/world/chunks.d.ts +15 -0
  1750. package/dist/world/chunks.d.ts.map +1 -0
  1751. package/dist/world/chunks.js +56 -0
  1752. package/dist/world/chunks.js.map +1 -0
  1753. package/dist/world/index.d.ts +38 -0
  1754. package/dist/world/index.d.ts.map +1 -0
  1755. package/dist/world/index.js +39 -0
  1756. package/dist/world/index.js.map +1 -0
  1757. package/dist/world/shared/shaders/worldLightFallback.d.ts +12 -0
  1758. package/dist/world/shared/shaders/worldLightFallback.d.ts.map +1 -0
  1759. package/dist/world/shared/shaders/worldLightFallback.js +82 -0
  1760. package/dist/world/shared/shaders/worldLightFallback.js.map +1 -0
  1761. package/dist/world/space/PlanetMaterial.d.ts +24 -0
  1762. package/dist/world/space/PlanetMaterial.d.ts.map +1 -0
  1763. package/dist/world/space/PlanetMaterial.js +82 -0
  1764. package/dist/world/space/PlanetMaterial.js.map +1 -0
  1765. package/dist/world/space/SpaceSkyBake.d.ts +46 -0
  1766. package/dist/world/space/SpaceSkyBake.d.ts.map +1 -0
  1767. package/dist/world/space/SpaceSkyBake.js +145 -0
  1768. package/dist/world/space/SpaceSkyBake.js.map +1 -0
  1769. package/dist/world/space/shaders/planet.d.ts +8 -0
  1770. package/dist/world/space/shaders/planet.d.ts.map +1 -0
  1771. package/dist/world/space/shaders/planet.js +55 -0
  1772. package/dist/world/space/shaders/planet.js.map +1 -0
  1773. package/dist/world/space/shaders/spaceBake.d.ts +9 -0
  1774. package/dist/world/space/shaders/spaceBake.d.ts.map +1 -0
  1775. package/dist/world/space/shaders/spaceBake.js +102 -0
  1776. package/dist/world/space/shaders/spaceBake.js.map +1 -0
  1777. package/dist/world/terrain/SplatBake.d.ts +76 -0
  1778. package/dist/world/terrain/SplatBake.d.ts.map +1 -0
  1779. package/dist/world/terrain/SplatBake.js +308 -0
  1780. package/dist/world/terrain/SplatBake.js.map +1 -0
  1781. package/dist/world/terrain/TerrainCdlod.d.ts +67 -0
  1782. package/dist/world/terrain/TerrainCdlod.d.ts.map +1 -0
  1783. package/dist/world/terrain/TerrainCdlod.js +115 -0
  1784. package/dist/world/terrain/TerrainCdlod.js.map +1 -0
  1785. package/dist/world/terrain/TerrainHeightTexture.d.ts +44 -0
  1786. package/dist/world/terrain/TerrainHeightTexture.d.ts.map +1 -0
  1787. package/dist/world/terrain/TerrainHeightTexture.js +173 -0
  1788. package/dist/world/terrain/TerrainHeightTexture.js.map +1 -0
  1789. package/dist/world/terrain/TerrainPatchGeometry.d.ts +18 -0
  1790. package/dist/world/terrain/TerrainPatchGeometry.d.ts.map +1 -0
  1791. package/dist/world/terrain/TerrainPatchGeometry.js +40 -0
  1792. package/dist/world/terrain/TerrainPatchGeometry.js.map +1 -0
  1793. package/dist/world/terrain/shaders/terrain.vert.glsl.d.ts +19 -0
  1794. package/dist/world/terrain/shaders/terrain.vert.glsl.d.ts.map +1 -0
  1795. package/dist/world/terrain/shaders/terrain.vert.glsl.js +162 -0
  1796. package/dist/world/terrain/shaders/terrain.vert.glsl.js.map +1 -0
  1797. package/dist/world/terrain/shaders/terrainCdlod.d.ts +23 -0
  1798. package/dist/world/terrain/shaders/terrainCdlod.d.ts.map +1 -0
  1799. package/dist/world/terrain/shaders/terrainCdlod.js +110 -0
  1800. package/dist/world/terrain/shaders/terrainCdlod.js.map +1 -0
  1801. package/dist/world/terrain/shaders/terrainSplat.d.ts +26 -0
  1802. package/dist/world/terrain/shaders/terrainSplat.d.ts.map +1 -0
  1803. package/dist/world/terrain/shaders/terrainSplat.js +181 -0
  1804. package/dist/world/terrain/shaders/terrainSplat.js.map +1 -0
  1805. package/dist/world/vegetation/FoliageMaterial.d.ts +14 -0
  1806. package/dist/world/vegetation/FoliageMaterial.d.ts.map +1 -0
  1807. package/dist/world/vegetation/FoliageMaterial.js +107 -0
  1808. package/dist/world/vegetation/FoliageMaterial.js.map +1 -0
  1809. package/dist/world/vegetation/GrassField.d.ts +43 -0
  1810. package/dist/world/vegetation/GrassField.d.ts.map +1 -0
  1811. package/dist/world/vegetation/GrassField.js +68 -0
  1812. package/dist/world/vegetation/GrassField.js.map +1 -0
  1813. package/dist/world/vegetation/ImpostorMaterial.d.ts +20 -0
  1814. package/dist/world/vegetation/ImpostorMaterial.d.ts.map +1 -0
  1815. package/dist/world/vegetation/ImpostorMaterial.js +80 -0
  1816. package/dist/world/vegetation/ImpostorMaterial.js.map +1 -0
  1817. package/dist/world/vegetation/InstanceChunkGrid.d.ts +67 -0
  1818. package/dist/world/vegetation/InstanceChunkGrid.d.ts.map +1 -0
  1819. package/dist/world/vegetation/InstanceChunkGrid.js +150 -0
  1820. package/dist/world/vegetation/InstanceChunkGrid.js.map +1 -0
  1821. package/dist/world/vegetation/WindCpu.d.ts +19 -0
  1822. package/dist/world/vegetation/WindCpu.d.ts.map +1 -0
  1823. package/dist/world/vegetation/WindCpu.js +43 -0
  1824. package/dist/world/vegetation/WindCpu.js.map +1 -0
  1825. package/dist/world/vegetation/WindField.d.ts +42 -0
  1826. package/dist/world/vegetation/WindField.d.ts.map +1 -0
  1827. package/dist/world/vegetation/WindField.js +154 -0
  1828. package/dist/world/vegetation/WindField.js.map +1 -0
  1829. package/dist/world/vegetation/shaders/foliage.d.ts +8 -0
  1830. package/dist/world/vegetation/shaders/foliage.d.ts.map +1 -0
  1831. package/dist/world/vegetation/shaders/foliage.js +104 -0
  1832. package/dist/world/vegetation/shaders/foliage.js.map +1 -0
  1833. package/dist/world/vegetation/shaders/grass.d.ts +10 -0
  1834. package/dist/world/vegetation/shaders/grass.d.ts.map +1 -0
  1835. package/dist/world/vegetation/shaders/grass.js +79 -0
  1836. package/dist/world/vegetation/shaders/grass.js.map +1 -0
  1837. package/dist/world/vegetation/shaders/impostor.d.ts +9 -0
  1838. package/dist/world/vegetation/shaders/impostor.d.ts.map +1 -0
  1839. package/dist/world/vegetation/shaders/impostor.js +97 -0
  1840. package/dist/world/vegetation/shaders/impostor.js.map +1 -0
  1841. package/dist/world/vegetation/shaders/wind.d.ts +9 -0
  1842. package/dist/world/vegetation/shaders/wind.d.ts.map +1 -0
  1843. package/dist/world/vegetation/shaders/wind.js +103 -0
  1844. package/dist/world/vegetation/shaders/wind.js.map +1 -0
  1845. package/dist/world/water/GerstnerWaves.d.ts +65 -0
  1846. package/dist/world/water/GerstnerWaves.d.ts.map +1 -0
  1847. package/dist/world/water/GerstnerWaves.js +182 -0
  1848. package/dist/world/water/GerstnerWaves.js.map +1 -0
  1849. package/dist/world/water/ReflectionViewPass.d.ts +46 -0
  1850. package/dist/world/water/ReflectionViewPass.d.ts.map +1 -0
  1851. package/dist/world/water/ReflectionViewPass.js +85 -0
  1852. package/dist/world/water/ReflectionViewPass.js.map +1 -0
  1853. package/dist/world/water/SceneCopyFallback.d.ts +21 -0
  1854. package/dist/world/water/SceneCopyFallback.d.ts.map +1 -0
  1855. package/dist/world/water/SceneCopyFallback.js +150 -0
  1856. package/dist/world/water/SceneCopyFallback.js.map +1 -0
  1857. package/dist/world/water/UnderwaterState.d.ts +25 -0
  1858. package/dist/world/water/UnderwaterState.d.ts.map +1 -0
  1859. package/dist/world/water/UnderwaterState.js +134 -0
  1860. package/dist/world/water/UnderwaterState.js.map +1 -0
  1861. package/dist/world/water/WaterMaterial.d.ts +23 -0
  1862. package/dist/world/water/WaterMaterial.d.ts.map +1 -0
  1863. package/dist/world/water/WaterMaterial.js +129 -0
  1864. package/dist/world/water/WaterMaterial.js.map +1 -0
  1865. package/dist/world/water/shaders/caustics.d.ts +13 -0
  1866. package/dist/world/water/shaders/caustics.d.ts.map +1 -0
  1867. package/dist/world/water/shaders/caustics.js +103 -0
  1868. package/dist/world/water/shaders/caustics.js.map +1 -0
  1869. package/dist/world/water/shaders/gerstner.d.ts +9 -0
  1870. package/dist/world/water/shaders/gerstner.d.ts.map +1 -0
  1871. package/dist/world/water/shaders/gerstner.js +100 -0
  1872. package/dist/world/water/shaders/gerstner.js.map +1 -0
  1873. package/dist/world/water/shaders/water.d.ts +12 -0
  1874. package/dist/world/water/shaders/water.d.ts.map +1 -0
  1875. package/dist/world/water/shaders/water.js +112 -0
  1876. package/dist/world/water/shaders/water.js.map +1 -0
  1877. package/package.json +40 -7
@@ -1,5 +1,7 @@
1
+ import { WEBGPU_EXTENSION_ATLAS_WGSL, webgpuExtensionAtlasUniforms } from "./WebGPUExtensionAtlas.js";
1
2
  import { RenderDeviceError, viewBytes, resolveGpuTargetOwner, spreadGpuTargetInventory } from "./RenderDevice.js";
2
3
  import { MAX_WEBGPU_SKINNING_JOINTS } from "./WebGPUSkinningLimits.js";
4
+ import { normalizeWebGPUTemporalOptions, WEBGPU_TAA_FRAGMENT, WEBGPU_TAA_OUTPUT_FRAGMENT } from "./webgpu/WebGPUTemporal.js";
3
5
  import { defaultWebGPUBloomWeights, normalizeWebGPUColorGradeOptions, normalizeWebGPUBloomOptions, webgpuBlurFragment, webgpuBloomCompositeFragment, webgpuBrightExtractFragment, webgpuColorGradeFragment, webgpuFxaaFragment, WEBGPU_POST_VERTEX_WGSL } from "./webgpu/WebGPUPostShaders.js";
4
6
  import { DEFAULT_DEPTH_SHADER_MARKER } from "./ShaderLibraryCore.js";
5
7
  import { reflectShaderSources } from "./ShaderReflection.js";
@@ -24,6 +26,26 @@ const TEXTURE_USAGE = {
24
26
  TEXTURE_BINDING: 0x0004
25
27
  };
26
28
  const DEPTH_TEXTURE_FORMAT = "depth24plus";
29
+ const WEBGPU_NATIVE_COPY_FRAGMENT = `
30
+ @group(0) @binding(0) var<uniform> params: vec4<f32>;
31
+ @group(0) @binding(1) var linearSampler: sampler;
32
+ @group(0) @binding(2) var source: texture_2d<f32>;
33
+ @fragment fn fs_copy(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
34
+ return textureSample(source, linearSampler, clamp(uv, params.xy * 0.5, vec2<f32>(1.0) - params.xy * 0.5));
35
+ }`;
36
+ const WEBGPU_NATIVE_TONE_FRAGMENT = `
37
+ @group(0) @binding(0) var<uniform> params: vec4<f32>;
38
+ @group(0) @binding(1) var linearSampler: sampler;
39
+ @group(0) @binding(2) var source: texture_2d<f32>;
40
+ @fragment fn fs_tone(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
41
+ let sample = textureSample(source, linearSampler, uv);
42
+ var c = max(sample.rgb * params.x / params.w, vec3<f32>(0.0));
43
+ if (params.y > 2.5) { let toe=max(c-vec3<f32>(0.004),vec3<f32>(0.0)); c=min((toe*(6.2*toe+vec3<f32>(0.5)))/(toe*(6.2*toe+vec3<f32>(1.7))+vec3<f32>(0.06)),c*1.08); }
44
+ else if (params.y > 1.5) { c = clamp((c * (2.51 * c + vec3<f32>(0.03))) / (c * (2.43 * c + vec3<f32>(0.59)) + vec3<f32>(0.14)), vec3<f32>(0.0), vec3<f32>(1.0)); }
45
+ else if (params.y > 0.5) { c = c / (vec3<f32>(1.0) + c); }
46
+ if (params.z > 0.5) { c = select(1.055 * pow(c, vec3<f32>(1.0 / 2.4)) - vec3<f32>(0.055), c * 12.92, c <= vec3<f32>(0.0031308)); }
47
+ return vec4<f32>(c, sample.a);
48
+ }`;
27
49
  class WebGPURenderBuffer {
28
50
  id;
29
51
  usage;
@@ -58,9 +80,13 @@ class WebGPUShaderProgram {
58
80
  entryPoints;
59
81
  nativeUniformLayout;
60
82
  portableBindings;
83
+ nativeColorDefaultVertex;
84
+ nativeAtlasVertex;
61
85
  disposed = false;
62
86
  renderPipelines = new Map();
63
- constructor(id, label, marker, reflection, modules, entryPoints, nativeUniformLayout, portableBindings) {
87
+ nativeColorDefaultModule;
88
+ atlasVertexModules = new Map();
89
+ constructor(id, label, marker, reflection, modules, entryPoints, nativeUniformLayout, portableBindings, nativeColorDefaultVertex, nativeAtlasVertex) {
64
90
  this.id = id;
65
91
  this.label = label;
66
92
  this.marker = marker;
@@ -69,6 +95,8 @@ class WebGPUShaderProgram {
69
95
  this.entryPoints = entryPoints;
70
96
  this.nativeUniformLayout = nativeUniformLayout;
71
97
  this.portableBindings = portableBindings;
98
+ this.nativeColorDefaultVertex = nativeColorDefaultVertex;
99
+ this.nativeAtlasVertex = nativeAtlasVertex;
72
100
  }
73
101
  dispose() {
74
102
  this.disposed = true;
@@ -92,9 +120,6 @@ class WebGPURenderTarget {
92
120
  disposed = false;
93
121
  nativeNeedsClear = true;
94
122
  nativeClearColor = [0, 0, 0, 1];
95
- colorPixels;
96
- colorFloatPixels;
97
- depthPixels;
98
123
  constructor(id, width, height, label, colorTexture, depthTexture, nativeTexture, nativeView, nativeDepthTexture, nativeDepthView, hasDepth, sampleCount, nativeMultisampleTexture, nativeMultisampleView) {
99
124
  this.id = id;
100
125
  this.width = width;
@@ -110,11 +135,6 @@ class WebGPURenderTarget {
110
135
  this.sampleCount = sampleCount;
111
136
  this.nativeMultisampleTexture = nativeMultisampleTexture;
112
137
  this.nativeMultisampleView = nativeMultisampleView;
113
- this.colorPixels = new Uint8Array(width * height * 4);
114
- this.colorFloatPixels = colorTexture.format === "rgba16f" || colorTexture.format === "rgba32f"
115
- ? new Float32Array(width * height * 4)
116
- : null;
117
- this.depthPixels = hasDepth ? new Float32Array(width * height).fill(1) : null;
118
138
  }
119
139
  dispose() {
120
140
  if (!this.disposed) {
@@ -162,6 +182,8 @@ export class WebGPUDevice {
162
182
  nativeBloomPasses = 0;
163
183
  nativeColorGradePasses = 0;
164
184
  nativeFxaaPasses = 0;
185
+ nativeTaaPasses = 0;
186
+ nativeTemporalBindings = 0;
165
187
  webgpuPostPipelines = new Map();
166
188
  webgpuPostLinearSampler = null;
167
189
  lastWebGPUBloom = null;
@@ -181,9 +203,6 @@ export class WebGPUDevice {
181
203
  renderTargets = new Set();
182
204
  nativeSampledTextures = new Map();
183
205
  activeRenderTarget = null;
184
- backbufferPixels = null;
185
- backbufferWidth = 0;
186
- backbufferHeight = 0;
187
206
  canvasDepthTexture = null;
188
207
  canvasDepthView = null;
189
208
  canvasDepthWidth = 0;
@@ -239,8 +258,7 @@ export class WebGPUDevice {
239
258
  ...(supportsCanvasSurface ? ["canvas-surface"] : [])
240
259
  ],
241
260
  limitations: [
242
- "Synchronous readPixels remains CPU-shadowed for deterministic tests; use readPixelsAsync for native WebGPU texture-to-buffer readback when available.",
243
- "Renderer.render() stays synchronous and uses CPU-shadowed readback for deterministic compatibility; use Renderer.renderAsync() when renderer-owned WebGPU postprocess must read native render targets.",
261
+ "Synchronous readPixels/readFloatPixels throw WEBGPU_SYNC_READBACK_UNSUPPORTED; use readPixelsAsync/readFloatPixelsAsync for native texture-to-buffer readback.",
244
262
  "Sampleable WebGPU depth render-target textures are not advertised until native texture binding and depth readback evidence exists.",
245
263
  ...(supportsNativeRenderPipeline ? [] : ["native WebGPU render-pipeline submission requires createRenderPipeline, createTexture, and createCommandEncoder."]),
246
264
  ...(hasNativeSampledTextureBinding(device) ? [] : ["native WebGPU sampled texture binding requires createSampler, createTexture, and queue.writeTexture."]),
@@ -312,7 +330,7 @@ export class WebGPUDevice {
312
330
  this.device.createShaderModule({ label: `${sources.label}-fragment`, code: nativeSources.fragment })
313
331
  ]
314
332
  : [];
315
- const shader = new WebGPUShaderProgram(this.nextId++, sources.label, sources.marker, reflectShaderSources(sources), modules, nativeSources.entryPoints, nativeSources.uniformLayout, nativeSources.portableBindings ?? []);
333
+ const shader = new WebGPUShaderProgram(this.nextId++, sources.label, sources.marker, reflectShaderSources(sources), modules, nativeSources.entryPoints, nativeSources.uniformLayout, nativeSources.portableBindings ?? [], nativeSources.colorDefaultVertex, nativeSources.atlasVertex);
316
334
  this.shaders.add(shader);
317
335
  return shader;
318
336
  }
@@ -343,6 +361,15 @@ export class WebGPUDevice {
343
361
  }
344
362
  createRenderTarget(descriptor) {
345
363
  this.assertAlive();
364
+ if ((descriptor.dimension !== undefined && descriptor.dimension !== "2d") ||
365
+ descriptor.layers !== undefined ||
366
+ descriptor.depthOnly === true ||
367
+ descriptor.depthCompare === true ||
368
+ (descriptor.colorAttachments?.length ?? 0) > 0) {
369
+ throw new RenderDeviceError("WebGPU layered, depth-only, depth-compare and MRT render targets are not yet implemented", "UNSUPPORTED_RENDER_TARGET_FEATURE", {
370
+ label: descriptor.label
371
+ });
372
+ }
346
373
  if (!Number.isInteger(descriptor.width) ||
347
374
  descriptor.width <= 0 ||
348
375
  !Number.isInteger(descriptor.height) ||
@@ -424,12 +451,6 @@ export class WebGPUDevice {
424
451
  actualLength: pixels.length
425
452
  });
426
453
  }
427
- webgpuTarget.colorPixels.set(pixels);
428
- if (webgpuTarget.colorFloatPixels) {
429
- for (let index = 0; index < pixels.length; index += 1) {
430
- webgpuTarget.colorFloatPixels[index] = pixels[index] / 255;
431
- }
432
- }
433
454
  if (webgpuTarget.nativeTexture && webgpuTarget.colorTexture.format === "rgba8" && hasNativeTextureUpload(this.device)) {
434
455
  this.device.queue.writeTexture({ texture: webgpuTarget.nativeTexture }, pixels, { bytesPerRow: webgpuTarget.width * 4, rowsPerImage: webgpuTarget.height }, { width: webgpuTarget.width, height: webgpuTarget.height, depthOrArrayLayers: 1 });
435
456
  this.nativeTextureUploads += 1;
@@ -445,51 +466,15 @@ export class WebGPUDevice {
445
466
  format: target.colorTexture.format
446
467
  });
447
468
  }
448
- this.backbufferPixels = target.colorPixels.slice();
449
- this.backbufferWidth = target.width;
450
- this.backbufferHeight = target.height;
451
469
  this.activeRenderTarget = null;
452
470
  this.canvasSubmissions += 1;
453
471
  }
454
472
  readPixels(x, y, width, height) {
455
473
  this.assertAlive();
456
- if (![x, y, width, height].every(Number.isInteger) || x < 0 || y < 0 || width <= 0 || height <= 0) {
457
- throw new RenderDeviceError("Readback rectangle must be positive and in bounds", "INVALID_READBACK_RECT", { x, y, width, height });
458
- }
459
- const boundsWidth = this.activeRenderTarget?.width ?? (this.backbufferPixels ? this.backbufferWidth : this.viewportWidth);
460
- const boundsHeight = this.activeRenderTarget?.height ?? (this.backbufferPixels ? this.backbufferHeight : this.viewportHeight);
461
- if (x + width > boundsWidth || y + height > boundsHeight) {
462
- throw new RenderDeviceError("Readback rectangle exceeds framebuffer bounds", "READBACK_OUT_OF_BOUNDS", {
463
- x,
464
- y,
465
- width,
466
- height,
467
- boundsWidth,
468
- boundsHeight
469
- });
470
- }
471
- const output = new Uint8Array(width * height * 4);
472
- const target = this.activeRenderTarget;
473
- if (!target) {
474
- if (this.backbufferPixels) {
475
- for (let row = 0; row < height; row += 1) {
476
- const sourceOffset = ((y + row) * this.backbufferWidth + x) * 4;
477
- const destOffset = row * width * 4;
478
- output.set(this.backbufferPixels.subarray(sourceOffset, sourceOffset + width * 4), destOffset);
479
- }
480
- return output;
481
- }
482
- const bytes = rgbaBytes(this.clearColor);
483
- for (let index = 0; index < output.length; index += 4)
484
- output.set(bytes, index);
485
- return output;
486
- }
487
- for (let row = 0; row < height; row += 1) {
488
- const sourceOffset = ((y + row) * target.width + x) * 4;
489
- const destOffset = row * width * 4;
490
- output.set(target.colorPixels.subarray(sourceOffset, sourceOffset + width * 4), destOffset);
491
- }
492
- return output;
474
+ // PRD 11 Phase 1 freeze: the CPU-shadowed framebuffer is removed. Synchronous
475
+ // byte readback never existed on real WebGPU — use `readPixelsAsync`
476
+ // (native copyTextureToBuffer) or the MockRenderDevice CPU raster in tests.
477
+ throw new RenderDeviceError("Synchronous WebGPU readPixels is unsupported; use readPixelsAsync or MockRenderDevice", "WEBGPU_SYNC_READBACK_UNSUPPORTED", { x, y, width, height });
493
478
  }
494
479
  async readPixelsAsync(x, y, width, height) {
495
480
  this.assertAlive();
@@ -659,50 +644,9 @@ export class WebGPUDevice {
659
644
  }
660
645
  readFloatPixels(x, y, width, height) {
661
646
  this.assertAlive();
662
- if (![x, y, width, height].every(Number.isInteger) || x < 0 || y < 0 || width <= 0 || height <= 0) {
663
- throw new RenderDeviceError("Float readback rectangle must be positive and in bounds", "INVALID_READBACK_RECT", { x, y, width, height });
664
- }
665
- const boundsWidth = this.activeRenderTarget?.width ?? (this.backbufferPixels ? this.backbufferWidth : this.viewportWidth);
666
- const boundsHeight = this.activeRenderTarget?.height ?? (this.backbufferPixels ? this.backbufferHeight : this.viewportHeight);
667
- if (x + width > boundsWidth || y + height > boundsHeight) {
668
- throw new RenderDeviceError("Float readback rectangle exceeds framebuffer bounds", "READBACK_OUT_OF_BOUNDS", {
669
- x,
670
- y,
671
- width,
672
- height,
673
- boundsWidth,
674
- boundsHeight
675
- });
676
- }
677
- const output = new Float32Array(width * height * 4);
678
- const target = this.activeRenderTarget;
679
- if (!target) {
680
- if (this.backbufferPixels) {
681
- const bytes = this.readPixels(x, y, width, height);
682
- for (let index = 0; index < bytes.length; index += 1)
683
- output[index] = bytes[index] / 255;
684
- return output;
685
- }
686
- for (let index = 0; index < output.length; index += 4) {
687
- output[index] = this.clearColor[0];
688
- output[index + 1] = this.clearColor[1];
689
- output[index + 2] = this.clearColor[2];
690
- output[index + 3] = this.clearColor[3];
691
- }
692
- return output;
693
- }
694
- if (target.colorFloatPixels) {
695
- for (let row = 0; row < height; row += 1) {
696
- const sourceOffset = ((y + row) * target.width + x) * 4;
697
- const destOffset = row * width * 4;
698
- output.set(target.colorFloatPixels.subarray(sourceOffset, sourceOffset + width * 4), destOffset);
699
- }
700
- return output;
701
- }
702
- const bytes = this.readPixels(x, y, width, height);
703
- for (let index = 0; index < bytes.length; index += 1)
704
- output[index] = bytes[index] / 255;
705
- return output;
647
+ // PRD 11 Phase 1 freeze: same removal as `readPixels` — the float shadow was
648
+ // a CPU-only convenience; use `readFloatPixelsAsync` for real WebGPU reads.
649
+ throw new RenderDeviceError("Synchronous WebGPU readFloatPixels is unsupported; use readFloatPixelsAsync or MockRenderDevice", "WEBGPU_SYNC_READBACK_UNSUPPORTED", { x, y, width, height });
706
650
  }
707
651
  beginFrame(width, height) {
708
652
  this.assertAlive();
@@ -784,9 +728,15 @@ export class WebGPUDevice {
784
728
  });
785
729
  }
786
730
  this.submitNativeRenderPass(command, vertexBuffer);
787
- this.rasterizeDraw(command, vertexBuffer);
788
731
  this.drawCalls += 1;
789
732
  }
733
+ async waitForSubmittedWork() {
734
+ this.assertAlive();
735
+ if (!this.device.queue.onSubmittedWorkDone) {
736
+ throw new RenderDeviceError("Native GPU queue completion is unavailable", "GPU_COMPLETION_UNAVAILABLE");
737
+ }
738
+ await this.device.queue.onSubmittedWorkDone();
739
+ }
790
740
  endFrame() {
791
741
  this.assertFrame();
792
742
  this.frameActive = false;
@@ -821,6 +771,8 @@ export class WebGPUDevice {
821
771
  ["nativeBloomPasses", this.nativeBloomPasses],
822
772
  ["nativeColorGradePasses", this.nativeColorGradePasses],
823
773
  ["nativeFxaaPasses", this.nativeFxaaPasses],
774
+ ["nativeTaaPasses", this.nativeTaaPasses],
775
+ ["nativeTemporalBindings", this.nativeTemporalBindings],
824
776
  ["canvasSubmissions", this.canvasSubmissions]
825
777
  ]);
826
778
  }
@@ -879,7 +831,7 @@ export class WebGPUDevice {
879
831
  *
880
832
  * Renders bright-extract -> separable-blur mip pyramid -> composite over
881
833
  * the source, all as real WGSL fullscreen passes on this device. Returns a
882
- * fresh rgba8 target owned by the caller (dispose it); every intermediate
834
+ * fresh rgba16f target owned by the caller (dispose it); every intermediate
883
835
  * is disposed before return. Throws fail-closed when the native device
884
836
  * cannot run fullscreen passes.
885
837
  */
@@ -893,7 +845,10 @@ export class WebGPUDevice {
893
845
  }
894
846
  const width = src.width;
895
847
  const height = src.height;
896
- const mipFormat = normalized.halfFloat ? "rgba16f" : "rgba8";
848
+ // Preserve HDR source energy even at performance quality. Bloom adds to
849
+ // scene radiance before tone mapping, so its composite is always floating point.
850
+ const halfFloat = normalized.halfFloat || src.colorTexture.format === "rgba16f" || src.colorTexture.format === "rgba32f";
851
+ const mipFormat = halfFloat ? "rgba16f" : "rgba8";
897
852
  const owned = [];
898
853
  const track = (target) => {
899
854
  owned.push(target);
@@ -943,7 +898,7 @@ export class WebGPUDevice {
943
898
  level = mipTarget;
944
899
  }
945
900
  const weights = defaultWebGPUBloomWeights(normalized.mipCount);
946
- const composite = track(this.createRenderTarget({ width, height, format: "rgba8", label: "a3d-webgpu-bloom-composite" }));
901
+ const composite = track(this.createRenderTarget({ width, height, format: "rgba16f", label: "a3d-webgpu-bloom-composite" }));
947
902
  const mipViews = mips.map((mipTarget) => {
948
903
  const view = this.requireRenderTarget(mipTarget).nativeView;
949
904
  if (!view)
@@ -958,13 +913,13 @@ export class WebGPUDevice {
958
913
  views: [srcView, ...mipViews],
959
914
  target: composite
960
915
  });
961
- const bytesPerPixel = normalized.halfFloat ? 8 : 4;
916
+ const bytesPerPixel = halfFloat ? 8 : 4;
962
917
  const targetBytes = width * height * bytesPerPixel
963
- + mips.reduce((total, mipTarget) => total + mipTarget.width * mipTarget.height * bytesPerPixel, 0)
964
- + width * height * 4;
918
+ + mips.reduce((total, mipTarget) => total + mipTarget.width * mipTarget.height * bytesPerPixel * 2, 0)
919
+ + width * height * 8;
965
920
  this.lastWebGPUBloom = {
966
921
  mipCount: normalized.mipCount,
967
- halfFloat: normalized.halfFloat,
922
+ halfFloat,
968
923
  targetBytes,
969
924
  compositeGain: normalized.strength,
970
925
  passes: 1 + normalized.mipCount * 2 + 1,
@@ -1033,9 +988,8 @@ export class WebGPUDevice {
1033
988
  /**
1034
989
  * muse3jsparity-PRD J2 — native WebGPU FXAA.
1035
990
  * Compact FXAA 3.11 console core (luma neighborhood, one perpendicular
1036
- * blend tap pair; flat neighborhoods pass through untouched). TAA is
1037
- * intentionally out of scope: no velocity/history inputs exist on the
1038
- * WebGPU path (same withheld doctrine as the root A3 nodes).
991
+ * blend tap pair; flat neighborhoods pass through untouched). Temporal
992
+ * antialiasing has a separate GPU history contract in executeWebGPUTaa.
1039
993
  */
1040
994
  executeWebGPUFxaa(source) {
1041
995
  this.reclaimWebGPUPostUniformBuffers();
@@ -1062,16 +1016,108 @@ export class WebGPUDevice {
1062
1016
  throw error;
1063
1017
  }
1064
1018
  }
1019
+ /** Native target-to-target chain. Unsupported passes fail before any submission. */
1020
+ presentLdrPostprocess(source, options) {
1021
+ this.assertAlive();
1022
+ const supported = new Set(["bloom", "tone-mapping", "color-grade", "fxaa", "taa"]);
1023
+ for (const pass of options.passes) {
1024
+ if (!supported.has(pass.name))
1025
+ throw new RenderDeviceError(`Native WebGPU postprocess does not support ${pass.name}`, "WEBGPU_POSTPROCESS_UNSUPPORTED", { pass: pass.name });
1026
+ }
1027
+ const owned = [];
1028
+ let current = source;
1029
+ const track = (target) => { owned.push(target); current = target; };
1030
+ try {
1031
+ for (const pass of options.passes) {
1032
+ if (pass.name === "bloom")
1033
+ track(this.executeWebGPUBloom(current, pass.options));
1034
+ else if (pass.name === "color-grade")
1035
+ track(this.executeWebGPUColorGrade(current, pass.options));
1036
+ else if (pass.name === "fxaa")
1037
+ track(this.executeWebGPUFxaa(current));
1038
+ else if (pass.name === "taa") {
1039
+ const temporal = pass.options.temporal;
1040
+ if (!temporal)
1041
+ throw new RenderDeviceError("Native WebGPU TAA requires GPU temporal bindings", "TEMPORAL_NATIVE_REQUIRED");
1042
+ track(this.executeWebGPUTaa(current, { ...temporal, ...(typeof pass.options.blend === "number" ? { blend: pass.options.blend } : {}) }));
1043
+ }
1044
+ else if (pass.name === "tone-mapping") {
1045
+ const tone = { ...options.toneMappingDefaults, ...pass.options };
1046
+ const operator = tone.operator ?? "reinhard";
1047
+ const operatorId = operator === "linear" || operator === "none" ? 0 : operator === "reinhard" ? 1 : operator === "aces" || operator === "aces-filmic" ? 2 : operator === "filmic" ? 3 : -1;
1048
+ if (operatorId < 0)
1049
+ throw new RenderDeviceError(`Unsupported native WebGPU tone operator ${String(operator)}`, "WEBGPU_POSTPROCESS_UNSUPPORTED");
1050
+ const exposure = typeof tone.exposure === "number" ? tone.exposure : 1;
1051
+ const whitePoint = typeof tone.whitePoint === "number" ? tone.whitePoint : 1;
1052
+ if (!Number.isFinite(whitePoint) || whitePoint <= 0)
1053
+ throw new RenderDeviceError("Invalid tone white point", "WEBGPU_POSTPROCESS_UNSUPPORTED");
1054
+ if (!Number.isFinite(exposure) || exposure < 0)
1055
+ throw new RenderDeviceError("Invalid tone exposure", "WEBGPU_POSTPROCESS_UNSUPPORTED");
1056
+ const target = this.createRenderTarget({ width: source.width, height: source.height, format: "rgba8", label: "a3d-webgpu-tone" });
1057
+ owned.push(target);
1058
+ this.runWebGPUFullscreenPass({ label: "webgpu-tone", fragment: WEBGPU_NATIVE_TONE_FRAGMENT, entryPoint: "fs_tone",
1059
+ uniforms: new Float32Array([exposure, operatorId, tone.outputColorSpace === "srgb" ? 1 : 0, whitePoint]),
1060
+ views: [this.requireRenderTarget(current).nativeView], target });
1061
+ current = target;
1062
+ }
1063
+ }
1064
+ const target = options.outputTarget ?? null;
1065
+ if (target === current)
1066
+ throw new RenderDeviceError("Native WebGPU presentation source/output alias", "INVALID_RESOURCE");
1067
+ this.runWebGPUFullscreenPass({ label: "webgpu-post-present", fragment: WEBGPU_NATIVE_COPY_FRAGMENT, entryPoint: "fs_copy",
1068
+ uniforms: new Float32Array([1 / source.width, 1 / source.height, 0, 0]),
1069
+ views: [this.requireRenderTarget(current).nativeView], target });
1070
+ if (!target) {
1071
+ this.activeRenderTarget = null;
1072
+ this.canvasSubmissions += 1;
1073
+ }
1074
+ }
1075
+ finally {
1076
+ for (const target of owned)
1077
+ target.dispose();
1078
+ }
1079
+ }
1080
+ /** Resolve GPU velocity/history into caller-owned historyOutput, returning scene-alpha color. */
1081
+ executeWebGPUTaa(source, options) {
1082
+ this.assertAlive();
1083
+ const [blend, depthThreshold] = normalizeWebGPUTemporalOptions(options);
1084
+ const targets = [source, options.velocity, options.history, options.historyOutput];
1085
+ if (new Set(targets).size !== targets.length)
1086
+ throw new RenderDeviceError("TAA targets must not alias", "NATIVE_POST_UNSUPPORTED");
1087
+ const native = targets.map((target) => this.requireRenderTarget(target));
1088
+ if (native.some((target) => target.width !== source.width || target.height !== source.height || !target.nativeView)) {
1089
+ throw new RenderDeviceError("TAA requires same-size native source, velocity and history targets", "NATIVE_POST_UNSUPPORTED");
1090
+ }
1091
+ if (targets.slice(1).some((target) => target.colorTexture.format !== "rgba16f")) {
1092
+ throw new RenderDeviceError("TAA velocity/history targets require rgba16f", "NATIVE_POST_UNSUPPORTED");
1093
+ }
1094
+ const out = this.createRenderTarget({ width: source.width, height: source.height, format: "rgba16f", label: "a3d-webgpu-taa-color" });
1095
+ try {
1096
+ this.runWebGPUFullscreenPass({ label: "webgpu-taa", fragment: WEBGPU_TAA_FRAGMENT, entryPoint: "fs_taa",
1097
+ uniforms: new Float32Array([1 / source.width, 1 / source.height, blend, options.historyValid ? 1 : 0, depthThreshold, 0, 0, 0]),
1098
+ views: native.slice(0, 3).map((target) => target.nativeView), target: options.historyOutput });
1099
+ this.runWebGPUFullscreenPass({ label: "webgpu-taa-output", fragment: WEBGPU_TAA_OUTPUT_FRAGMENT, entryPoint: "fs_taa_output",
1100
+ uniforms: new Float32Array([1 / source.width, 1 / source.height, 0, 0]),
1101
+ views: [native[3].nativeView, native[0].nativeView], target: out });
1102
+ this.nativeTaaPasses += 2;
1103
+ this.nativeTemporalBindings += 3;
1104
+ return out;
1105
+ }
1106
+ catch (error) {
1107
+ out.dispose();
1108
+ throw error;
1109
+ }
1110
+ }
1065
1111
  runWebGPUFullscreenPass(args) {
1066
1112
  // No assertFrame here on purpose: these are target-to-target passes with
1067
1113
  // their own encoders, so they run both inside a Renderer frame (scene ->
1068
1114
  // post chaining) and after it closed (proof harnesses that render, then
1069
1115
  // post, then read back).
1070
1116
  this.assertAlive();
1071
- const target = this.requireRenderTarget(args.target);
1072
- const targetView = target.nativeView;
1117
+ const target = args.target ? this.requireRenderTarget(args.target) : null;
1118
+ const targetView = target ? target.nativeView : this.canvasContext?.getCurrentTexture().createView();
1073
1119
  if (!targetView) {
1074
- throw new RenderDeviceError("WebGPU post target has no native view", "NATIVE_POST_UNSUPPORTED", { label: target.label });
1120
+ throw new RenderDeviceError("WebGPU post target has no native view", "NATIVE_POST_UNSUPPORTED", { label: target?.label ?? "canvas" });
1075
1121
  }
1076
1122
  if (!this.device.createShaderModule || !this.device.createRenderPipeline || !this.device.createCommandEncoder
1077
1123
  || !this.device.createSampler || !this.device.createBuffer || !this.device.createBindGroup) {
@@ -1084,8 +1130,10 @@ export class WebGPUDevice {
1084
1130
  // the submit) so per-pass validation failures land here labeled.
1085
1131
  scopeDevice.pushErrorScope?.("validation");
1086
1132
  }
1087
- const format = webgpuTextureFormat(target.colorTexture.format);
1088
- const cacheKey = `${args.label}:${args.entryPoint}:${format}`;
1133
+ const format = target ? webgpuTextureFormat(target.colorTexture.format) : this.presentationFormat;
1134
+ // Bloom quality changes the fragment binding layout (one texture per mip).
1135
+ // A label/format-only key can reuse the wrong native pipeline after a quality change.
1136
+ const cacheKey = `${args.label}:${args.entryPoint}:${format}:${args.fragment}`;
1089
1137
  let pipeline = this.webgpuPostPipelines.get(cacheKey);
1090
1138
  if (!pipeline) {
1091
1139
  const vertexModule = this.device.createShaderModule({ label: `${args.label}-vs`, code: WEBGPU_POST_VERTEX_WGSL });
@@ -1141,7 +1189,8 @@ export class WebGPUDevice {
1141
1189
  submitted = true;
1142
1190
  // The pass owns every pixel (fullscreen triangle), so a later
1143
1191
  // readPixelsAsync must NOT flush a stale pending clear over it.
1144
- target.nativeNeedsClear = false;
1192
+ if (target)
1193
+ target.nativeNeedsClear = false;
1145
1194
  this.nativeRenderPasses += 1;
1146
1195
  // Retired, not destroyed: the submit only enqueues; the pass reads
1147
1196
  // these uniforms when the GPU gets to it.
@@ -1202,6 +1251,8 @@ export class WebGPUDevice {
1202
1251
  throw new RenderDeviceError("No active frame", "NO_ACTIVE_FRAME");
1203
1252
  }
1204
1253
  }
1254
+ temporalLossListeners = new Set();
1255
+ onDeviceLost(listener) { this.temporalLossListeners.add(listener); return () => this.temporalLossListeners.delete(listener); }
1205
1256
  observeDeviceLost() {
1206
1257
  const lost = this.device.lost;
1207
1258
  if (!lost || typeof lost.then !== "function")
@@ -1210,12 +1261,24 @@ export class WebGPUDevice {
1210
1261
  if (this.disposed)
1211
1262
  return;
1212
1263
  this.contextLost = true;
1264
+ for (const listener of this.temporalLossListeners) {
1265
+ try {
1266
+ listener();
1267
+ }
1268
+ catch { /* Continue notifying owners. */ }
1269
+ }
1213
1270
  const detail = [info.reason, info.message].filter(Boolean).join(": ");
1214
1271
  this.lastError = detail ? `WebGPU device lost: ${detail}` : "WebGPU device lost";
1215
1272
  }).catch((error) => {
1216
1273
  if (this.disposed)
1217
1274
  return;
1218
1275
  this.contextLost = true;
1276
+ for (const listener of this.temporalLossListeners) {
1277
+ try {
1278
+ listener();
1279
+ }
1280
+ catch { /* Continue notifying owners. */ }
1281
+ }
1219
1282
  this.lastError = `WebGPU device lost promise rejected: ${error instanceof Error ? error.message : String(error)}`;
1220
1283
  });
1221
1284
  }
@@ -1252,72 +1315,6 @@ export class WebGPUDevice {
1252
1315
  }
1253
1316
  return target;
1254
1317
  }
1255
- rasterizeDraw(command, vertexBuffer) {
1256
- if (!this.activeRenderTarget || !command.vertexFormat?.hasAttribute("position"))
1257
- return;
1258
- const position = command.vertexFormat.getAttribute("position");
1259
- const colorAttribute = command.vertexFormat.hasAttribute("color") ? command.vertexFormat.getAttribute("color") : null;
1260
- const uvAttribute = command.vertexFormat.hasAttribute("uv") ? command.vertexFormat.getAttribute("uv") : null;
1261
- if (position.components < 2)
1262
- return;
1263
- const indices = this.indicesFor(command);
1264
- const color = uniformColor(command.uniforms);
1265
- const texture = uniformBaseColorTextureBinding(command.uniforms);
1266
- const shadow = uniformForwardShadow(command.uniforms);
1267
- const instanceMatrices = uniformRasterMatrices(command.uniforms, command.instanceCount ?? 1);
1268
- const modelMatrices = uniformRasterModelMatrices(command.uniforms, command.instanceCount ?? 1);
1269
- const depthTest = command.renderState?.depthTest !== false && this.activeRenderTarget.depthPixels !== null;
1270
- const depthWrite = command.renderState?.depthWrite !== false;
1271
- // Full joint-palette skinning (up to 96 joints, WebGL2 parity). readLocal applies morph then skin.
1272
- const jointPalette = jointPaletteFor(command.uniforms);
1273
- const format = command.vertexFormat;
1274
- const readLocal = (index) => skinLocalPosition(readMorphedPosition(vertexBuffer.bytes, format.stride, position.offset, index, command.uniforms), vertexBuffer.bytes, format, index, jointPalette);
1275
- for (let instanceIndex = 0; instanceIndex < instanceMatrices.length; instanceIndex += 1) {
1276
- const matrix = instanceMatrices[instanceIndex] ?? identityMatrix();
1277
- const modelMatrix = modelMatrices[instanceIndex] ?? identityMatrix();
1278
- if (command.topology === "triangles") {
1279
- for (let offset = 0; offset + 2 < indices.length; offset += 3) {
1280
- const indexA = indices[offset];
1281
- const indexB = indices[offset + 1];
1282
- const indexC = indices[offset + 2];
1283
- const localA = readLocal(indexA);
1284
- const localB = readLocal(indexB);
1285
- const localC = readLocal(indexC);
1286
- const a = transformPosition(localA, matrix);
1287
- const b = transformPosition(localB, matrix);
1288
- const c = transformPosition(localC, matrix);
1289
- const worldA = transformPosition(localA, modelMatrix);
1290
- const worldB = transformPosition(localB, modelMatrix);
1291
- const worldC = transformPosition(localC, modelMatrix);
1292
- const colorA = readVertexColor(vertexBuffer.bytes, command.vertexFormat.stride, colorAttribute?.offset, indexA);
1293
- const colorB = readVertexColor(vertexBuffer.bytes, command.vertexFormat.stride, colorAttribute?.offset, indexB);
1294
- const colorC = readVertexColor(vertexBuffer.bytes, command.vertexFormat.stride, colorAttribute?.offset, indexC);
1295
- const uvA = readVertexUv(vertexBuffer.bytes, command.vertexFormat.stride, uvAttribute?.offset, indexA);
1296
- const uvB = readVertexUv(vertexBuffer.bytes, command.vertexFormat.stride, uvAttribute?.offset, indexB);
1297
- const uvC = readVertexUv(vertexBuffer.bytes, command.vertexFormat.stride, uvAttribute?.offset, indexC);
1298
- rasterizeTriangle(this.activeRenderTarget, a, b, c, worldA, worldB, worldC, color, colorA, colorB, colorC, uvA, uvB, uvC, texture, shadow, depthTest, depthWrite);
1299
- }
1300
- }
1301
- else if (command.topology === "lines") {
1302
- for (let offset = 0; offset + 1 < indices.length; offset += 2) {
1303
- const indexA = indices[offset];
1304
- const indexB = indices[offset + 1];
1305
- const a = transformPosition(readLocal(indexA), matrix);
1306
- const b = transformPosition(readLocal(indexB), matrix);
1307
- const colorA = readVertexColor(vertexBuffer.bytes, command.vertexFormat.stride, colorAttribute?.offset, indexA);
1308
- const colorB = readVertexColor(vertexBuffer.bytes, command.vertexFormat.stride, colorAttribute?.offset, indexB);
1309
- rasterizeLine(this.activeRenderTarget, a, b, color, colorA, colorB, depthTest, depthWrite);
1310
- }
1311
- }
1312
- else {
1313
- for (const index of indices) {
1314
- const point = transformPosition(readLocal(index), matrix);
1315
- const vertexColor = readVertexColor(vertexBuffer.bytes, command.vertexFormat.stride, colorAttribute?.offset, index);
1316
- rasterizePoint(this.activeRenderTarget, point, multiplyColor(color, vertexColor), depthTest, depthWrite);
1317
- }
1318
- }
1319
- }
1320
- }
1321
1318
  submitNativeRenderPass(command, vertexBuffer) {
1322
1319
  const resolveView = this.activeRenderTarget?.nativeView ?? null;
1323
1320
  const nativeView = this.activeRenderTarget?.nativeMultisampleView ?? resolveView ?? this.currentCanvasView();
@@ -1326,7 +1323,27 @@ export class WebGPUDevice {
1326
1323
  if (!hasNativeRenderPipeline(this.device))
1327
1324
  return;
1328
1325
  const shader = this.requireShader(command.shader);
1329
- const vertexModule = shader.modules[0];
1326
+ // GL supplies an opaque white default for an absent vertex color. Native
1327
+ // WGSL inputs must instead match the actual vertex buffer layout.
1328
+ const useDefaultColor = shader.nativeColorDefaultVertex && !command.vertexFormat?.attributes.some(attribute => attribute.semantic === "color");
1329
+ if (useDefaultColor && !shader.nativeColorDefaultModule) {
1330
+ shader.nativeColorDefaultModule = this.device.createShaderModule?.({ label: `${shader.label}-vertex-default-color`, code: shader.nativeColorDefaultVertex });
1331
+ }
1332
+ let vertexModule = useDefaultColor ? shader.nativeColorDefaultModule : shader.modules[0];
1333
+ if (shader.nativeAtlasVertex) {
1334
+ const hasColor = command.vertexFormat?.attributes.some(attribute => attribute.shaderLocation === 4) ?? false;
1335
+ const hasUv1 = command.vertexFormat?.attributes.some(attribute => attribute.shaderLocation === 7) ?? false;
1336
+ const key = `${hasColor}:${hasUv1}`;
1337
+ if (!shader.atlasVertexModules.has(key)) {
1338
+ let source = shader.nativeAtlasVertex;
1339
+ if (!hasColor)
1340
+ source = source.replace(", @location(4) color: vec4<f32>", "").replace("output.color = color;", "output.color = vec4<f32>(1.0);");
1341
+ if (!hasUv1)
1342
+ source = source.replace(", @location(7) uv1: vec2<f32>", "").replace("output.uv1 = uv1;", "output.uv1 = vec2<f32>(0.0);");
1343
+ shader.atlasVertexModules.set(key, this.device.createShaderModule?.({ label: `${shader.label}-atlas-vertex-${key}`, code: source }));
1344
+ }
1345
+ vertexModule = shader.atlasVertexModules.get(key);
1346
+ }
1330
1347
  const fragmentModule = shader.modules[1] ?? vertexModule;
1331
1348
  if (!vertexModule || !fragmentModule)
1332
1349
  return;
@@ -1386,12 +1403,19 @@ export class WebGPUDevice {
1386
1403
  const uniformBuffer = usesNativeDrawUniforms(shader.nativeUniformLayout) ? this.createNativeDrawUniformBuffer(command) : null;
1387
1404
  const sampledTexture = shader.nativeUniformLayout === "generated-texture" ? this.createNativeSampledTextureBinding(uniformBaseColorTextureBinding(command.uniforms)) : null;
1388
1405
  const materialTextures = usesNativePbrTextureBindings(shader.nativeUniformLayout) ? this.createNativePbrTextureBindings(command) : null;
1406
+ const atlasResources = shader.nativeUniformLayout === "generated-atlas-pbr" ? this.createNativeAtlasBindings(command) : null;
1407
+ if (shader.nativeUniformLayout === "generated-atlas-pbr" && !atlasResources) {
1408
+ uniformBuffer?.destroy();
1409
+ return;
1410
+ }
1389
1411
  if (shader.nativeUniformLayout === "generated-texture" && !sampledTexture) {
1390
1412
  uniformBuffer?.destroy();
1413
+ atlasResources?.buffer.destroy();
1391
1414
  return;
1392
1415
  }
1393
1416
  if (usesNativePbrTextureBindings(shader.nativeUniformLayout) && !materialTextures) {
1394
1417
  uniformBuffer?.destroy();
1418
+ atlasResources?.buffer.destroy();
1395
1419
  return;
1396
1420
  }
1397
1421
  if (shader.nativeUniformLayout === "portable" && !portableResources)
@@ -1402,6 +1426,7 @@ export class WebGPUDevice {
1402
1426
  layout: pipeline.getBindGroupLayout(0),
1403
1427
  entries: portableResources?.entries ?? [
1404
1428
  { binding: 0, resource: { buffer: uniformBuffer } },
1429
+ ...(atlasResources?.entries ?? []),
1405
1430
  ...(sampledTexture ? [
1406
1431
  { binding: 1, resource: sampledTexture.sampler },
1407
1432
  { binding: 2, resource: sampledTexture.view }
@@ -1458,6 +1483,7 @@ export class WebGPUDevice {
1458
1483
  if (!pass.setIndexBuffer || !pass.drawIndexed) {
1459
1484
  pass.end();
1460
1485
  uniformBuffer?.destroy();
1486
+ atlasResources?.buffer.destroy();
1461
1487
  portableResources?.buffer.destroy();
1462
1488
  this.lastError = "Native WebGPU indexed draw skipped because the render-pass encoder does not expose indexed draw APIs.";
1463
1489
  return;
@@ -1474,6 +1500,7 @@ export class WebGPUDevice {
1474
1500
  if (this.activeRenderTarget)
1475
1501
  this.activeRenderTarget.nativeNeedsClear = false;
1476
1502
  uniformBuffer?.destroy();
1503
+ atlasResources?.buffer.destroy();
1477
1504
  portableResources?.buffer.destroy();
1478
1505
  this.nativeSubmissions += 1;
1479
1506
  if (sampledTexture)
@@ -1488,7 +1515,7 @@ export class WebGPUDevice {
1488
1515
  this.nativePassthroughSubmissions += 1;
1489
1516
  this.nativeTextureBindings += portableResources?.actualTextureCount ?? 0;
1490
1517
  }
1491
- if (shader.nativeUniformLayout === "generated-pbr" || shader.nativeUniformLayout === "generated-textured-pbr" || shader.nativeUniformLayout === "generated-instanced-pbr")
1518
+ if (shader.nativeUniformLayout === "generated-pbr" || shader.nativeUniformLayout === "generated-atlas-pbr" || shader.nativeUniformLayout === "generated-textured-pbr" || shader.nativeUniformLayout === "generated-instanced-pbr")
1492
1519
  this.nativePbrSubmissions += 1;
1493
1520
  if (shader.nativeUniformLayout === "generated-instanced-pbr")
1494
1521
  this.nativeInstancedSubmissions += 1;
@@ -1496,6 +1523,7 @@ export class WebGPUDevice {
1496
1523
  this.nativeSkinnedSubmissions += 1;
1497
1524
  if (shader.nativeUniformLayout === "generated-morph-unlit")
1498
1525
  this.nativeMorphSubmissions += 1;
1526
+ this.nativeTextureBindings += atlasResources?.actualTextureCount ?? 0;
1499
1527
  if (materialTextures?.actualBaseColor)
1500
1528
  this.nativeTextureBindings += 1;
1501
1529
  if (materialTextures?.actualNormal)
@@ -1737,7 +1765,7 @@ export class WebGPUDevice {
1737
1765
  data[167] = 1;
1738
1766
  data[168] = uniformNumber(command.uniforms?.get("u_metallicRoughnessTextureEnabled"), metallicRoughnessBinding ? 1 : 0);
1739
1767
  data[169] = uniformNumber(command.uniforms?.get("u_occlusionTextureEnabled"), occlusionBinding ? 1 : 0);
1740
- data[170] = uniformNumber(command.uniforms?.get("u_productColorSmoothing"), 0);
1768
+ data[170] = 0; // materialFlags.z was the product-colour smoothing flag — removed in the PRD 11 Phase 1 freeze
1741
1769
  data[171] = uniformNumber(command.uniforms?.get("u_clusteredLightEnabled"), 0);
1742
1770
  data.set(uniformMat4(command.uniforms?.get("u_normalMatrix")) ?? identityMatrix(), 172);
1743
1771
  const modelMatrix = uniformMat4(command.uniforms?.get("u_modelMatrix")) ?? identityMatrix();
@@ -1799,6 +1827,36 @@ export class WebGPUDevice {
1799
1827
  this.device.queue.writeBuffer(buffer, 0, data);
1800
1828
  return buffer;
1801
1829
  }
1830
+ createNativeAtlasBindings(command) {
1831
+ const definitions = [
1832
+ ["u_extensionScalarAtlas", 20, 0, "linear"],
1833
+ ["u_clearcoatNormalTexture", 22, 21, "linear"],
1834
+ ["u_sheenColorTexture", 24, 23, "srgb"],
1835
+ ["u_anisotropyTexture", 26, 25, "linear"],
1836
+ ["u_emissiveTexture", 28, 27, "srgb"]
1837
+ ];
1838
+ const entries = [];
1839
+ let actualTextureCount = 0;
1840
+ for (const [name, textureIndex, samplerIndex, colorSpace] of definitions) {
1841
+ const actualTexture = this.createNativeSampledTextureBinding(uniformTextureBinding(command.uniforms, name));
1842
+ if (textureIndex === 20 && !actualTexture)
1843
+ throw new RenderDeviceError("Native extension atlas requires a resolved scalar atlas texture", "TEXTURE_BINDING_MISSING");
1844
+ const texture = actualTexture
1845
+ ?? this.createNativeFallbackSampledTextureBinding(`atlas-${name}`, name.includes("Normal") ? [128, 128, 255, 255] : [255, 255, 255, 255], colorSpace);
1846
+ if (!texture)
1847
+ return null;
1848
+ if (texture.actual)
1849
+ actualTextureCount += 1;
1850
+ entries.push({ binding: textureIndex, resource: texture.view });
1851
+ if (samplerIndex)
1852
+ entries.push({ binding: samplerIndex, resource: texture.sampler });
1853
+ }
1854
+ const data = webgpuExtensionAtlasUniforms(command.uniforms);
1855
+ const buffer = this.device.createBuffer({ label: "extension-atlas-uniforms", size: data.byteLength, usage: BUFFER_USAGE.UNIFORM | BUFFER_USAGE.COPY_DST });
1856
+ this.device.queue.writeBuffer(buffer, 0, data);
1857
+ entries.push({ binding: 19, resource: { buffer } });
1858
+ return { buffer, entries, actualTextureCount };
1859
+ }
1802
1860
  createNativePortableBindings(command, bindings) {
1803
1861
  if (!this.device.createBindGroup)
1804
1862
  return null;
@@ -1864,21 +1922,9 @@ export class WebGPUDevice {
1864
1922
  clearActiveRenderTarget(color) {
1865
1923
  if (!this.activeRenderTarget)
1866
1924
  return;
1867
- const bytes = rgbaBytes(color);
1868
- for (let index = 0; index < this.activeRenderTarget.colorPixels.length; index += 4) {
1869
- this.activeRenderTarget.colorPixels.set(bytes, index);
1870
- }
1925
+ // Phase 1 freeze: clears are native-load-op state only (no CPU shadow).
1871
1926
  this.activeRenderTarget.nativeNeedsClear = true;
1872
1927
  this.activeRenderTarget.nativeClearColor = color;
1873
- this.activeRenderTarget.depthPixels?.fill(1);
1874
- if (this.activeRenderTarget.colorFloatPixels) {
1875
- for (let index = 0; index < this.activeRenderTarget.colorFloatPixels.length; index += 4) {
1876
- this.activeRenderTarget.colorFloatPixels[index] = color[0];
1877
- this.activeRenderTarget.colorFloatPixels[index + 1] = color[1];
1878
- this.activeRenderTarget.colorFloatPixels[index + 2] = color[2];
1879
- this.activeRenderTarget.colorFloatPixels[index + 3] = color[3];
1880
- }
1881
- }
1882
1928
  }
1883
1929
  indicesFor(command) {
1884
1930
  if (!command.indexBuffer) {
@@ -2105,6 +2151,7 @@ function usesNativeDrawUniforms(layout) {
2105
2151
  }
2106
2152
  function usesNativePbrTextureBindings(layout) {
2107
2153
  return layout === "generated-pbr" ||
2154
+ layout === "generated-atlas-pbr" ||
2108
2155
  layout === "generated-textured-pbr" ||
2109
2156
  layout === "generated-instanced-pbr";
2110
2157
  }
@@ -2129,9 +2176,6 @@ function writeAlignedQueueBuffer(queue, buffer, byteOffset, data, nativeByteLeng
2129
2176
  padded.set(bytes, byteOffset - alignedOffset);
2130
2177
  queue.writeBuffer(buffer, alignedOffset, padded);
2131
2178
  }
2132
- function rgbaBytes(color) {
2133
- return new Uint8Array(color.map((channel) => Math.round(Math.max(0, Math.min(1, channel)) * 255)));
2134
- }
2135
2179
  function halfFloatToNumber(bits) {
2136
2180
  const sign = (bits & 0x8000) ? -1 : 1;
2137
2181
  const exponent = (bits >> 10) & 0x1f;
@@ -2202,339 +2246,13 @@ function uniformMat4Array(value, count) {
2202
2246
  return matrix.length === 16 && matrix.every(Number.isFinite) ? matrix : identityMatrix();
2203
2247
  });
2204
2248
  }
2205
- function uniformRasterMatrices(uniforms, instanceCount) {
2206
- const modelViewProjection = uniformMat4(uniforms?.get("u_modelViewProjection")) ?? identityMatrix();
2207
- const value = uniforms?.get("u_instanceMatrices");
2208
- const numbers = value instanceof Float32Array || Array.isArray(value) ? Array.from(value) : [];
2209
- if (numbers.length < instanceCount * 16 || !numbers.slice(0, instanceCount * 16).every(Number.isFinite)) {
2210
- return Array.from({ length: instanceCount }, () => modelViewProjection);
2211
- }
2212
- return Array.from({ length: instanceCount }, (_, index) => multiplyMat4(modelViewProjection, numbers.slice(index * 16, index * 16 + 16)));
2213
- }
2214
- function uniformRasterModelMatrices(uniforms, instanceCount) {
2215
- const modelMatrix = uniformMat4(uniforms?.get("u_modelMatrix")) ?? identityMatrix();
2216
- const value = uniforms?.get("u_instanceMatrices");
2217
- const numbers = value instanceof Float32Array || Array.isArray(value) ? Array.from(value) : [];
2218
- if (numbers.length < instanceCount * 16 || !numbers.slice(0, instanceCount * 16).every(Number.isFinite)) {
2219
- return Array.from({ length: instanceCount }, () => modelMatrix);
2220
- }
2221
- return Array.from({ length: instanceCount }, (_, index) => multiplyMat4(modelMatrix, numbers.slice(index * 16, index * 16 + 16)));
2222
- }
2223
- function uniformForwardShadow(uniforms) {
2224
- if (!uniforms)
2225
- return null;
2226
- const enabled = uniforms.get("u_shadowMapEnabled");
2227
- if (typeof enabled !== "number" || enabled < 0.5)
2228
- return null;
2229
- const texture = uniforms.get("u_shadowMapTexture");
2230
- const matrix = uniformMat4(uniforms.get("u_shadowMapMatrix")) ?? identityMatrix();
2231
- if (!isTextureBinding(texture) || !texture.texture || texture.texture.disposed || !texture.validate().ok) {
2232
- return null;
2233
- }
2234
- const strengthValue = uniforms.get("u_shadowMapStrength");
2235
- const biasValue = uniforms.get("u_shadowMapBias");
2236
- const strength = typeof strengthValue === "number" && Number.isFinite(strengthValue) ? Math.max(0, Math.min(1, strengthValue)) : 0.65;
2237
- const bias = typeof biasValue === "number" && Number.isFinite(biasValue) ? Math.max(0, biasValue) : 0.001;
2238
- return { texture, matrix, strength, bias };
2239
- }
2240
2249
  function uniformMat4(value) {
2241
2250
  const numbers = value instanceof Float32Array || Array.isArray(value) ? Array.from(value) : [];
2242
2251
  return numbers.length === 16 && numbers.every(Number.isFinite) ? numbers : null;
2243
2252
  }
2244
- function multiplyMat4(left, right) {
2245
- const out = new Array(16);
2246
- for (let row = 0; row < 4; row += 1) {
2247
- for (let column = 0; column < 4; column += 1) {
2248
- out[column * 4 + row] =
2249
- (left[0 * 4 + row] ?? 0) * (right[column * 4 + 0] ?? 0) +
2250
- (left[1 * 4 + row] ?? 0) * (right[column * 4 + 1] ?? 0) +
2251
- (left[2 * 4 + row] ?? 0) * (right[column * 4 + 2] ?? 0) +
2252
- (left[3 * 4 + row] ?? 0) * (right[column * 4 + 3] ?? 0);
2253
- }
2254
- }
2255
- return out;
2256
- }
2257
- function transformPosition(position, matrix) {
2258
- const x = (matrix[0] ?? 1) * position[0] + (matrix[4] ?? 0) * position[1] + (matrix[8] ?? 0) * position[2] + (matrix[12] ?? 0);
2259
- const y = (matrix[1] ?? 0) * position[0] + (matrix[5] ?? 1) * position[1] + (matrix[9] ?? 0) * position[2] + (matrix[13] ?? 0);
2260
- const z = (matrix[2] ?? 0) * position[0] + (matrix[6] ?? 0) * position[1] + (matrix[10] ?? 1) * position[2] + (matrix[14] ?? 0);
2261
- const w = (matrix[3] ?? 0) * position[0] + (matrix[7] ?? 0) * position[1] + (matrix[11] ?? 0) * position[2] + (matrix[15] ?? 1);
2262
- const inverseW = Math.abs(w) > 1e-8 ? 1 / w : 1;
2263
- return [
2264
- x * inverseW,
2265
- y * inverseW,
2266
- z * inverseW
2267
- ];
2268
- }
2269
- function toDepth(ndcZ) {
2270
- return Math.max(0, Math.min(1, ndcZ * 0.5 + 0.5));
2271
- }
2272
- function passesDepthTest(target, pixelIndex, depth, enabled, write) {
2273
- if (!enabled || !target.depthPixels)
2274
- return true;
2275
- if (depth > (target.depthPixels[pixelIndex] ?? 1) + 1e-6)
2276
- return false;
2277
- if (write)
2278
- target.depthPixels[pixelIndex] = depth;
2279
- return true;
2280
- }
2281
- function readPosition(bytes, stride, offset, vertexIndex) {
2282
- const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
2283
- const base = vertexIndex * stride + offset;
2284
- return [
2285
- view.getFloat32(base, true),
2286
- view.getFloat32(base + 4, true),
2287
- view.getFloat32(base + 8, true)
2288
- ];
2289
- }
2290
- function readMorphedPosition(bytes, stride, offset, vertexIndex, uniforms) {
2291
- const basePosition = readPosition(bytes, stride, offset, vertexIndex);
2292
- const packed = uniforms?.get("u_morphPositionDeltas");
2293
- const weights = uniforms?.get("u_morphWeights");
2294
- const targetCountValue = uniforms?.get("u_morphTargetCount");
2295
- if (!(packed instanceof Float32Array) || !(weights instanceof Float32Array) || typeof targetCountValue !== "number") {
2296
- return basePosition;
2297
- }
2298
- const targetCount = Math.max(0, Math.min(weights.length, Math.floor(targetCountValue)));
2299
- let x = basePosition[0];
2300
- let y = basePosition[1];
2301
- let z = basePosition[2];
2302
- for (let target = 0; target < targetCount; target += 1) {
2303
- const weight = weights[target] ?? 0;
2304
- const deltaOffset = (target * 64 + vertexIndex) * 4;
2305
- x += (packed[deltaOffset] ?? 0) * weight;
2306
- y += (packed[deltaOffset + 1] ?? 0) * weight;
2307
- z += (packed[deltaOffset + 2] ?? 0) * weight;
2308
- }
2309
- return [x, y, z];
2310
- }
2311
- function toPixel(position, width, height) {
2312
- return [
2313
- (position[0] * 0.5 + 0.5) * (width - 1),
2314
- (1 - (position[1] * 0.5 + 0.5)) * (height - 1),
2315
- toDepth(position[2])
2316
- ];
2317
- }
2318
2253
  function identityMatrix() {
2319
2254
  return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
2320
2255
  }
2321
- function readVec4Attribute(bytes, stride, offset, vertexIndex) {
2322
- const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
2323
- const base = vertexIndex * stride + offset;
2324
- return [
2325
- view.getFloat32(base, true),
2326
- view.getFloat32(base + 4, true),
2327
- view.getFloat32(base + 8, true),
2328
- view.getFloat32(base + 12, true)
2329
- ];
2330
- }
2331
- // CPU skinning for the WebGPU emulation rasterizer: blend the joint palette (up to the full
2332
- // WebGL2-parity 96-joint count) by the vertex's 4 joint indices + weights, then transform the local
2333
- // position by the blended matrix. Mirrors the WebGL2 skinning path so a skinned character deforms
2334
- // identically on both backends. `palette` may hold up to 96 matrices (parity with WebGL2).
2335
- function skinLocalPosition(local, bytes, format, vertexIndex, palette) {
2336
- if (palette.length === 0 || !format.hasAttribute("joints") || !format.hasAttribute("weights")) {
2337
- return local;
2338
- }
2339
- const joints = readVec4Attribute(bytes, format.stride, format.getAttribute("joints").offset, vertexIndex);
2340
- const weights = readVec4Attribute(bytes, format.stride, format.getAttribute("weights").offset, vertexIndex);
2341
- const weightSum = weights[0] + weights[1] + weights[2] + weights[3];
2342
- if (weightSum <= 1e-4)
2343
- return local;
2344
- const blended = new Array(16).fill(0);
2345
- const maxJoint = palette.length - 1;
2346
- for (let influence = 0; influence < 4; influence += 1) {
2347
- const weight = weights[influence] ?? 0;
2348
- if (weight === 0)
2349
- continue;
2350
- const jointIndex = Math.max(0, Math.min(maxJoint, Math.round(joints[influence] ?? 0)));
2351
- const jointMatrix = palette[jointIndex] ?? identityMatrix();
2352
- for (let k = 0; k < 16; k += 1)
2353
- blended[k] += (jointMatrix[k] ?? 0) * weight;
2354
- }
2355
- return transformPosition(local, blended);
2356
- }
2357
- function jointPaletteFor(uniforms) {
2358
- const value = uniforms?.get("u_jointMatrices");
2359
- const length = value instanceof Float32Array || Array.isArray(value) ? value.length : 0;
2360
- const count = Math.min(MAX_WEBGPU_SKINNING_JOINTS, Math.floor(length / 16));
2361
- return count > 0 ? uniformMat4Array(value, count) : [];
2362
- }
2363
- function readVertexColor(bytes, stride, offset, vertexIndex) {
2364
- if (offset === undefined)
2365
- return [1, 1, 1, 1];
2366
- const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
2367
- const base = vertexIndex * stride + offset;
2368
- return [
2369
- view.getFloat32(base, true),
2370
- view.getFloat32(base + 4, true),
2371
- view.getFloat32(base + 8, true),
2372
- view.getFloat32(base + 12, true)
2373
- ];
2374
- }
2375
- function readVertexUv(bytes, stride, offset, vertexIndex) {
2376
- if (offset === undefined)
2377
- return [0, 0];
2378
- const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
2379
- const base = vertexIndex * stride + offset;
2380
- return [view.getFloat32(base, true), view.getFloat32(base + 4, true)];
2381
- }
2382
- function rasterizeTriangle(target, a, b, c, worldA, worldB, worldC, color, colorA, colorB, colorC, uvA, uvB, uvC, texture, shadow, depthTest, depthWrite) {
2383
- const pa = toPixel(a, target.width, target.height);
2384
- const pb = toPixel(b, target.width, target.height);
2385
- const pc = toPixel(c, target.width, target.height);
2386
- const minX = clampInt(Math.floor(Math.min(pa[0], pb[0], pc[0])), 0, target.width - 1);
2387
- const maxX = clampInt(Math.ceil(Math.max(pa[0], pb[0], pc[0])), 0, target.width - 1);
2388
- const minY = clampInt(Math.floor(Math.min(pa[1], pb[1], pc[1])), 0, target.height - 1);
2389
- const maxY = clampInt(Math.ceil(Math.max(pa[1], pb[1], pc[1])), 0, target.height - 1);
2390
- const area = edge(pa, pb, pc);
2391
- if (Math.abs(area) < 1e-6)
2392
- return;
2393
- for (let y = minY; y <= maxY; y += 1) {
2394
- for (let x = minX; x <= maxX; x += 1) {
2395
- const p = [x + 0.5, y + 0.5];
2396
- const w0 = edge(pb, pc, p);
2397
- const w1 = edge(pc, pa, p);
2398
- const w2 = edge(pa, pb, p);
2399
- if ((w0 >= 0 && w1 >= 0 && w2 >= 0) || (w0 <= 0 && w1 <= 0 && w2 <= 0)) {
2400
- const invArea = 1 / area;
2401
- const wa = w0 * invArea;
2402
- const wb = w1 * invArea;
2403
- const wc = w2 * invArea;
2404
- const uv = [
2405
- uvA[0] * wa + uvB[0] * wb + uvC[0] * wc,
2406
- uvA[1] * wa + uvB[1] * wb + uvC[1] * wc
2407
- ];
2408
- const worldPosition = [
2409
- worldA[0] * wa + worldB[0] * wb + worldC[0] * wc,
2410
- worldA[1] * wa + worldB[1] * wb + worldC[1] * wc,
2411
- worldA[2] * wa + worldB[2] * wb + worldC[2] * wc
2412
- ];
2413
- const pixelIndex = y * target.width + x;
2414
- const depth = pa[2] * wa + pb[2] * wb + pc[2] * wc;
2415
- if (!passesDepthTest(target, pixelIndex, depth, depthTest, depthWrite))
2416
- continue;
2417
- const shadedColor = multiplyColor(multiplyColor(color, interpolateColor(colorA, colorB, colorC, wa, wb, wc)), texture ? sampleTextureBinding(texture, uv) : [1, 1, 1, 1]);
2418
- target.colorPixels.set(rgbaBytes(multiplyColor(shadedColor, shadowFactor(shadow, worldPosition))), pixelIndex * 4);
2419
- }
2420
- }
2421
- }
2422
- }
2423
- function rasterizeLine(target, a, b, color, colorA, colorB, depthTest, depthWrite) {
2424
- const pa = toPixel(a, target.width, target.height);
2425
- const pb = toPixel(b, target.width, target.height);
2426
- const x0 = clampInt(Math.round(pa[0]), 0, target.width - 1);
2427
- const y0 = clampInt(Math.round(pa[1]), 0, target.height - 1);
2428
- const x1 = clampInt(Math.round(pb[0]), 0, target.width - 1);
2429
- const y1 = clampInt(Math.round(pb[1]), 0, target.height - 1);
2430
- const dx = Math.abs(x1 - x0);
2431
- const dy = Math.abs(y1 - y0);
2432
- const steps = Math.max(dx, dy, 1);
2433
- const shadedA = multiplyColor(color, colorA);
2434
- const shadedB = multiplyColor(color, colorB);
2435
- for (let step = 0; step <= steps; step += 1) {
2436
- const t = step / steps;
2437
- const x = clampInt(Math.round(x0 + (x1 - x0) * t), 0, target.width - 1);
2438
- const y = clampInt(Math.round(y0 + (y1 - y0) * t), 0, target.height - 1);
2439
- const pixelIndex = y * target.width + x;
2440
- const depth = pa[2] + (pb[2] - pa[2]) * t;
2441
- if (!passesDepthTest(target, pixelIndex, depth, depthTest, depthWrite))
2442
- continue;
2443
- const shaded = lerpColor(shadedA, shadedB, t);
2444
- target.colorPixels.set(rgbaBytes(shaded), pixelIndex * 4);
2445
- }
2446
- }
2447
- function rasterizePoint(target, point, color, depthTest, depthWrite) {
2448
- const pixel = toPixel(point, target.width, target.height);
2449
- const centerX = clampInt(Math.round(pixel[0]), 0, target.width - 1);
2450
- const centerY = clampInt(Math.round(pixel[1]), 0, target.height - 1);
2451
- const bytes = rgbaBytes(color);
2452
- for (let y = centerY - 2; y <= centerY + 2; y += 1) {
2453
- if (y < 0 || y >= target.height)
2454
- continue;
2455
- for (let x = centerX - 2; x <= centerX + 2; x += 1) {
2456
- if (x < 0 || x >= target.width)
2457
- continue;
2458
- const pixelIndex = y * target.width + x;
2459
- if (!passesDepthTest(target, pixelIndex, pixel[2], depthTest, depthWrite))
2460
- continue;
2461
- target.colorPixels.set(bytes, pixelIndex * 4);
2462
- }
2463
- }
2464
- }
2465
- function sampleTextureBinding(binding, uv) {
2466
- const texture = binding.texture;
2467
- if (!texture || texture.disposed)
2468
- return [1, 1, 1, 1];
2469
- const level = texture.textureLevels[0] ?? texture.fallbackTextureLevels[0];
2470
- if (!level || level.data.length < level.width * level.height * 4)
2471
- return [1, 1, 1, 1];
2472
- const transformed = binding.transformUV(uv);
2473
- const u = addressCoordinate(transformed[0], binding.sampler.addressU);
2474
- const v = addressCoordinate(transformed[1], binding.sampler.addressV);
2475
- const x = clampInt(Math.round(u * (level.width - 1)), 0, level.width - 1);
2476
- const y = clampInt(Math.round(v * (level.height - 1)), 0, level.height - 1);
2477
- const offset = (y * level.width + x) * 4;
2478
- const r = (level.data[offset] ?? 255) / 255;
2479
- const g = (level.data[offset + 1] ?? 255) / 255;
2480
- const b = (level.data[offset + 2] ?? 255) / 255;
2481
- return [
2482
- texture.colorSpace === "srgb" ? srgbToLinear(r) : r,
2483
- texture.colorSpace === "srgb" ? srgbToLinear(g) : g,
2484
- texture.colorSpace === "srgb" ? srgbToLinear(b) : b,
2485
- (level.data[offset + 3] ?? 255) / 255
2486
- ];
2487
- }
2488
- function srgbToLinear(value) {
2489
- return value <= 0.04045 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;
2490
- }
2491
- function shadowFactor(shadow, worldPosition) {
2492
- if (!shadow)
2493
- return [1, 1, 1, 1];
2494
- const projected = transformPosition(worldPosition, shadow.matrix);
2495
- if (projected[0] < -1 || projected[0] > 1 || projected[1] < -1 || projected[1] > 1 || projected[2] < -1 || projected[2] > 1) {
2496
- return [1, 1, 1, 1];
2497
- }
2498
- const uv = [projected[0] * 0.5 + 0.5, projected[1] * 0.5 + 0.5];
2499
- const storedDepth = sampleTextureBinding(shadow.texture, uv)[0];
2500
- const receiverDepth = projected[2] * 0.5 + 0.5 - shadow.bias;
2501
- const visibility = receiverDepth > storedDepth ? 1 - shadow.strength : 1;
2502
- return [visibility, visibility, visibility, 1];
2503
- }
2504
- function addressCoordinate(value, mode) {
2505
- if (mode === "repeat")
2506
- return value - Math.floor(value);
2507
- if (mode === "mirror-repeat") {
2508
- const repeated = value - Math.floor(value);
2509
- return Math.floor(value) % 2 === 0 ? repeated : 1 - repeated;
2510
- }
2511
- return Math.min(1, Math.max(0, value));
2512
- }
2513
- function lerpColor(a, b, t) {
2514
- return [
2515
- a[0] + (b[0] - a[0]) * t,
2516
- a[1] + (b[1] - a[1]) * t,
2517
- a[2] + (b[2] - a[2]) * t,
2518
- a[3] + (b[3] - a[3]) * t
2519
- ];
2520
- }
2521
- function interpolateColor(a, b, c, wa, wb, wc) {
2522
- return [
2523
- a[0] * wa + b[0] * wb + c[0] * wc,
2524
- a[1] * wa + b[1] * wb + c[1] * wc,
2525
- a[2] * wa + b[2] * wb + c[2] * wc,
2526
- a[3] * wa + b[3] * wb + c[3] * wc
2527
- ];
2528
- }
2529
- function multiplyColor(a, b) {
2530
- return [a[0] * b[0], a[1] * b[1], a[2] * b[2], a[3] * b[3]];
2531
- }
2532
- function edge(a, b, c) {
2533
- return (c[0] - a[0]) * (b[1] - a[1]) - (c[1] - a[1]) * (b[0] - a[0]);
2534
- }
2535
- function clampInt(value, min, max) {
2536
- return Math.min(max, Math.max(min, value));
2537
- }
2538
2256
  function createNativeShaderSources(sources) {
2539
2257
  if (sources.webgpu && sources.portableBindings) {
2540
2258
  return {
@@ -2554,7 +2272,9 @@ function createNativeShaderSources(sources) {
2554
2272
  return { ...nativeInstancedPbrShader(vertexEntry, fragmentEntry, sources.marker), entryPoints: [vertexEntry, fragmentEntry], uniformLayout: "generated-instanced-pbr" };
2555
2273
  }
2556
2274
  if (sources.marker.includes("pbr-textured")) {
2557
- return { ...nativeTexturedPbrShader(vertexEntry, fragmentEntry, sources.marker, nativeShaderUsesTangent(sources.vertex)), entryPoints: [vertexEntry, fragmentEntry], uniformLayout: "generated-textured-pbr" };
2275
+ const atlas = /uniform\s+sampler2D\s+u_extensionScalarAtlas/.test(sources.fragment);
2276
+ const native = nativeTexturedPbrShader(vertexEntry, fragmentEntry, sources.marker, nativeShaderUsesTangent(sources.vertex), atlas);
2277
+ return { ...native, ...(atlas ? { atlasVertex: native.vertex } : {}), entryPoints: [vertexEntry, fragmentEntry], uniformLayout: atlas ? "generated-atlas-pbr" : "generated-textured-pbr" };
2558
2278
  }
2559
2279
  if (sources.marker.includes("pbr-direct")) {
2560
2280
  return sources.fragment.includes("u_baseColorTexture")
@@ -2567,21 +2287,57 @@ function createNativeShaderSources(sources) {
2567
2287
  if (sources.marker.includes("morph-unlit")) {
2568
2288
  return { ...nativeMorphUnlitShader(vertexEntry, fragmentEntry, sources.marker), entryPoints: [vertexEntry, fragmentEntry], uniformLayout: "generated-morph-unlit" };
2569
2289
  }
2570
- if (/sampler2D/.test(sources.fragment) && /layout\s*\(\s*location\s*=\s*2\s*\)\s*in\s+vec2/.test(sources.vertex)) {
2571
- return {
2572
- vertex: `// ${sources.marker}\nstruct DrawUniforms {\n modelViewProjection: mat4x4<f32>,\n color: vec4<f32>,\n};\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv: vec2<f32>,\n};\n\n@group(0) @binding(0) var<uniform> u_draw: DrawUniforms;\n\n@vertex\nfn ${vertexEntry}(@location(0) position: vec3<f32>, @location(2) uv: vec2<f32>) -> VertexOutput {\n var output: VertexOutput;\n let clipPosition = u_draw.modelViewProjection * vec4<f32>(position, 1.0);
2573
- output.position = vec4<f32>(clipPosition.x, clipPosition.y, clipPosition.z * 0.5 + clipPosition.w * 0.5, clipPosition.w);\n output.uv = uv;\n return output;\n}\n`,
2574
- fragment: `// ${sources.marker}\nstruct DrawUniforms {\n modelViewProjection: mat4x4<f32>,\n color: vec4<f32>,\n};\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv: vec2<f32>,\n};\n\n@group(0) @binding(0) var<uniform> u_draw: DrawUniforms;\n@group(0) @binding(1) var u_textureSampler: sampler;\n@group(0) @binding(2) var u_texture: texture_2d<f32>;\n\n@fragment\nfn ${fragmentEntry}(input: VertexOutput) -> @location(0) vec4<f32> {\n return u_draw.color * textureSample(u_texture, u_textureSampler, input.uv);\n}\n`,
2575
- entryPoints: [vertexEntry, fragmentEntry],
2576
- uniformLayout: "generated-texture"
2577
- };
2290
+ // PRD 11 Phase 1 freeze: only the encoded-depth program keeps a generated
2291
+ // WGSL fallback (it is a real packed-depth shader, not a flat-colour stub).
2292
+ // Every other shader without a portable, passthrough, or marker WGSL program
2293
+ // throws at creation instead of silently rendering flat colour.
2294
+ if (!sources.marker.includes(DEFAULT_DEPTH_SHADER_MARKER)) {
2295
+ throw new RenderDeviceError("No WGSL program for shader", "WGSL_PROGRAM_MISSING", {
2296
+ marker: sources.marker,
2297
+ label: sources.label
2298
+ });
2578
2299
  }
2300
+ // Basic GLSL programs (including unlit primitives and particle sprites)
2301
+ // declare their color input explicitly. Preserve that location and component
2302
+ // count; RGB inputs use opaque alpha, while RGBA alpha modulates the material.
2303
+ // Depth programs intentionally do not consume material/vertex color.
2304
+ const colorInput = sources.marker.includes(DEFAULT_DEPTH_SHADER_MARKER) ? null
2305
+ : /layout\s*\(\s*location\s*=\s*(\d+)\s*\)\s*in\s+(?:lowp\s+|mediump\s+|highp\s+)?vec([34])\s+(?:a_color|color)\s*;/.exec(sources.vertex);
2306
+ const colorParameter = colorInput ? `, @location(${colorInput[1]}) vertexColor: vec${colorInput[2]}<f32>` : "";
2307
+ const vertexOutput = `struct VertexOutput {
2308
+ @builtin(position) position: vec4<f32>,
2309
+ ${colorInput ? "@location(0) color: vec4<f32>," : ""}
2310
+ };`;
2311
+ const drawUniforms = `struct DrawUniforms {
2312
+ modelViewProjection: mat4x4<f32>,
2313
+ color: vec4<f32>,
2314
+ };
2315
+ @group(0) @binding(0) var<uniform> u_draw: DrawUniforms;`;
2316
+ const vertex = `// ${sources.marker}
2317
+ ${drawUniforms}
2318
+ ${vertexOutput}
2319
+ @vertex
2320
+ fn ${vertexEntry}(@location(0) position: vec3<f32>${colorParameter}) -> VertexOutput {
2321
+ var output: VertexOutput;
2322
+ let clipPosition = u_draw.modelViewProjection * vec4<f32>(position, 1.0);
2323
+ output.position = vec4<f32>(clipPosition.x, clipPosition.y, clipPosition.z * 0.5 + clipPosition.w * 0.5, clipPosition.w);
2324
+ ${colorInput ? `output.color = ${colorInput[2] === "3" ? "vec4<f32>(vertexColor, 1.0)" : "vertexColor"};` : ""}
2325
+ return output;
2326
+ }
2327
+ `;
2579
2328
  return {
2580
- vertex: `// ${sources.marker}\nstruct DrawUniforms {\n modelViewProjection: mat4x4<f32>,\n color: vec4<f32>,\n};\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> u_draw: DrawUniforms;\n\n@vertex\nfn ${vertexEntry}(@location(0) position: vec3<f32>) -> VertexOutput {\n var output: VertexOutput;\n let clipPosition = u_draw.modelViewProjection * vec4<f32>(position, 1.0);
2581
- output.position = vec4<f32>(clipPosition.x, clipPosition.y, clipPosition.z * 0.5 + clipPosition.w * 0.5, clipPosition.w);\n return output;\n}\n`,
2329
+ vertex,
2330
+ colorDefaultVertex: colorInput ? vertex.replace(colorParameter, "").replace(/output\.color = [^;]+;/, "output.color = vec4<f32>(1.0);") : undefined,
2582
2331
  fragment: sources.marker.includes(DEFAULT_DEPTH_SHADER_MARKER)
2583
2332
  ? nativeDepthFragment(sources.marker, fragmentEntry)
2584
- : `// ${sources.marker}\nstruct DrawUniforms {\n modelViewProjection: mat4x4<f32>,\n color: vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> u_draw: DrawUniforms;\n\n@fragment\nfn ${fragmentEntry}() -> @location(0) vec4<f32> {\n return u_draw.color;\n}\n`,
2333
+ : `// ${sources.marker}
2334
+ ${drawUniforms}
2335
+ ${vertexOutput}
2336
+ @fragment
2337
+ fn ${fragmentEntry}(input: VertexOutput) -> @location(0) vec4<f32> {
2338
+ return u_draw.color${colorInput ? " * input.color" : ""};
2339
+ }
2340
+ `,
2585
2341
  entryPoints: [vertexEntry, fragmentEntry],
2586
2342
  uniformLayout: "generated-basic"
2587
2343
  };
@@ -2725,7 +2481,7 @@ fn a3dWebGPUClipPosition(clipPosition: vec4<f32>) -> vec4<f32> {
2725
2481
  function nativeShaderUsesTangent(vertexSource) {
2726
2482
  return /\ba_tangent\b/.test(vertexSource) || /layout\s*\(\s*location\s*=\s*3\s*\)\s*in\s+vec4/.test(vertexSource);
2727
2483
  }
2728
- function nativePbrFragmentPrelude(marker) {
2484
+ function nativePbrFragmentPrelude(marker, atlas = false) {
2729
2485
  return `// ${marker}
2730
2486
  ${nativeUniformStruct()}
2731
2487
  @group(0) @binding(1) var u_baseSampler: sampler;
@@ -2747,12 +2503,15 @@ ${nativeUniformStruct()}
2747
2503
  @group(0) @binding(17) var u_spotShadowSampler: sampler;
2748
2504
  @group(0) @binding(18) var u_spotShadowTexture: texture_2d<f32>;
2749
2505
 
2506
+ ${atlas ? WEBGPU_EXTENSION_ATLAS_WGSL : ""}
2507
+
2750
2508
  struct VertexOutput {
2751
2509
  @builtin(position) position: vec4<f32>,
2752
2510
  @location(0) normal: vec3<f32>,
2753
2511
  @location(1) uv: vec2<f32>,
2754
2512
  @location(2) worldPosition: vec3<f32>,
2755
2513
  @location(3) tangent: vec4<f32>,
2514
+ ${atlas ? "@location(4) uv1: vec2<f32>, @location(5) color: vec4<f32>," : ""}
2756
2515
  };
2757
2516
 
2758
2517
  fn fresnelSchlick(cosTheta: f32, f0: vec3<f32>) -> vec3<f32> {
@@ -2765,14 +2524,16 @@ fn fresnelSchlickRoughness(cosTheta: f32, f0: vec3<f32>, roughness: f32) -> vec3
2765
2524
  }
2766
2525
 
2767
2526
  fn ggxDistribution(nDotH: f32, roughness: f32) -> f32 {
2768
- let a = max(roughness * roughness, 0.045);
2527
+ let a = ${atlas ? "max(roughness, 0.045) * max(roughness, 0.045)" : "max(roughness * roughness, 0.045)"};
2769
2528
  let a2 = a * a;
2770
- let denom = max((nDotH * nDotH) * (a2 - 1.0) + 1.0, 0.001);
2771
- return a2 / max(3.14159265 * denom * denom, 0.001);
2529
+ // At roughness .045 the true denominator before squaring is ~4.1e-6.
2530
+ // A .001/.00001 floor destroys the normalized low-roughness GGX lobe.
2531
+ let denom = max((nDotH * nDotH) * (a2 - 1.0) + 1.0, ${atlas ? "0.00000001" : "0.001"});
2532
+ return a2 / max(3.14159265 * denom * denom, ${atlas ? "0.0000000000000001" : "0.001"});
2772
2533
  }
2773
2534
 
2774
2535
  fn ggxVisibilitySmithCorrelated(nDotV: f32, nDotL: f32, roughness: f32) -> f32 {
2775
- let a = max(roughness * roughness, 0.045);
2536
+ let a = ${atlas ? "max(roughness, 0.045) * max(roughness, 0.045)" : "max(roughness * roughness, 0.045)"};
2776
2537
  let a2 = a * a;
2777
2538
  let lambdaV = nDotL * sqrt(max((nDotV - a2 * nDotV) * nDotV + a2, 0.00001));
2778
2539
  let lambdaL = nDotV * sqrt(max((nDotL - a2 * nDotL) * nDotL + a2, 0.00001));
@@ -2794,41 +2555,6 @@ fn encodePbrOutput(linearColor: vec3<f32>) -> vec3<f32> {
2794
2555
  return pow(filmic, vec3<f32>(1.0 / 2.2, 1.0 / 2.2, 1.0 / 2.2));
2795
2556
  }
2796
2557
 
2797
- fn productPropBodyGate(baseColor: vec3<f32>, strength: f32) -> f32 {
2798
- let maxChannel = max(max(baseColor.r, baseColor.g), baseColor.b);
2799
- let minChannel = min(min(baseColor.r, baseColor.g), baseColor.b);
2800
- let normalized = baseColor / max(maxChannel, 0.001);
2801
- let warm = clamp(strength, 0.0, 1.0)
2802
- * smoothstep(0.18, 0.42, maxChannel)
2803
- * smoothstep(0.04, 0.2, maxChannel - minChannel)
2804
- * smoothstep(0.64, 0.84, normalized.r)
2805
- * (1.0 - smoothstep(0.12, 0.32, normalized.b));
2806
- return warm * smoothstep(0.46, 0.64, normalized.g) * (1.0 - smoothstep(0.74, 0.94, normalized.b));
2807
- }
2808
-
2809
- fn productPropOrangeGate(baseColor: vec3<f32>, strength: f32) -> f32 {
2810
- let maxChannel = max(max(baseColor.r, baseColor.g), baseColor.b);
2811
- let minChannel = min(min(baseColor.r, baseColor.g), baseColor.b);
2812
- let normalized = baseColor / max(maxChannel, 0.001);
2813
- let warm = clamp(strength, 0.0, 1.0)
2814
- * smoothstep(0.32, 0.58, maxChannel)
2815
- * smoothstep(0.05, 0.24, maxChannel - minChannel)
2816
- * smoothstep(0.68, 0.88, normalized.r)
2817
- * (1.0 - smoothstep(0.1, 0.28, normalized.b));
2818
- return warm * (1.0 - smoothstep(0.34, 0.58, normalized.g)) * smoothstep(0.012, 0.08, baseColor.g);
2819
- }
2820
-
2821
- fn productPropAlbedo(baseColor: vec3<f32>, strength: f32) -> vec3<f32> {
2822
- let orangeGate = productPropOrangeGate(baseColor, strength);
2823
- let bodyGate = productPropBodyGate(baseColor, strength) * (1.0 - orangeGate * 0.92);
2824
- let maxChannel = max(max(baseColor.r, baseColor.g), baseColor.b);
2825
- let bodyLuma = mix(0.98, 1.03, smoothstep(0.24, 0.9, maxChannel));
2826
- let beakLuma = mix(0.94, 1.02, smoothstep(0.2, 0.82, maxChannel));
2827
- var color = mix(baseColor, vec3<f32>(1.0, 0.88, 0.012) * bodyLuma, clamp(bodyGate * 0.995, 0.0, 0.995));
2828
- color = mix(color, vec3<f32>(1.0, 0.24, 0.018) * beakLuma, clamp(orangeGate * 0.99, 0.0, 0.99));
2829
- return color;
2830
- }
2831
-
2832
2558
  fn perturbNormal(normalInput: vec3<f32>, tangentFrame: vec4<f32>, normalSample: vec3<f32>, normalScale: f32) -> vec3<f32> {
2833
2559
  let n = normalize(normalInput);
2834
2560
  let tangent = normalize(tangentFrame.xyz);
@@ -2898,55 +2624,53 @@ fn a3dNativeShadowFactor(worldPosition: vec3<f32>, normal: vec3<f32>, lightDirec
2898
2624
  return mix(1.0, 1.0 - occlusion, clamp(strength, 0.0, 1.0));
2899
2625
  }
2900
2626
 
2901
- fn shadePbr(normalInput: vec3<f32>, tangentFrame: vec4<f32>, uv: vec2<f32>, worldPosition: vec3<f32>, fragmentPosition: vec2<f32>) -> vec4<f32> {
2627
+ fn shadePbr(normalInput: vec3<f32>, tangentFrame: vec4<f32>, uv: vec2<f32>, worldPosition: vec3<f32>, fragmentPosition: vec2<f32>${atlas ? ", uv1: vec2<f32>, vertexColor: vec4<f32>" : ""}) -> vec4<f32> {
2902
2628
  var normal = normalize(normalInput);
2903
2629
  if (u_draw.morph0.x > 0.5) {
2904
- normal = perturbNormal(normal, tangentFrame, textureSample(u_normalTexture, u_normalSampler, uv).rgb, u_draw.morph0.y);
2630
+ normal = perturbNormal(normal, tangentFrame, textureSample(u_normalTexture, u_normalSampler, ${atlas ? "atlasUv(1u, uv, uv1)" : "uv"}).rgb, u_draw.morph0.y);
2905
2631
  }
2906
2632
  let viewDirection = normalize(u_draw.camera.xyz - worldPosition);
2907
2633
  let lightDirection = normalize(vec3<f32>(0.36, 0.52, 0.78));
2908
2634
  let halfVector = normalize(lightDirection + viewDirection);
2909
- var baseColor = u_draw.color.rgb;
2910
- var materialAlpha = u_draw.color.a;
2635
+ var baseColor = u_draw.color.rgb${atlas ? " * vertexColor.rgb" : ""};
2636
+ var materialAlpha = u_draw.color.a${atlas ? " * vertexColor.a" : ""};
2911
2637
  if (u_draw.flags.x > 0.5) {
2912
- let baseSample = textureSample(u_baseTexture, u_baseSampler, uv);
2638
+ let baseSample = textureSample(u_baseTexture, u_baseSampler, ${atlas ? "atlasUv(0u, uv, uv1)" : "uv"});
2913
2639
  baseColor = baseColor * baseSample.rgb;
2914
2640
  materialAlpha = materialAlpha * baseSample.a;
2915
2641
  }
2916
- let sourceProductBaseColor = baseColor;
2917
- let productOrangeGate = productPropOrangeGate(sourceProductBaseColor, u_draw.materialFlags.z);
2918
- let productBodyGate = productPropBodyGate(sourceProductBaseColor, u_draw.materialFlags.z) * (1.0 - productOrangeGate * 0.92);
2919
- let productSurfaceGate = clamp(productBodyGate + productOrangeGate * 0.72, 0.0, 1.0);
2920
- baseColor = productPropAlbedo(sourceProductBaseColor, u_draw.materialFlags.z);
2921
- if (materialAlpha < u_draw.material.x) {
2922
- discard;
2923
- }
2642
+ ${atlas ? "" : "if (materialAlpha < u_draw.material.x) { discard; }"}
2924
2643
  let transmission = clamp(max(u_draw.material.y, u_draw.material.z), 0.0, 1.0);
2925
- let metallicRoughnessSample = textureSample(u_metallicRoughnessTexture, u_metallicRoughnessSampler, uv);
2644
+ let metallicRoughnessSample = textureSample(u_metallicRoughnessTexture, u_metallicRoughnessSampler, ${atlas ? "atlasUv(2u, uv, uv1)" : "uv"});
2926
2645
  let metallicRoughnessEnabled = step(0.5, u_draw.materialFlags.x);
2927
2646
  let occlusionEnabled = step(0.5, u_draw.materialFlags.y);
2928
2647
  let sampledMetallic = clamp(u_draw.params.x * metallicRoughnessSample.b, 0.0, 1.0);
2929
2648
  let sampledRoughness = clamp(u_draw.params.y * metallicRoughnessSample.g, 0.045, 1.0);
2930
- let sampledOcclusion = mix(1.0, textureSample(u_occlusionTexture, u_occlusionSampler, uv).r, clamp(u_draw.morph0.z, 0.0, 1.0));
2649
+ let sampledOcclusion = mix(1.0, textureSample(u_occlusionTexture, u_occlusionSampler, ${atlas ? "atlasUv(3u, uv, uv1)" : "uv"}).r, clamp(u_draw.morph0.z, 0.0, 1.0));
2931
2650
  let metallic = mix(clamp(u_draw.params.x, 0.0, 1.0), sampledMetallic, metallicRoughnessEnabled);
2932
2651
  let roughness = mix(clamp(u_draw.params.y, 0.045, 1.0), sampledRoughness, metallicRoughnessEnabled);
2933
2652
  let occlusion = mix(1.0, sampledOcclusion, occlusionEnabled);
2934
- let smoothedProductNormal = normalize(vec3<f32>(normal.x * 0.42, max(normal.y, 0.28), normal.z * 0.42));
2935
- normal = normalize(mix(normal, smoothedProductNormal, productBodyGate * 0.46 + productOrangeGate * 0.84));
2936
2653
  let nDotL = max(dot(normal, lightDirection), 0.0);
2937
2654
  let nDotV = max(dot(normal, viewDirection), 0.001);
2938
2655
  let nDotH = max(dot(normal, halfVector), 0.001);
2939
2656
  let vDotH = max(dot(viewDirection, halfVector), 0.001);
2940
- let f0 = mix(vec3<f32>(0.04, 0.04, 0.04), baseColor, metallic);
2657
+ let dielectricF0 = ${atlas ? "vec3<f32>(pow((u_atlas.substrate.x-1.0)/(u_atlas.substrate.x+1.0),2.0)) * clamp(u_atlas.specularColor.rgb,vec3<f32>(0.0),vec3<f32>(1.0)) * clamp(u_atlas.substrate.y,0.0,1.0)" : "vec3<f32>(0.04, 0.04, 0.04)"};
2658
+ let f0 = mix(dielectricF0, baseColor, metallic);
2941
2659
  let fresnel = fresnelSchlick(vDotH, f0);
2942
2660
  let distribution = ggxDistribution(nDotH, roughness);
2943
2661
  let visibility = ggxVisibilitySmithCorrelated(nDotV, nDotL, roughness);
2944
2662
  let lDotH = max(dot(lightDirection, halfVector), 0.0);
2945
- let kd = (vec3<f32>(1.0, 1.0, 1.0) - fresnel) * (1.0 - metallic);
2663
+ ${atlas ? `// The film replaces the substrate Fresnel in the dielectric energy split.
2664
+ // Retaining the old kd while adding film specular creates or loses energy.
2665
+ let filmFresnel = atlasIridescenceFresnel(f0, vDotH, uv, uv1);
2666
+ let filmMaximum = max(max(filmFresnel.r, filmFresnel.g), filmFresnel.b);
2667
+ let diffuseFresnel = select(fresnel, vec3<f32>(filmMaximum), u_atlas.iridescence.y > 0.0);
2668
+ let kd = (vec3<f32>(1.0) - diffuseFresnel) * (1.0 - metallic);` : "let kd = (vec3<f32>(1.0, 1.0, 1.0) - fresnel) * (1.0 - metallic);"}
2946
2669
  let specular = fresnel * distribution * visibility;
2947
2670
  let diffuse = kd * baseColor * diffuseBurley(nDotV, nDotL, lDotH, roughness) / 3.14159265;
2948
2671
  var environment = baseColor * u_draw.params.z * (0.28 + 0.72 * clamp(normal.y * 0.5 + 0.5, 0.0, 1.0)) * occlusion;
2949
2672
  var environmentSpecularContribution = vec3<f32>(0.0, 0.0, 0.0);
2673
+ var environmentExtensionRadiance = vec3<f32>(0.0);
2950
2674
  if (u_draw.flags.w > 0.5) {
2951
2675
  let reflectionDirection = reflect(-viewDirection, normal);
2952
2676
  let diffuseUv = vec2<f32>(fract(atan2(normal.z, normal.x) / 6.2831853 + 0.5), acos(clamp(normal.y, -1.0, 1.0)) / 3.14159265);
@@ -2957,8 +2681,10 @@ fn shadePbr(normalInput: vec3<f32>, tangentFrame: vec4<f32>, uv: vec2<f32>, worl
2957
2681
  let brdf = textureSampleLevel(u_brdfTexture, u_brdfSampler, vec2<f32>(nDotV, roughness), 0.0).rg;
2958
2682
  let environmentFresnel = fresnelSchlickRoughness(nDotV, f0, roughness);
2959
2683
  let environmentDiffuse = (vec3<f32>(1.0, 1.0, 1.0) - environmentFresnel) * (1.0 - metallic) * diffuseEnv * baseColor * u_draw.params.w * occlusion;
2960
- let environmentSpecular = specularEnv * (f0 * brdf.x + vec3<f32>(brdf.y, brdf.y, brdf.y)) * max(u_draw.reserved0.w, 0.0);
2684
+ ${atlas ? "let environmentF0 = atlasIridescenceEnvironmentF0(f0, nDotV, uv, uv1);" : "let environmentF0 = f0;"}
2685
+ let environmentSpecular = specularEnv * (environmentF0 * brdf.x + vec3<f32>(brdf.y, brdf.y, brdf.y)) * max(u_draw.reserved0.w, 0.0);
2961
2686
  environmentSpecularContribution = environmentSpecular;
2687
+ environmentExtensionRadiance = specularEnv * max(u_draw.reserved0.w, 0.0);
2962
2688
  environment = environment + environmentDiffuse + environmentSpecular;
2963
2689
  }
2964
2690
  // J2 native shadow projections: directional PCF mirrors GLSL
@@ -2989,8 +2715,8 @@ fn shadePbr(normalInput: vec3<f32>, tangentFrame: vec4<f32>, uv: vec2<f32>, worl
2989
2715
  let toLight = positionRange.xyz - worldPosition;
2990
2716
  let distanceToLight = length(toLight);
2991
2717
  clusteredDirection = select(clusteredDirection, toLight / max(distanceToLight, 0.0001), distanceToLight > 0.0001);
2992
- let range = max(positionRange.w, 0.0001);
2993
- let rangeFalloff = clamp(1.0 - pow(distanceToLight / range, 4.0), 0.0, 1.0);
2718
+ // range <= 0 means infinite (physical descriptors, PRD-02 §6.3).
2719
+ let rangeFalloff = select(clamp(1.0 - pow(distanceToLight / max(positionRange.w, 0.0001), 4.0), 0.0, 1.0), 1.0, positionRange.w <= 0.0);
2994
2720
  attenuation = rangeFalloff * rangeFalloff / max(distanceToLight * distanceToLight, 1.0);
2995
2721
  }
2996
2722
  let clusteredNdotL = max(dot(normal, clusteredDirection), 0.0);
@@ -2998,16 +2724,13 @@ fn shadePbr(normalInput: vec3<f32>, tangentFrame: vec4<f32>, uv: vec2<f32>, worl
2998
2724
  }
2999
2725
  }
3000
2726
  let legacyDirect = (diffuse + specular) * nDotL * 2.25 * shadow;
3001
- let litOpaqueLinearColor = environment + select(legacyDirect, clusteredDirect, u_draw.materialFlags.w > 0.5);
3002
- let smoothedBodyColor = mix(baseColor, vec3<f32>(1.0, 0.88, 0.012), productBodyGate * 0.32);
3003
- let smoothedBeakColor = mix(baseColor, vec3<f32>(1.0, 0.24, 0.018), productOrangeGate * 0.82);
3004
- let softBodyProduct = smoothedBodyColor * (1.5 + 0.06 * nDotL) + specular * nDotL * 0.018;
3005
- let softBeakProduct = smoothedBeakColor * (1.08 + 0.05 * nDotL) + specular * nDotL * 0.018;
3006
- var opaqueLinearColor = mix(litOpaqueLinearColor, softBodyProduct, productBodyGate * 0.78);
3007
- opaqueLinearColor = mix(opaqueLinearColor, softBeakProduct, productOrangeGate * 0.95);
2727
+ let litOpaqueLinearColor = environment + select(legacyDirect, clusteredDirect, u_draw.materialFlags.w > 0.5)
2728
+ ${atlas ? "+ atlasExtensionLighting(normal, tangentFrame, viewDirection, lightDirection, uv, uv1, shadow, environmentExtensionRadiance, f0, roughness) + u_atlas.emissive.rgb * u_atlas.factors.y * mix(vec3<f32>(1.0), textureSample(u_emissiveTexture, u_emissiveSampler, atlasUv(4u, uv, uv1)).rgb, u_atlas.maps[4].control.z)" : ""};
2729
+ let opaqueLinearColor = litOpaqueLinearColor;
3008
2730
  let transmittedTint = baseColor * u_draw.params.w * (0.18 + 0.42 * clamp(1.0 - roughness, 0.0, 1.0)) + environmentSpecularContribution * 1.35;
3009
2731
  let linearColor = mix(opaqueLinearColor, opaqueLinearColor * 0.22 + transmittedTint, transmission);
3010
2732
  let outputAlpha = mix(materialAlpha, min(materialAlpha, 0.22), transmission);
2733
+ ${atlas ? "if (materialAlpha < u_draw.material.x) { discard; }" : ""}
3011
2734
  return vec4<f32>(encodePbrOutput(linearColor), outputAlpha);
3012
2735
  }
3013
2736
  `;
@@ -3044,7 +2767,7 @@ fn ${fragmentEntry}(input: VertexOutput) -> @location(0) vec4<f32> {
3044
2767
  `
3045
2768
  };
3046
2769
  }
3047
- function nativeTexturedPbrShader(vertexEntry, fragmentEntry, marker, usesTangent) {
2770
+ function nativeTexturedPbrShader(vertexEntry, fragmentEntry, marker, usesTangent, atlas = false) {
3048
2771
  return {
3049
2772
  vertex: `// ${marker}
3050
2773
  ${nativeUniformStruct()}
@@ -3054,24 +2777,26 @@ struct VertexOutput {
3054
2777
  @location(1) uv: vec2<f32>,
3055
2778
  @location(2) worldPosition: vec3<f32>,
3056
2779
  @location(3) tangent: vec4<f32>,
2780
+ ${atlas ? "@location(4) uv1: vec2<f32>, @location(5) color: vec4<f32>," : ""}
3057
2781
  };
3058
2782
 
3059
2783
  @vertex
3060
- fn ${vertexEntry}(@location(0) position: vec3<f32>, @location(1) normal: vec3<f32>, @location(2) uv: vec2<f32>${usesTangent ? ", @location(3) tangent: vec4<f32>" : ""}) -> VertexOutput {
2784
+ fn ${vertexEntry}(@location(0) position: vec3<f32>, @location(1) normal: vec3<f32>, @location(2) uv: vec2<f32>${usesTangent ? ", @location(3) tangent: vec4<f32>" : ""}${atlas ? ", @location(4) color: vec4<f32>, @location(7) uv1: vec2<f32>" : ""}) -> VertexOutput {
3061
2785
  var output: VertexOutput;
3062
2786
  let worldPosition = (u_draw.instance0 * vec4<f32>(position, 1.0)).xyz;
3063
2787
  output.position = a3dWebGPUClipPosition(u_draw.modelViewProjection * vec4<f32>(position, 1.0));
3064
2788
  output.normal = normalize((u_draw.normalMatrix * vec4<f32>(normal, 0.0)).xyz);
3065
2789
  output.uv = uv;
2790
+ ${atlas ? "output.uv1 = uv1; output.color = color;" : ""}
3066
2791
  output.worldPosition = worldPosition;
3067
2792
  ${usesTangent ? "output.tangent = vec4<f32>(normalize((u_draw.normalMatrix * vec4<f32>(tangent.xyz, 0.0)).xyz), tangent.w);" : "output.tangent = vec4<f32>(1.0, 0.0, 0.0, 1.0);"}
3068
2793
  return output;
3069
2794
  }
3070
2795
  `,
3071
- fragment: `${nativePbrFragmentPrelude(marker)}
2796
+ fragment: `${nativePbrFragmentPrelude(marker, atlas)}
3072
2797
  @fragment
3073
2798
  fn ${fragmentEntry}(input: VertexOutput) -> @location(0) vec4<f32> {
3074
- return shadePbr(input.normal, input.tangent, input.uv, input.worldPosition, input.position.xy);
2799
+ return shadePbr(input.normal, input.tangent, input.uv, input.worldPosition, input.position.xy${atlas ? ", input.uv1, input.color" : ""});
3075
2800
  }
3076
2801
  `
3077
2802
  };