@onerjs/core 9.0.0 → 9.0.2

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 (353) hide show
  1. package/Animations/animationGroup.pure.js.map +1 -1
  2. package/Cameras/targetCamera.pure.js +6 -1
  3. package/Cameras/targetCamera.pure.js.map +1 -1
  4. package/Engines/Native/nativeHardwareTexture.d.ts +8 -1
  5. package/Engines/Native/nativeHardwareTexture.js +7 -0
  6. package/Engines/Native/nativeHardwareTexture.js.map +1 -1
  7. package/Engines/Native/nativeHelpers.js +56 -1
  8. package/Engines/Native/nativeHelpers.js.map +1 -1
  9. package/Engines/Native/nativeInterfaces.d.ts +37 -8
  10. package/Engines/Native/nativeInterfaces.js.map +1 -1
  11. package/Engines/Native/nativeRenderTargetWrapper.d.ts +40 -0
  12. package/Engines/Native/nativeRenderTargetWrapper.js +265 -5
  13. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  14. package/Engines/Processors/shaderCodeCursor.d.ts +1 -0
  15. package/Engines/Processors/shaderCodeCursor.js +40 -3
  16. package/Engines/Processors/shaderCodeCursor.js.map +1 -1
  17. package/Engines/WebGPU/Extensions/engine.renderTarget.pure.js +1 -0
  18. package/Engines/WebGPU/Extensions/engine.renderTarget.pure.js.map +1 -1
  19. package/Engines/abstractEngine.pure.d.ts +15 -1
  20. package/Engines/abstractEngine.pure.js +12 -4
  21. package/Engines/abstractEngine.pure.js.map +1 -1
  22. package/Engines/engine.pure.d.ts +0 -1
  23. package/Engines/engine.pure.js +0 -7
  24. package/Engines/engine.pure.js.map +1 -1
  25. package/Engines/nativeEngine.pure.js +1 -1
  26. package/Engines/nativeEngine.pure.js.map +1 -1
  27. package/Engines/thinEngine.pure.d.ts +1 -0
  28. package/Engines/thinEngine.pure.js +13 -2
  29. package/Engines/thinEngine.pure.js.map +1 -1
  30. package/Engines/thinNativeEngine.pure.d.ts +217 -17
  31. package/Engines/thinNativeEngine.pure.js +1431 -164
  32. package/Engines/thinNativeEngine.pure.js.map +1 -1
  33. package/Engines/thinWebGPUEngine.js +6 -1
  34. package/Engines/thinWebGPUEngine.js.map +1 -1
  35. package/Engines/webgpuEngine.pure.d.ts +12 -1
  36. package/Engines/webgpuEngine.pure.js +8 -0
  37. package/Engines/webgpuEngine.pure.js.map +1 -1
  38. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.d.ts +10 -0
  39. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js +24 -12
  40. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js.map +1 -1
  41. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.d.ts +7 -0
  42. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.js +43 -0
  43. package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.pure.js.map +1 -1
  44. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +16 -4
  45. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +20 -6
  46. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
  47. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js +3 -3
  48. package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.pure.js.map +1 -1
  49. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +7 -7
  50. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +52 -35
  51. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
  52. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.d.ts +12 -1
  53. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js +8 -0
  54. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js.map +1 -1
  55. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js +4 -1
  56. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js.map +1 -1
  57. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.d.ts +12 -1
  58. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.js +5 -1
  59. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.pure.js.map +1 -1
  60. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.d.ts +2 -0
  61. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.js +14 -2
  62. package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.pure.js.map +1 -1
  63. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.d.ts +5 -1
  64. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.js +23 -8
  65. package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.pure.js.map +1 -1
  66. package/FlowGraph/CustomTypes/flowGraphInteger.pure.d.ts +5 -0
  67. package/FlowGraph/CustomTypes/flowGraphInteger.pure.js +7 -0
  68. package/FlowGraph/CustomTypes/flowGraphInteger.pure.js.map +1 -1
  69. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +10 -0
  70. package/FlowGraph/CustomTypes/flowGraphMatrix.js +14 -0
  71. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  72. package/FlowGraph/flowGraph.d.ts +2 -1
  73. package/FlowGraph/flowGraph.js +3 -2
  74. package/FlowGraph/flowGraph.js.map +1 -1
  75. package/FlowGraph/flowGraphAnimationHelpers.d.ts +24 -0
  76. package/FlowGraph/flowGraphAnimationHelpers.js +21 -0
  77. package/FlowGraph/flowGraphAnimationHelpers.js.map +1 -0
  78. package/FlowGraph/flowGraphContext.js +1 -0
  79. package/FlowGraph/flowGraphContext.js.map +1 -1
  80. package/FlowGraph/flowGraphValidator.js +0 -4
  81. package/FlowGraph/flowGraphValidator.js.map +1 -1
  82. package/FlowGraph/index.d.ts +2 -0
  83. package/FlowGraph/index.js +2 -0
  84. package/FlowGraph/index.js.map +1 -1
  85. package/FlowGraph/pure.d.ts +2 -0
  86. package/FlowGraph/pure.js +2 -0
  87. package/FlowGraph/pure.js.map +1 -1
  88. package/FlowGraph/serialization.d.ts +2 -2
  89. package/FlowGraph/serialization.js +2 -2
  90. package/FlowGraph/serialization.js.map +1 -1
  91. package/FlowGraph/typeDefinitions.d.ts +1 -1
  92. package/FlowGraph/typeDefinitions.js.map +1 -1
  93. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.d.ts +1 -0
  94. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.js +4 -0
  95. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.js.map +1 -0
  96. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.d.ts +54 -0
  97. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.js +155 -0
  98. package/FrameGraph/Node/Blocks/Textures/minMaxReducerBlock.pure.js.map +1 -0
  99. package/FrameGraph/Node/Blocks/Textures/pure.d.ts +1 -0
  100. package/FrameGraph/Node/Blocks/Textures/pure.js +1 -0
  101. package/FrameGraph/Node/Blocks/Textures/pure.js.map +1 -1
  102. package/FrameGraph/Node/Blocks/allBlocks.pure.js +2 -0
  103. package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
  104. package/FrameGraph/Node/Blocks/index.d.ts +1 -0
  105. package/FrameGraph/Node/Blocks/index.js +1 -0
  106. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  107. package/FrameGraph/Node/Blocks/pure.d.ts +1 -0
  108. package/FrameGraph/Node/Blocks/pure.js +1 -0
  109. package/FrameGraph/Node/Blocks/pure.js.map +1 -1
  110. package/FrameGraph/Tasks/Misc/minMaxReducerTask.d.ts +62 -0
  111. package/FrameGraph/Tasks/Misc/minMaxReducerTask.js +159 -0
  112. package/FrameGraph/Tasks/Misc/minMaxReducerTask.js.map +1 -0
  113. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +3 -1
  114. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  115. package/FrameGraph/frameGraph.d.ts +4 -0
  116. package/FrameGraph/frameGraph.js +14 -0
  117. package/FrameGraph/frameGraph.js.map +1 -1
  118. package/FrameGraph/index.d.ts +1 -0
  119. package/FrameGraph/index.js +1 -0
  120. package/FrameGraph/index.js.map +1 -1
  121. package/FrameGraph/pure.d.ts +1 -0
  122. package/FrameGraph/pure.js +1 -0
  123. package/FrameGraph/pure.js.map +1 -1
  124. package/Inputs/scene.inputManager.js +1 -1
  125. package/Inputs/scene.inputManager.js.map +1 -1
  126. package/Lights/Clustered/clusteredLightingSceneComponent.pure.d.ts +5 -0
  127. package/Lights/Clustered/clusteredLightingSceneComponent.pure.js +22 -1
  128. package/Lights/Clustered/clusteredLightingSceneComponent.pure.js.map +1 -1
  129. package/Lights/Shadows/cascadedShadowGenerator.pure.js +7 -3
  130. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
  131. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.d.ts +7 -0
  132. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.js +8 -0
  133. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.js.map +1 -0
  134. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.d.ts +54 -0
  135. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js +81 -0
  136. package/Materials/GaussianSplatting/gaussianPointSplattingBlitMaterial.pure.js.map +1 -0
  137. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.d.ts +7 -0
  138. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.js +8 -0
  139. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.js.map +1 -0
  140. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.d.ts +60 -0
  141. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js +90 -0
  142. package/Materials/GaussianSplatting/gaussianPointSplattingDepthBlitMaterial.pure.js.map +1 -0
  143. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.d.ts +31 -0
  144. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +98 -0
  145. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
  146. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +1 -1
  147. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  148. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +2 -2
  149. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  150. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.d.ts +1 -0
  151. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.js +4 -0
  152. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.js.map +1 -0
  153. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.d.ts +83 -0
  154. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js +191 -0
  155. package/Materials/GaussianSplatting/gaussianSplattingOverdrawMaterialPlugin.pure.js.map +1 -0
  156. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.d.ts +1 -0
  157. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.js +4 -0
  158. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.js.map +1 -0
  159. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.d.ts +62 -0
  160. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js +125 -0
  161. package/Materials/GaussianSplatting/gaussianSplattingSizeMaterialPlugin.pure.js.map +1 -0
  162. package/Materials/GaussianSplatting/pure.d.ts +4 -0
  163. package/Materials/GaussianSplatting/pure.js +4 -0
  164. package/Materials/GaussianSplatting/pure.js.map +1 -1
  165. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.d.ts +1 -0
  166. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +12 -0
  167. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js.map +1 -1
  168. package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +1 -0
  169. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +31 -7
  170. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  171. package/Materials/Textures/mirrorTexture.pure.js +3 -1
  172. package/Materials/Textures/mirrorTexture.pure.js.map +1 -1
  173. package/Materials/Textures/texture.pure.js +8 -2
  174. package/Materials/Textures/texture.pure.js.map +1 -1
  175. package/Materials/effectRenderer.pure.d.ts +4 -0
  176. package/Materials/effectRenderer.pure.js +3 -2
  177. package/Materials/effectRenderer.pure.js.map +1 -1
  178. package/Materials/index.d.ts +4 -0
  179. package/Materials/index.js +4 -0
  180. package/Materials/index.js.map +1 -1
  181. package/Materials/material.pure.js +25 -12
  182. package/Materials/material.pure.js.map +1 -1
  183. package/Materials/pure.d.ts +4 -0
  184. package/Materials/pure.js +4 -0
  185. package/Materials/pure.js.map +1 -1
  186. package/Materials/standardMaterial.pure.d.ts +8 -0
  187. package/Materials/standardMaterial.pure.js +24 -2
  188. package/Materials/standardMaterial.pure.js.map +1 -1
  189. package/Meshes/Builders/polygonBuilder.pure.js +1 -1
  190. package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
  191. package/Meshes/GaussianSplatting/gaussianPointSplattingController.d.ts +8 -0
  192. package/Meshes/GaussianSplatting/gaussianPointSplattingController.js +11 -0
  193. package/Meshes/GaussianSplatting/gaussianPointSplattingController.js.map +1 -0
  194. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.d.ts +231 -0
  195. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.js +1212 -0
  196. package/Meshes/GaussianSplatting/gaussianPointSplattingController.pure.js.map +1 -0
  197. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.d.ts +14 -0
  198. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.js +15 -0
  199. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.js.map +1 -0
  200. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.d.ts +285 -0
  201. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.js +812 -0
  202. package/Meshes/GaussianSplatting/gaussianPointSplattingRenderer.pure.js.map +1 -0
  203. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +1 -0
  204. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +2 -0
  205. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  206. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +160 -0
  207. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +219 -0
  208. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  209. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +32 -4
  210. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +114 -21
  211. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  212. package/Meshes/GaussianSplatting/pure.d.ts +2 -0
  213. package/Meshes/GaussianSplatting/pure.js +2 -0
  214. package/Meshes/GaussianSplatting/pure.js.map +1 -1
  215. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +25 -11
  216. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
  217. package/Meshes/abstractMesh.pure.d.ts +12 -0
  218. package/Meshes/abstractMesh.pure.js +32 -0
  219. package/Meshes/abstractMesh.pure.js.map +1 -1
  220. package/Meshes/index.d.ts +1 -0
  221. package/Meshes/index.js +1 -0
  222. package/Meshes/index.js.map +1 -1
  223. package/Meshes/pure.d.ts +1 -0
  224. package/Meshes/pure.js +1 -0
  225. package/Meshes/pure.js.map +1 -1
  226. package/Meshes/subMesh.pure.d.ts +11 -2
  227. package/Meshes/subMesh.pure.js +20 -5
  228. package/Meshes/subMesh.pure.js.map +1 -1
  229. package/Meshes/thinInstanceMesh.pure.js +1 -0
  230. package/Meshes/thinInstanceMesh.pure.js.map +1 -1
  231. package/Misc/andOrNotEvaluator.js +4 -0
  232. package/Misc/andOrNotEvaluator.js.map +1 -1
  233. package/Misc/minMaxReducer.pure.d.ts +6 -0
  234. package/Misc/minMaxReducer.pure.js +10 -0
  235. package/Misc/minMaxReducer.pure.js.map +1 -1
  236. package/Misc/thinMinMaxReducer.d.ts +19 -2
  237. package/Misc/thinMinMaxReducer.js +74 -21
  238. package/Misc/thinMinMaxReducer.js.map +1 -1
  239. package/Misc/tools.pure.js +1 -1
  240. package/Misc/tools.pure.js.map +1 -1
  241. package/Particles/Node/Blocks/Update/updateNoiseBlock.pure.js +19 -7
  242. package/Particles/Node/Blocks/Update/updateNoiseBlock.pure.js.map +1 -1
  243. package/Particles/Node/Blocks/particleSourceTextureBlock.pure.js +3 -2
  244. package/Particles/Node/Blocks/particleSourceTextureBlock.pure.js.map +1 -1
  245. package/Particles/gpuParticleSystem.pure.d.ts +2 -0
  246. package/Particles/gpuParticleSystem.pure.js +12 -4
  247. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  248. package/Particles/particle.js +3 -2
  249. package/Particles/particle.js.map +1 -1
  250. package/Particles/solidParticleSystem.js +7 -1
  251. package/Particles/solidParticleSystem.js.map +1 -1
  252. package/Particles/thinParticleSystem.function.d.ts +6 -0
  253. package/Particles/thinParticleSystem.function.js +144 -88
  254. package/Particles/thinParticleSystem.function.js.map +1 -1
  255. package/Particles/thinParticleSystem.pure.d.ts +6 -0
  256. package/Particles/thinParticleSystem.pure.js +70 -9
  257. package/Particles/thinParticleSystem.pure.js.map +1 -1
  258. package/Physics/v2/ragdoll.d.ts +2 -4
  259. package/Physics/v2/ragdoll.js +11 -4
  260. package/Physics/v2/ragdoll.js.map +1 -1
  261. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +12 -0
  262. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +43 -18
  263. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  264. package/Rendering/depthRenderer.pure.d.ts +9 -0
  265. package/Rendering/depthRenderer.pure.js +12 -0
  266. package/Rendering/depthRenderer.pure.js.map +1 -1
  267. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +4 -0
  268. package/Rendering/fluidRenderer/fluidRenderingObject.js +6 -0
  269. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  270. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +4 -0
  271. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +8 -0
  272. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  273. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +3 -0
  274. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  275. package/Rendering/geometryBufferRenderer.pure.js +4 -1
  276. package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
  277. package/Rendering/objectRenderer.js.map +1 -1
  278. package/Rendering/prePassRenderer.pure.js +3 -3
  279. package/Rendering/prePassRenderer.pure.js.map +1 -1
  280. package/Shaders/ShadersInclude/gaussianSplatting.js +3 -1
  281. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  282. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +27 -3
  283. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  284. package/Shaders/ShadersInclude/oitDeclaration.js +1 -1
  285. package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -1
  286. package/Shaders/minmaxRedux.fragment.js +6 -1
  287. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  288. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.d.ts +5 -0
  289. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.js +65 -0
  290. package/ShadersWGSL/ShadersInclude/gaussianPointSplatting.js.map +1 -0
  291. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.d.ts +5 -0
  292. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.js +17 -0
  293. package/ShadersWGSL/ShadersInclude/gaussianPointSplattingScan.js.map +1 -0
  294. package/ShadersWGSL/ShadersInclude/gaussianSplatting.d.ts +1 -0
  295. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +6 -78
  296. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  297. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js +2 -2
  298. package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.js.map +1 -1
  299. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.d.ts +5 -0
  300. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.js +79 -0
  301. package/ShadersWGSL/ShadersInclude/gaussianSplattingShared.js.map +1 -0
  302. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +27 -3
  303. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  304. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.d.ts +5 -0
  305. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.js +22 -0
  306. package/ShadersWGSL/gaussianPointSplattingBlit.fragment.js.map +1 -0
  307. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.d.ts +5 -0
  308. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.js +19 -0
  309. package/ShadersWGSL/gaussianPointSplattingBlit.vertex.js.map +1 -0
  310. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.d.ts +5 -0
  311. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.js +21 -0
  312. package/ShadersWGSL/gaussianPointSplattingDepthBlit.fragment.js.map +1 -0
  313. package/ShadersWGSL/gaussianSplatting.vertex.js +2 -1
  314. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  315. package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -1
  316. package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
  317. package/ShadersWGSL/gaussianSplattingVoxel.vertex.js +2 -1
  318. package/ShadersWGSL/gaussianSplattingVoxel.vertex.js.map +1 -1
  319. package/ShadersWGSL/gpsHiZBuild.compute.d.ts +5 -0
  320. package/ShadersWGSL/gpsHiZBuild.compute.js +16 -0
  321. package/ShadersWGSL/gpsHiZBuild.compute.js.map +1 -0
  322. package/ShadersWGSL/gpsPartition.compute.d.ts +5 -0
  323. package/ShadersWGSL/gpsPartition.compute.js +27 -0
  324. package/ShadersWGSL/gpsPartition.compute.js.map +1 -0
  325. package/ShadersWGSL/gpsPreprocess.compute.d.ts +5 -0
  326. package/ShadersWGSL/gpsPreprocess.compute.js +86 -0
  327. package/ShadersWGSL/gpsPreprocess.compute.js.map +1 -0
  328. package/ShadersWGSL/gpsResolve.compute.d.ts +5 -0
  329. package/ShadersWGSL/gpsResolve.compute.js +41 -0
  330. package/ShadersWGSL/gpsResolve.compute.js.map +1 -0
  331. package/ShadersWGSL/gpsScanAdd.compute.d.ts +5 -0
  332. package/ShadersWGSL/gpsScanAdd.compute.js +22 -0
  333. package/ShadersWGSL/gpsScanAdd.compute.js.map +1 -0
  334. package/ShadersWGSL/gpsScanBlocks.compute.d.ts +5 -0
  335. package/ShadersWGSL/gpsScanBlocks.compute.js +23 -0
  336. package/ShadersWGSL/gpsScanBlocks.compute.js.map +1 -0
  337. package/ShadersWGSL/gpsScanSums.compute.d.ts +5 -0
  338. package/ShadersWGSL/gpsScanSums.compute.js +30 -0
  339. package/ShadersWGSL/gpsScanSums.compute.js.map +1 -0
  340. package/ShadersWGSL/gpsSplat.compute.d.ts +5 -0
  341. package/ShadersWGSL/gpsSplat.compute.js +37 -0
  342. package/ShadersWGSL/gpsSplat.compute.js.map +1 -0
  343. package/ShadersWGSL/minmaxRedux.fragment.js +20 -3
  344. package/ShadersWGSL/minmaxRedux.fragment.js.map +1 -1
  345. package/XR/features/WebXRSpaceWarp.pure.js +2 -1
  346. package/XR/features/WebXRSpaceWarp.pure.js.map +1 -1
  347. package/assetContainer.d.ts +1 -0
  348. package/assetContainer.js +5 -1
  349. package/assetContainer.js.map +1 -1
  350. package/package.json +1 -1
  351. package/scene.pure.d.ts +13 -2
  352. package/scene.pure.js +28 -4
  353. package/scene.pure.js.map +1 -1
@@ -5,4 +5,5 @@ export declare class ShaderCodeCursor {
5
5
  get currentLine(): string;
6
6
  get canRead(): boolean;
7
7
  set lines(value: string[]);
8
+ private static _ScanCode;
8
9
  }
@@ -11,11 +11,17 @@ export class ShaderCodeCursor {
11
11
  }
12
12
  set lines(value) {
13
13
  this._lines.length = 0;
14
+ let inBlockComment = false;
14
15
  for (const line of value) {
15
16
  // Skip empty lines
16
17
  if (!line || line === "\r") {
17
18
  continue;
18
19
  }
20
+ // Block comments can span lines, so track them across every line
21
+ const startsInBlockComment = inBlockComment;
22
+ const lineScan = { parenthesisDepth: 0, inBlockComment: startsInBlockComment, inLineComment: false };
23
+ ShaderCodeCursor._ScanCode(lineScan, line);
24
+ inBlockComment = lineScan.inBlockComment;
19
25
  // Prevent removing line break in macros.
20
26
  if (line[0] === "#") {
21
27
  this._lines.push(line);
@@ -46,13 +52,18 @@ export class ShaderCodeCursor {
46
52
  else {
47
53
  // Semicolon in the middle of the line
48
54
  const split = line.split(";");
55
+ // Parentheses are only counted in this line, so a kept semicolon always goes back right after the fragment it followed in the source.
56
+ const scan = { parenthesisDepth: 0, inBlockComment: startsInBlockComment, inLineComment: false };
49
57
  for (let index = 0; index < split.length; index++) {
50
58
  let subLine = split[index];
51
- if (!subLine) {
52
- continue;
53
- }
59
+ ShaderCodeCursor._ScanCode(scan, subLine);
54
60
  subLine = subLine.trim();
55
61
  if (!subLine) {
62
+ // An empty statement inside parentheses belongs to a for loop header, as in "for (;;)":
63
+ // keep its semicolon on the previous fragment of this line, or the header loses one.
64
+ if (scan.parenthesisDepth > 0 && !scan.inLineComment && index !== split.length - 1) {
65
+ this._lines[this._lines.length - 1] += ";";
66
+ }
56
67
  continue;
57
68
  }
58
69
  this._lines.push(subLine + (index !== split.length - 1 ? ";" : ""));
@@ -60,5 +71,31 @@ export class ShaderCodeCursor {
60
71
  }
61
72
  }
62
73
  }
74
+ // Updates the parenthesis depth with a fragment of a line, skipping comments.
75
+ static _ScanCode(scan, code) {
76
+ for (let i = 0; i < code.length && !scan.inLineComment; i++) {
77
+ const char = code[i];
78
+ if (scan.inBlockComment) {
79
+ if (char === "*" && code[i + 1] === "/") {
80
+ scan.inBlockComment = false;
81
+ i++;
82
+ }
83
+ }
84
+ else if (char === "/" && code[i + 1] === "*") {
85
+ scan.inBlockComment = true;
86
+ i++;
87
+ }
88
+ else if (char === "/" && code[i + 1] === "/") {
89
+ scan.inLineComment = true;
90
+ }
91
+ else if (char === "(") {
92
+ scan.parenthesisDepth++;
93
+ }
94
+ else if (char === ")") {
95
+ // A ")" closing a parenthesis opened on an earlier line ends that statement: start again from 0
96
+ scan.parenthesisDepth = Math.max(0, scan.parenthesisDepth - 1);
97
+ }
98
+ }
99
+ }
63
100
  }
64
101
  //# sourceMappingURL=shaderCodeCursor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shaderCodeCursor.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Processors/shaderCodeCursor.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAM,OAAO,gBAAgB;IAA7B;QACY,WAAM,GAAa,EAAE,CAAC;IAwElC,CAAC;IArEG,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,KAAK,CAAC,KAAe;QACrB,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,mBAAmB;YACnB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACzB,SAAS;YACb,CAAC;YAED,yCAAyC;YACzC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,SAAS;YACb,CAAC;YAED,oCAAoC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAEhC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,SAAS;YACb,CAAC;YAED,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,SAAS;YACb,CAAC;YAED,kCAAkC;YAClC,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEhD,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxB,2BAA2B;gBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,cAAc,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnD,0CAA0C;gBAC1C,wFAAwF;gBACxF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAClC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,sCAAsC;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAE9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;oBAChD,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;oBAE3B,IAAI,CAAC,OAAO,EAAE,CAAC;wBACX,SAAS;oBACb,CAAC;oBAED,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;oBAEzB,IAAI,CAAC,OAAO,EAAE,CAAC;wBACX,SAAS;oBACb,CAAC;oBAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxE,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;CACJ","sourcesContent":["/** @internal */\r\nexport class ShaderCodeCursor {\r\n private _lines: string[] = [];\r\n lineIndex: number;\r\n\r\n get currentLine(): string {\r\n return this._lines[this.lineIndex];\r\n }\r\n\r\n get canRead(): boolean {\r\n return this.lineIndex < this._lines.length - 1;\r\n }\r\n\r\n set lines(value: string[]) {\r\n this._lines.length = 0;\r\n\r\n for (const line of value) {\r\n // Skip empty lines\r\n if (!line || line === \"\\r\") {\r\n continue;\r\n }\r\n\r\n // Prevent removing line break in macros.\r\n if (line[0] === \"#\") {\r\n this._lines.push(line);\r\n continue;\r\n }\r\n\r\n // Do not split single line comments\r\n const trimmedLine = line.trim();\r\n\r\n if (!trimmedLine) {\r\n continue;\r\n }\r\n\r\n if (trimmedLine.startsWith(\"//\")) {\r\n this._lines.push(line);\r\n continue;\r\n }\r\n\r\n // Work with semicolon in the line\r\n const semicolonIndex = trimmedLine.indexOf(\";\");\r\n\r\n if (semicolonIndex === -1) {\r\n // No semicolon in the line\r\n this._lines.push(trimmedLine);\r\n } else if (semicolonIndex === trimmedLine.length - 1) {\r\n // Single semicolon at the end of the line\r\n // If trimmedLine == \";\", we must not push, to be backward compatible with the old code!\r\n if (trimmedLine.length > 1) {\r\n this._lines.push(trimmedLine);\r\n }\r\n } else {\r\n // Semicolon in the middle of the line\r\n const split = line.split(\";\");\r\n\r\n for (let index = 0; index < split.length; index++) {\r\n let subLine = split[index];\r\n\r\n if (!subLine) {\r\n continue;\r\n }\r\n\r\n subLine = subLine.trim();\r\n\r\n if (!subLine) {\r\n continue;\r\n }\r\n\r\n this._lines.push(subLine + (index !== split.length - 1 ? \";\" : \"\"));\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"shaderCodeCursor.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Processors/shaderCodeCursor.ts"],"names":[],"mappings":"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","sourcesContent":["interface IShaderCodeScan {\r\n parenthesisDepth: number;\r\n inBlockComment: boolean;\r\n inLineComment: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class ShaderCodeCursor {\r\n private _lines: string[] = [];\r\n lineIndex: number;\r\n\r\n get currentLine(): string {\r\n return this._lines[this.lineIndex];\r\n }\r\n\r\n get canRead(): boolean {\r\n return this.lineIndex < this._lines.length - 1;\r\n }\r\n\r\n set lines(value: string[]) {\r\n this._lines.length = 0;\r\n let inBlockComment = false;\r\n\r\n for (const line of value) {\r\n // Skip empty lines\r\n if (!line || line === \"\\r\") {\r\n continue;\r\n }\r\n\r\n // Block comments can span lines, so track them across every line\r\n const startsInBlockComment = inBlockComment;\r\n const lineScan: IShaderCodeScan = { parenthesisDepth: 0, inBlockComment: startsInBlockComment, inLineComment: false };\r\n ShaderCodeCursor._ScanCode(lineScan, line);\r\n inBlockComment = lineScan.inBlockComment;\r\n\r\n // Prevent removing line break in macros.\r\n if (line[0] === \"#\") {\r\n this._lines.push(line);\r\n continue;\r\n }\r\n\r\n // Do not split single line comments\r\n const trimmedLine = line.trim();\r\n\r\n if (!trimmedLine) {\r\n continue;\r\n }\r\n\r\n if (trimmedLine.startsWith(\"//\")) {\r\n this._lines.push(line);\r\n continue;\r\n }\r\n\r\n // Work with semicolon in the line\r\n const semicolonIndex = trimmedLine.indexOf(\";\");\r\n\r\n if (semicolonIndex === -1) {\r\n // No semicolon in the line\r\n this._lines.push(trimmedLine);\r\n } else if (semicolonIndex === trimmedLine.length - 1) {\r\n // Single semicolon at the end of the line\r\n // If trimmedLine == \";\", we must not push, to be backward compatible with the old code!\r\n if (trimmedLine.length > 1) {\r\n this._lines.push(trimmedLine);\r\n }\r\n } else {\r\n // Semicolon in the middle of the line\r\n const split = line.split(\";\");\r\n // Parentheses are only counted in this line, so a kept semicolon always goes back right after the fragment it followed in the source.\r\n const scan = { parenthesisDepth: 0, inBlockComment: startsInBlockComment, inLineComment: false };\r\n\r\n for (let index = 0; index < split.length; index++) {\r\n let subLine = split[index];\r\n ShaderCodeCursor._ScanCode(scan, subLine);\r\n\r\n subLine = subLine.trim();\r\n\r\n if (!subLine) {\r\n // An empty statement inside parentheses belongs to a for loop header, as in \"for (;;)\":\r\n // keep its semicolon on the previous fragment of this line, or the header loses one.\r\n if (scan.parenthesisDepth > 0 && !scan.inLineComment && index !== split.length - 1) {\r\n this._lines[this._lines.length - 1] += \";\";\r\n }\r\n continue;\r\n }\r\n\r\n this._lines.push(subLine + (index !== split.length - 1 ? \";\" : \"\"));\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Updates the parenthesis depth with a fragment of a line, skipping comments.\r\n private static _ScanCode(scan: IShaderCodeScan, code: string): void {\r\n for (let i = 0; i < code.length && !scan.inLineComment; i++) {\r\n const char = code[i];\r\n if (scan.inBlockComment) {\r\n if (char === \"*\" && code[i + 1] === \"/\") {\r\n scan.inBlockComment = false;\r\n i++;\r\n }\r\n } else if (char === \"/\" && code[i + 1] === \"*\") {\r\n scan.inBlockComment = true;\r\n i++;\r\n } else if (char === \"/\" && code[i + 1] === \"/\") {\r\n scan.inLineComment = true;\r\n } else if (char === \"(\") {\r\n scan.parenthesisDepth++;\r\n } else if (char === \")\") {\r\n // A \")\" closing a parenthesis opened on an earlier line ends that statement: start again from 0\r\n scan.parenthesisDepth = Math.max(0, scan.parenthesisDepth - 1);\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -34,6 +34,7 @@ export function RegisterEnginesWebGPUExtensionsEngineRenderTarget() {
34
34
  fullOptions.label = options.label;
35
35
  fullOptions.format = options.format;
36
36
  fullOptions.type = options.type;
37
+ fullOptions.useSRGBBuffer = options.useSRGBBuffer;
37
38
  }
38
39
  else {
39
40
  fullOptions.generateMipMaps = options;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.renderTarget.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.renderTarget.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { InternalTextureSource, InternalTexture } from \"../../../Materials/Textures/internalTexture\";\r\nimport { type RenderTargetCreationOptions, type DepthTextureCreationOptions, type TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { Constants } from \"../../constants\";\r\nimport { type RenderTargetWrapper } from \"../../renderTargetWrapper\";\r\nimport { WebGPURenderTargetWrapper } from \"../webgpuRenderTargetWrapper\";\r\nimport { GetTypeForDepthTexture, HasStencilAspect } from \"core/Materials/Textures/textureHelper.functions\";\r\nimport { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\r\nimport { type WebGPUHardwareTexture } from \"../webgpuHardwareTexture\";\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for enginesWebGPUExtensionsEngineRenderTarget.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterEnginesWebGPUExtensionsEngineRenderTarget(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n ThinWebGPUEngine.prototype._createHardwareRenderTargetWrapper = function (isMulti: boolean, isCube: boolean, size: TextureSize): WebGPURenderTargetWrapper {\r\n const rtWrapper = new WebGPURenderTargetWrapper(isMulti, isCube, size, this);\r\n this._renderTargetWrapperCache.push(rtWrapper);\r\n return rtWrapper;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.createRenderTargetTexture = function (size: TextureSize, options: boolean | RenderTargetCreationOptions): WebGPURenderTargetWrapper {\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, false, size) as WebGPURenderTargetWrapper;\r\n\r\n const fullOptions: RenderTargetCreationOptions = {};\r\n\r\n if (options !== undefined && typeof options === \"object\") {\r\n fullOptions.generateMipMaps = options.generateMipMaps;\r\n fullOptions.generateDepthBuffer = options.generateDepthBuffer === undefined ? true : options.generateDepthBuffer;\r\n fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && options.generateStencilBuffer;\r\n fullOptions.samplingMode = options.samplingMode === undefined ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : options.samplingMode;\r\n fullOptions.creationFlags = options.creationFlags ?? 0;\r\n fullOptions.noColorAttachment = !!options.noColorAttachment;\r\n fullOptions.colorAttachment = options.colorAttachment;\r\n fullOptions.samples = options.samples;\r\n fullOptions.label = options.label;\r\n fullOptions.format = options.format;\r\n fullOptions.type = options.type;\r\n } else {\r\n fullOptions.generateMipMaps = options;\r\n fullOptions.generateDepthBuffer = true;\r\n fullOptions.generateStencilBuffer = false;\r\n fullOptions.samplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE;\r\n fullOptions.creationFlags = 0;\r\n fullOptions.noColorAttachment = false;\r\n }\r\n\r\n const texture =\r\n fullOptions.colorAttachment || (fullOptions.noColorAttachment ? null : this._createInternalTexture(size, fullOptions, true, InternalTextureSource.RenderTarget));\r\n\r\n rtWrapper.label = fullOptions.label ?? \"RenderTargetWrapper\";\r\n rtWrapper._samples = fullOptions.colorAttachment?.samples ?? fullOptions.samples ?? 1;\r\n rtWrapper._generateDepthBuffer = fullOptions.generateDepthBuffer;\r\n rtWrapper._generateStencilBuffer = fullOptions.generateStencilBuffer ? true : false;\r\n\r\n rtWrapper.setTextures(texture);\r\n\r\n if (rtWrapper._generateDepthBuffer || rtWrapper._generateStencilBuffer) {\r\n rtWrapper.createDepthStencilTexture(\r\n 0,\r\n false, // force false as filtering is not supported for depth textures\r\n rtWrapper._generateStencilBuffer,\r\n rtWrapper.samples,\r\n fullOptions.generateStencilBuffer ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\r\n fullOptions.label ? fullOptions.label + \"-DepthStencil\" : undefined\r\n );\r\n }\r\n\r\n if (texture && !fullOptions.colorAttachment) {\r\n if (options !== undefined && typeof options === \"object\" && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = true;\r\n }\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, undefined, undefined, undefined, fullOptions.creationFlags);\r\n\r\n if (options !== undefined && typeof options === \"object\" && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = false;\r\n }\r\n }\r\n\r\n return rtWrapper;\r\n };\r\n\r\n ThinWebGPUEngine.prototype._createDepthStencilTexture = function (\r\n size: TextureSize,\r\n options: DepthTextureCreationOptions,\r\n wrapper: WebGPURenderTargetWrapper\r\n ): InternalTexture {\r\n const internalOptions = {\r\n bilinearFiltering: false,\r\n comparisonFunction: 0,\r\n generateStencil: false,\r\n samples: 1,\r\n depthTextureFormat: options.generateStencil ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\r\n ...options,\r\n };\r\n\r\n const hasStencil = HasStencilAspect(internalOptions.depthTextureFormat);\r\n\r\n wrapper._depthStencilTextureWithStencil = hasStencil;\r\n\r\n const internalTexture = new InternalTexture(this, hasStencil ? InternalTextureSource.DepthStencil : InternalTextureSource.Depth);\r\n\r\n internalTexture.label = options.label;\r\n\r\n internalTexture.format = internalOptions.depthTextureFormat;\r\n internalTexture.type = GetTypeForDepthTexture(internalTexture.format);\r\n\r\n this._setupDepthStencilTexture(internalTexture, size, internalOptions.bilinearFiltering, internalOptions.comparisonFunction, internalOptions.samples);\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(internalTexture);\r\n\r\n this._internalTexturesCache.push(internalTexture);\r\n\r\n return internalTexture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype._setupDepthStencilTexture = function (\r\n internalTexture: InternalTexture,\r\n size: TextureSize,\r\n bilinearFiltering: boolean,\r\n comparisonFunction: number,\r\n samples = 1\r\n ): void {\r\n const width = (<{ width: number; height: number; layers?: number }>size).width ?? <number>size;\r\n const height = (<{ width: number; height: number; layers?: number }>size).height ?? <number>size;\r\n const layers = (<{ width: number; height: number; depth?: number; layers?: number }>size).layers || 0;\r\n const depth = (<{ width: number; height: number; depth?: number; layers?: number }>size).depth || 0;\r\n\r\n internalTexture.baseWidth = width;\r\n internalTexture.baseHeight = height;\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n internalTexture.is2DArray = layers > 0;\r\n internalTexture.is3D = depth > 0;\r\n internalTexture.depth = layers || depth;\r\n internalTexture.isReady = true;\r\n internalTexture.samples = samples;\r\n internalTexture.generateMipMaps = false;\r\n internalTexture.samplingMode = bilinearFiltering ? Constants.TEXTURE_BILINEAR_SAMPLINGMODE : Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n internalTexture.type = Constants.TEXTURETYPE_FLOAT; // the right type will be set later\r\n internalTexture._comparisonFunction = comparisonFunction;\r\n internalTexture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n internalTexture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.updateRenderTargetTextureSampleCount = function (rtWrapper: Nullable<RenderTargetWrapper>, samples: number): number {\r\n if (!rtWrapper || !rtWrapper.texture || rtWrapper.samples === samples) {\r\n return samples;\r\n }\r\n\r\n samples = Math.min(samples, this.getCaps().maxMSAASamples);\r\n\r\n // Releases existing MSAA textures. New ones will be created on demand.\r\n const gpuTexture = rtWrapper.texture._hardwareTexture as Nullable<WebGPUHardwareTexture>;\r\n\r\n gpuTexture?.releaseMSAATextures();\r\n\r\n if (rtWrapper._depthStencilTexture) {\r\n (rtWrapper._depthStencilTexture._hardwareTexture as Nullable<WebGPUHardwareTexture>)?.releaseMSAATextures();\r\n rtWrapper._depthStencilTexture.samples = samples;\r\n }\r\n\r\n rtWrapper._samples = samples;\r\n rtWrapper.texture.samples = samples;\r\n\r\n return samples;\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"engine.renderTarget.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.renderTarget.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { InternalTextureSource, InternalTexture } from \"../../../Materials/Textures/internalTexture\";\r\nimport { type RenderTargetCreationOptions, type DepthTextureCreationOptions, type TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { Constants } from \"../../constants\";\r\nimport { type RenderTargetWrapper } from \"../../renderTargetWrapper\";\r\nimport { WebGPURenderTargetWrapper } from \"../webgpuRenderTargetWrapper\";\r\nimport { GetTypeForDepthTexture, HasStencilAspect } from \"core/Materials/Textures/textureHelper.functions\";\r\nimport { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\r\nimport { type WebGPUHardwareTexture } from \"../webgpuHardwareTexture\";\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for enginesWebGPUExtensionsEngineRenderTarget.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterEnginesWebGPUExtensionsEngineRenderTarget(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n ThinWebGPUEngine.prototype._createHardwareRenderTargetWrapper = function (isMulti: boolean, isCube: boolean, size: TextureSize): WebGPURenderTargetWrapper {\r\n const rtWrapper = new WebGPURenderTargetWrapper(isMulti, isCube, size, this);\r\n this._renderTargetWrapperCache.push(rtWrapper);\r\n return rtWrapper;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.createRenderTargetTexture = function (size: TextureSize, options: boolean | RenderTargetCreationOptions): WebGPURenderTargetWrapper {\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(false, false, size) as WebGPURenderTargetWrapper;\r\n\r\n const fullOptions: RenderTargetCreationOptions = {};\r\n\r\n if (options !== undefined && typeof options === \"object\") {\r\n fullOptions.generateMipMaps = options.generateMipMaps;\r\n fullOptions.generateDepthBuffer = options.generateDepthBuffer === undefined ? true : options.generateDepthBuffer;\r\n fullOptions.generateStencilBuffer = fullOptions.generateDepthBuffer && options.generateStencilBuffer;\r\n fullOptions.samplingMode = options.samplingMode === undefined ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : options.samplingMode;\r\n fullOptions.creationFlags = options.creationFlags ?? 0;\r\n fullOptions.noColorAttachment = !!options.noColorAttachment;\r\n fullOptions.colorAttachment = options.colorAttachment;\r\n fullOptions.samples = options.samples;\r\n fullOptions.label = options.label;\r\n fullOptions.format = options.format;\r\n fullOptions.type = options.type;\r\n fullOptions.useSRGBBuffer = options.useSRGBBuffer;\r\n } else {\r\n fullOptions.generateMipMaps = options;\r\n fullOptions.generateDepthBuffer = true;\r\n fullOptions.generateStencilBuffer = false;\r\n fullOptions.samplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE;\r\n fullOptions.creationFlags = 0;\r\n fullOptions.noColorAttachment = false;\r\n }\r\n\r\n const texture =\r\n fullOptions.colorAttachment || (fullOptions.noColorAttachment ? null : this._createInternalTexture(size, fullOptions, true, InternalTextureSource.RenderTarget));\r\n\r\n rtWrapper.label = fullOptions.label ?? \"RenderTargetWrapper\";\r\n rtWrapper._samples = fullOptions.colorAttachment?.samples ?? fullOptions.samples ?? 1;\r\n rtWrapper._generateDepthBuffer = fullOptions.generateDepthBuffer;\r\n rtWrapper._generateStencilBuffer = fullOptions.generateStencilBuffer ? true : false;\r\n\r\n rtWrapper.setTextures(texture);\r\n\r\n if (rtWrapper._generateDepthBuffer || rtWrapper._generateStencilBuffer) {\r\n rtWrapper.createDepthStencilTexture(\r\n 0,\r\n false, // force false as filtering is not supported for depth textures\r\n rtWrapper._generateStencilBuffer,\r\n rtWrapper.samples,\r\n fullOptions.generateStencilBuffer ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\r\n fullOptions.label ? fullOptions.label + \"-DepthStencil\" : undefined\r\n );\r\n }\r\n\r\n if (texture && !fullOptions.colorAttachment) {\r\n if (options !== undefined && typeof options === \"object\" && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = true;\r\n }\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, undefined, undefined, undefined, fullOptions.creationFlags);\r\n\r\n if (options !== undefined && typeof options === \"object\" && options.createMipMaps && !fullOptions.generateMipMaps) {\r\n texture.generateMipMaps = false;\r\n }\r\n }\r\n\r\n return rtWrapper;\r\n };\r\n\r\n ThinWebGPUEngine.prototype._createDepthStencilTexture = function (\r\n size: TextureSize,\r\n options: DepthTextureCreationOptions,\r\n wrapper: WebGPURenderTargetWrapper\r\n ): InternalTexture {\r\n const internalOptions = {\r\n bilinearFiltering: false,\r\n comparisonFunction: 0,\r\n generateStencil: false,\r\n samples: 1,\r\n depthTextureFormat: options.generateStencil ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\r\n ...options,\r\n };\r\n\r\n const hasStencil = HasStencilAspect(internalOptions.depthTextureFormat);\r\n\r\n wrapper._depthStencilTextureWithStencil = hasStencil;\r\n\r\n const internalTexture = new InternalTexture(this, hasStencil ? InternalTextureSource.DepthStencil : InternalTextureSource.Depth);\r\n\r\n internalTexture.label = options.label;\r\n\r\n internalTexture.format = internalOptions.depthTextureFormat;\r\n internalTexture.type = GetTypeForDepthTexture(internalTexture.format);\r\n\r\n this._setupDepthStencilTexture(internalTexture, size, internalOptions.bilinearFiltering, internalOptions.comparisonFunction, internalOptions.samples);\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(internalTexture);\r\n\r\n this._internalTexturesCache.push(internalTexture);\r\n\r\n return internalTexture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype._setupDepthStencilTexture = function (\r\n internalTexture: InternalTexture,\r\n size: TextureSize,\r\n bilinearFiltering: boolean,\r\n comparisonFunction: number,\r\n samples = 1\r\n ): void {\r\n const width = (<{ width: number; height: number; layers?: number }>size).width ?? <number>size;\r\n const height = (<{ width: number; height: number; layers?: number }>size).height ?? <number>size;\r\n const layers = (<{ width: number; height: number; depth?: number; layers?: number }>size).layers || 0;\r\n const depth = (<{ width: number; height: number; depth?: number; layers?: number }>size).depth || 0;\r\n\r\n internalTexture.baseWidth = width;\r\n internalTexture.baseHeight = height;\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n internalTexture.is2DArray = layers > 0;\r\n internalTexture.is3D = depth > 0;\r\n internalTexture.depth = layers || depth;\r\n internalTexture.isReady = true;\r\n internalTexture.samples = samples;\r\n internalTexture.generateMipMaps = false;\r\n internalTexture.samplingMode = bilinearFiltering ? Constants.TEXTURE_BILINEAR_SAMPLINGMODE : Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n internalTexture.type = Constants.TEXTURETYPE_FLOAT; // the right type will be set later\r\n internalTexture._comparisonFunction = comparisonFunction;\r\n internalTexture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n internalTexture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.updateRenderTargetTextureSampleCount = function (rtWrapper: Nullable<RenderTargetWrapper>, samples: number): number {\r\n if (!rtWrapper || !rtWrapper.texture || rtWrapper.samples === samples) {\r\n return samples;\r\n }\r\n\r\n samples = Math.min(samples, this.getCaps().maxMSAASamples);\r\n\r\n // Releases existing MSAA textures. New ones will be created on demand.\r\n const gpuTexture = rtWrapper.texture._hardwareTexture as Nullable<WebGPUHardwareTexture>;\r\n\r\n gpuTexture?.releaseMSAATextures();\r\n\r\n if (rtWrapper._depthStencilTexture) {\r\n (rtWrapper._depthStencilTexture._hardwareTexture as Nullable<WebGPUHardwareTexture>)?.releaseMSAATextures();\r\n rtWrapper._depthStencilTexture.samples = samples;\r\n }\r\n\r\n rtWrapper._samples = samples;\r\n rtWrapper.texture.samples = samples;\r\n\r\n return samples;\r\n };\r\n}\r\n"]}
@@ -134,6 +134,20 @@ export interface AbstractEngineOptions {
134
134
  * Otherwise, the default is to use a cheaper approximation.
135
135
  */
136
136
  useExactSrgbConversions?: boolean;
137
+ /**
138
+ * Defines whether the depth buffer should be reversed, going from far (0) to near (1) (default: false).
139
+ * This is the same as setting `engine.useReverseDepthBuffer = true` right after the engine is created, but it is
140
+ * applied during construction, so it is already in effect for the first frame.
141
+ *
142
+ * A reversed depth buffer gives more depth precision to distant objects and reduces z-fighting, especially when the
143
+ * camera covers a large depth range. It is recommended for WebGPU. With WebGL it brings little or no gain, because the
144
+ * [-1, 1] clip space depth range loses the extra precision.
145
+ * For the best precision, pair it with a floating-point depth buffer (on WebGPU, creating the engine with `stencil: false`
146
+ * makes the main depth buffer `depth32float` instead of `depth24plus-stencil8`).
147
+ *
148
+ * Custom shaders that write or read depth values must account for the reversed range (see the `USE_REVERSE_DEPTHBUFFER` define).
149
+ */
150
+ useReverseDepthBuffer?: boolean;
137
151
  /**
138
152
  * Defines the tab index to set on the rendering canvas (default: 1).
139
153
  * Any value >= 0 makes the canvas focusable so it can capture keyboard events and places it in the
@@ -453,7 +467,7 @@ export declare abstract class AbstractEngine {
453
467
  private _rebuildEffects;
454
468
  protected _rebuildGraphicsResources(): void;
455
469
  protected _flagContextRestored(): void;
456
- protected _restoreEngineAfterContextLost(initEngine: () => void): void;
470
+ protected _restoreEngineAfterContextLost(initEngine: () => void | Promise<void>): void;
457
471
  /** @internal */
458
472
  protected _isDisposed: boolean;
459
473
  /** Gets a boolean indicating if the engine was disposed */
@@ -243,14 +243,21 @@ export class AbstractEngine {
243
243
  }
244
244
  _restoreEngineAfterContextLost(initEngine) {
245
245
  // Adding a timeout to avoid race condition at browser level
246
- setTimeout(() => {
246
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
247
+ setTimeout(async () => {
247
248
  this._clearEmptyResources();
248
249
  const depthTest = this._depthCullingState.depthTest; // backup those values because the call to initEngine / wipeCaches will reset them
249
250
  const depthFunc = this._depthCullingState.depthFunc;
250
251
  const depthMask = this._depthCullingState.depthMask;
251
252
  const stencilTest = this._stencilState.stencilTest;
252
253
  // Rebuild context
253
- initEngine();
254
+ try {
255
+ await initEngine();
256
+ }
257
+ catch (error) {
258
+ Logger.Error(`${this.name}: context restoration failed: ${String(error)}`);
259
+ return;
260
+ }
254
261
  this._rebuildGraphicsResources();
255
262
  this._depthCullingState.depthTest = depthTest;
256
263
  this._depthCullingState.depthFunc = depthFunc;
@@ -853,13 +860,13 @@ export class AbstractEngine {
853
860
  */
854
861
  // Not mixed with Version for tooling purpose.
855
862
  static get NpmPackage() {
856
- return "babylonjs@9.28.0";
863
+ return "babylonjs@9.32.0";
857
864
  }
858
865
  /**
859
866
  * Returns the current version of the framework
860
867
  */
861
868
  static get Version() {
862
- return "9.28.0";
869
+ return "9.32.0";
863
870
  }
864
871
  /**
865
872
  * Gets the HTML canvas attached with the current webGL context
@@ -1194,6 +1201,7 @@ export class AbstractEngine {
1194
1201
  this._doNotHandleContextLost = !!options.doNotHandleContextLost;
1195
1202
  this._isStencilEnable = options.stencil ? true : false;
1196
1203
  this.useExactSrgbConversions = options.useExactSrgbConversions ?? false;
1204
+ this.useReverseDepthBuffer = options.useReverseDepthBuffer ?? false;
1197
1205
  this.canvasTabIndex = options.canvasTabIndex ?? this.canvasTabIndex;
1198
1206
  const devicePixelRatio = IsWindowObjectExist() ? window.devicePixelRatio || 1.0 : 1.0;
1199
1207
  const limitDeviceRatio = options.limitDeviceRatio || devicePixelRatio;