@onerjs/core 8.56.3 → 9.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 (484) hide show
  1. package/Animations/animatable.core.js +36 -0
  2. package/Animations/animatable.core.js.map +1 -1
  3. package/Animations/animationGroup.pure.d.ts +61 -1
  4. package/Animations/animationGroup.pure.js +191 -2
  5. package/Animations/animationGroup.pure.js.map +1 -1
  6. package/Animations/index.d.ts +1 -0
  7. package/Animations/index.js +1 -0
  8. package/Animations/index.js.map +1 -1
  9. package/Animations/pure.d.ts +1 -0
  10. package/Animations/pure.js +1 -0
  11. package/Animations/pure.js.map +1 -1
  12. package/Animations/rootMotion.d.ts +560 -0
  13. package/Animations/rootMotion.js +1709 -0
  14. package/Animations/rootMotion.js.map +1 -0
  15. package/Animations/runtimeAnimation.d.ts +57 -0
  16. package/Animations/runtimeAnimation.js +127 -3
  17. package/Animations/runtimeAnimation.js.map +1 -1
  18. package/Cameras/arcRotateCamera.pure.d.ts +2 -0
  19. package/Cameras/arcRotateCamera.pure.js +2 -0
  20. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  21. package/Cameras/camera.pure.js +4 -0
  22. package/Cameras/camera.pure.js.map +1 -1
  23. package/Cameras/targetCamera.pure.d.ts +2 -0
  24. package/Cameras/targetCamera.pure.js +7 -1
  25. package/Cameras/targetCamera.pure.js.map +1 -1
  26. package/Collisions/gpuPicker.js +5 -5
  27. package/Collisions/gpuPicker.js.map +1 -1
  28. package/Engines/AbstractEngine/abstractEngine.query.pure.js +4 -2
  29. package/Engines/AbstractEngine/abstractEngine.query.pure.js.map +1 -1
  30. package/Engines/AbstractEngine/abstractEngine.query.types.d.ts +11 -2
  31. package/Engines/AbstractEngine/abstractEngine.query.types.js.map +1 -1
  32. package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js +1 -0
  33. package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js.map +1 -1
  34. package/Engines/Extensions/engine.multiRender.pure.js +63 -0
  35. package/Engines/Extensions/engine.multiRender.pure.js.map +1 -1
  36. package/Engines/Extensions/engine.multiRender.types.d.ts +13 -0
  37. package/Engines/Extensions/engine.multiRender.types.js.map +1 -1
  38. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +2 -2
  39. package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
  40. package/Engines/Extensions/engine.prefilteredCubeTexture.types.d.ts +2 -1
  41. package/Engines/Extensions/engine.prefilteredCubeTexture.types.js.map +1 -1
  42. package/Engines/Extensions/index.d.ts +1 -0
  43. package/Engines/Extensions/index.js +1 -0
  44. package/Engines/Extensions/index.js.map +1 -1
  45. package/Engines/Extensions/pure.d.ts +1 -1
  46. package/Engines/Extensions/pure.js +1 -1
  47. package/Engines/Extensions/pure.js.map +1 -1
  48. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +88 -39
  49. package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
  50. package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.d.ts +20 -2
  51. package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.js.map +1 -1
  52. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +4 -0
  53. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
  54. package/Engines/WebGPU/Extensions/engine.multiRender.types.d.ts +13 -0
  55. package/Engines/WebGPU/Extensions/engine.multiRender.types.js.map +1 -1
  56. package/Engines/WebGPU/Extensions/engine.query.pure.js +11 -3
  57. package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
  58. package/Engines/WebGPU/Extensions/index.d.ts +1 -0
  59. package/Engines/WebGPU/Extensions/index.js +1 -0
  60. package/Engines/WebGPU/Extensions/index.js.map +1 -1
  61. package/Engines/WebGPU/Extensions/pure.d.ts +1 -1
  62. package/Engines/WebGPU/Extensions/pure.js +1 -1
  63. package/Engines/WebGPU/Extensions/pure.js.map +1 -1
  64. package/Engines/WebGPU/webgpuBundleList.d.ts +2 -0
  65. package/Engines/WebGPU/webgpuBundleList.js +4 -0
  66. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  67. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -2
  68. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  69. package/Engines/WebGPU/webgpuHardwareTexture.js +3 -1
  70. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  71. package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
  72. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  73. package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +4 -0
  74. package/Engines/WebGPU/webgpuSnapshotRendering.js +40 -7
  75. package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
  76. package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -1
  77. package/Engines/WebGPU/webgpuTextureHelper.js +2 -2
  78. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  79. package/Engines/WebGPU/webgpuTextureManager.d.ts +2 -0
  80. package/Engines/WebGPU/webgpuTextureManager.js +286 -13
  81. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  82. package/Engines/abstractEngine.pure.d.ts +2 -0
  83. package/Engines/abstractEngine.pure.js +7 -3
  84. package/Engines/abstractEngine.pure.js.map +1 -1
  85. package/Engines/constants.d.ts +4 -0
  86. package/Engines/constants.js +4 -0
  87. package/Engines/constants.js.map +1 -1
  88. package/Engines/thinEngine.pure.d.ts +14 -0
  89. package/Engines/thinEngine.pure.js +48 -12
  90. package/Engines/thinEngine.pure.js.map +1 -1
  91. package/Engines/thinNativeEngine.pure.d.ts +1 -0
  92. package/Engines/thinNativeEngine.pure.js +7 -1
  93. package/Engines/thinNativeEngine.pure.js.map +1 -1
  94. package/Engines/thinWebGPUEngine.d.ts +4 -0
  95. package/Engines/thinWebGPUEngine.js +10 -1
  96. package/Engines/thinWebGPUEngine.js.map +1 -1
  97. package/Engines/webgpuEngine.pure.d.ts +5 -2
  98. package/Engines/webgpuEngine.pure.js +48 -13
  99. package/Engines/webgpuEngine.pure.js.map +1 -1
  100. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +2 -2
  101. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
  102. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.d.ts +11 -2
  103. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +1 -1
  104. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
  105. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.d.ts +9 -1
  106. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js +6 -8
  107. package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js.map +1 -1
  108. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.d.ts +2 -0
  109. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js +5 -1
  110. package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js.map +1 -1
  111. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.d.ts +2 -0
  112. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js +5 -1
  113. package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js.map +1 -1
  114. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +9 -0
  115. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +34 -9
  116. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
  117. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +2 -0
  118. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +4 -0
  119. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
  120. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +2 -0
  121. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +4 -0
  122. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
  123. package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js +19 -7
  124. package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js.map +1 -1
  125. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +20 -2
  126. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +53 -10
  127. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
  128. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.d.ts +16 -1
  129. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +64 -14
  130. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
  131. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js +64 -16
  132. package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js.map +1 -1
  133. package/FlowGraph/flowGraph.d.ts +4 -0
  134. package/FlowGraph/flowGraph.js +38 -7
  135. package/FlowGraph/flowGraph.js.map +1 -1
  136. package/FlowGraph/flowGraphBlock.js +3 -0
  137. package/FlowGraph/flowGraphBlock.js.map +1 -1
  138. package/FlowGraph/flowGraphConnection.d.ts +7 -0
  139. package/FlowGraph/flowGraphConnection.js +7 -0
  140. package/FlowGraph/flowGraphConnection.js.map +1 -1
  141. package/FlowGraph/flowGraphContext.d.ts +2 -1
  142. package/FlowGraph/flowGraphContext.js +4 -3
  143. package/FlowGraph/flowGraphContext.js.map +1 -1
  144. package/FlowGraph/flowGraphCoordinator.d.ts +15 -1
  145. package/FlowGraph/flowGraphCoordinator.js +47 -16
  146. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  147. package/FlowGraph/flowGraphEventBlock.d.ts +5 -0
  148. package/FlowGraph/flowGraphEventBlock.js +7 -0
  149. package/FlowGraph/flowGraphEventBlock.js.map +1 -1
  150. package/FlowGraph/flowGraphHostResolver.d.ts +2 -1
  151. package/FlowGraph/flowGraphHostResolver.js.map +1 -1
  152. package/FlowGraph/flowGraphParser.js +60 -2
  153. package/FlowGraph/flowGraphParser.js.map +1 -1
  154. package/FlowGraph/serialization.d.ts +2 -0
  155. package/FlowGraph/serialization.js +10 -22
  156. package/FlowGraph/serialization.js.map +1 -1
  157. package/FlowGraph/typeDefinitions.d.ts +8 -0
  158. package/FlowGraph/typeDefinitions.js.map +1 -1
  159. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.d.ts +5 -0
  160. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js +8 -0
  161. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js.map +1 -0
  162. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.d.ts +87 -0
  163. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js +295 -0
  164. package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js.map +1 -0
  165. package/FrameGraph/Node/Blocks/PostProcesses/pure.d.ts +1 -0
  166. package/FrameGraph/Node/Blocks/PostProcesses/pure.js +1 -0
  167. package/FrameGraph/Node/Blocks/PostProcesses/pure.js.map +1 -1
  168. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +4 -4
  169. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  170. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.d.ts +5 -1
  171. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +13 -1
  172. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
  173. package/FrameGraph/Node/Blocks/allBlocks.pure.js +2 -0
  174. package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
  175. package/FrameGraph/Node/Blocks/index.d.ts +1 -0
  176. package/FrameGraph/Node/Blocks/index.js +1 -0
  177. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  178. package/FrameGraph/Node/Blocks/inputBlock.pure.js +20 -1
  179. package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
  180. package/FrameGraph/Node/Blocks/pure.d.ts +1 -0
  181. package/FrameGraph/Node/Blocks/pure.js +1 -0
  182. package/FrameGraph/Node/Blocks/pure.js.map +1 -1
  183. package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +4 -2
  184. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +4 -2
  185. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
  186. package/FrameGraph/Node/nodeRenderGraph.js +1 -1
  187. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  188. package/FrameGraph/Tasks/Layers/selectionOutlineTask.js +1 -0
  189. package/FrameGraph/Tasks/Layers/selectionOutlineTask.js.map +1 -1
  190. package/FrameGraph/Tasks/Misc/cullObjectsTask.js +5 -1
  191. package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
  192. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +1 -0
  193. package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
  194. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.d.ts +69 -0
  195. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js +223 -0
  196. package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js.map +1 -0
  197. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +25 -3
  198. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +69 -33
  199. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  200. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -1
  201. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  202. package/FrameGraph/frameGraphObjectList.d.ts +6 -1
  203. package/FrameGraph/frameGraphObjectList.js.map +1 -1
  204. package/FrameGraph/frameGraphRenderContext.d.ts +3 -1
  205. package/FrameGraph/frameGraphRenderContext.js +5 -5
  206. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  207. package/FrameGraph/index.d.ts +1 -0
  208. package/FrameGraph/index.js +1 -0
  209. package/FrameGraph/index.js.map +1 -1
  210. package/FrameGraph/pure.d.ts +1 -0
  211. package/FrameGraph/pure.js +1 -0
  212. package/FrameGraph/pure.js.map +1 -1
  213. package/Inputs/scene.inputManager.d.ts +4 -0
  214. package/Inputs/scene.inputManager.js +50 -8
  215. package/Inputs/scene.inputManager.js.map +1 -1
  216. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +5 -5
  217. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
  218. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +5 -5
  219. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  220. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +26 -1
  221. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +151 -47
  222. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  223. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +5 -5
  224. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
  225. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +11 -1
  226. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
  227. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +17 -2
  228. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
  229. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +2 -2
  230. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
  231. package/Materials/Node/nodeMaterial.pure.d.ts +4 -0
  232. package/Materials/Node/nodeMaterial.pure.js +4 -0
  233. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  234. package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
  235. package/Materials/Node/nodeMaterialBuildState.js +25 -3
  236. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  237. package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -0
  238. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -0
  239. package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +13 -14
  240. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +6 -6
  241. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  242. package/Materials/Textures/baseTexture.pure.js +3 -0
  243. package/Materials/Textures/baseTexture.pure.js.map +1 -1
  244. package/Materials/Textures/cubeTexture.pure.js +1 -1
  245. package/Materials/Textures/cubeTexture.pure.js.map +1 -1
  246. package/Materials/Textures/internalTexture.d.ts +8 -1
  247. package/Materials/Textures/internalTexture.js +9 -2
  248. package/Materials/Textures/internalTexture.js.map +1 -1
  249. package/Materials/Textures/rawTexture2DArray.functions.d.ts +3 -3
  250. package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
  251. package/Materials/Textures/rawTexture3D.d.ts +1 -1
  252. package/Materials/Textures/rawTexture3D.js +1 -1
  253. package/Materials/Textures/rawTexture3D.js.map +1 -1
  254. package/Materials/Textures/textureHelper.functions.d.ts +14 -0
  255. package/Materials/Textures/textureHelper.functions.js +24 -0
  256. package/Materials/Textures/textureHelper.functions.js.map +1 -1
  257. package/Materials/ditheredTileFadeMaterialPlugin.d.ts +210 -0
  258. package/Materials/ditheredTileFadeMaterialPlugin.js +509 -0
  259. package/Materials/ditheredTileFadeMaterialPlugin.js.map +1 -0
  260. package/Materials/index.d.ts +1 -0
  261. package/Materials/index.js +1 -0
  262. package/Materials/index.js.map +1 -1
  263. package/Materials/materialHelper.geometryrendering.d.ts +46 -1
  264. package/Materials/materialHelper.geometryrendering.js +105 -8
  265. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  266. package/Materials/prepass.defines.d.ts +2 -0
  267. package/Materials/prepass.defines.js +2 -0
  268. package/Materials/prepass.defines.js.map +1 -1
  269. package/Materials/pure.d.ts +1 -0
  270. package/Materials/pure.js +1 -0
  271. package/Materials/pure.js.map +1 -1
  272. package/Materials/standardMaterial.pure.d.ts +2 -0
  273. package/Materials/standardMaterial.pure.js +6 -3
  274. package/Materials/standardMaterial.pure.js.map +1 -1
  275. package/Meshes/Builders/polygonBuilder.pure.d.ts +4 -0
  276. package/Meshes/Builders/polygonBuilder.pure.js +4 -1
  277. package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
  278. package/Meshes/GaussianSplatting/gaussianSplatting.functions.d.ts +19 -0
  279. package/Meshes/GaussianSplatting/gaussianSplatting.functions.js +23 -0
  280. package/Meshes/GaussianSplatting/gaussianSplatting.functions.js.map +1 -0
  281. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +3 -14
  282. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +20 -24
  283. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  284. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -0
  285. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +11 -4
  286. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  287. package/Meshes/abstractMesh.pure.d.ts +18 -0
  288. package/Meshes/abstractMesh.pure.js +22 -0
  289. package/Meshes/abstractMesh.pure.js.map +1 -1
  290. package/Meshes/index.d.ts +1 -0
  291. package/Meshes/index.js +1 -0
  292. package/Meshes/index.js.map +1 -1
  293. package/Meshes/instancedMesh.pure.d.ts +5 -0
  294. package/Meshes/instancedMesh.pure.js +12 -0
  295. package/Meshes/instancedMesh.pure.js.map +1 -1
  296. package/Meshes/mesh.pure.js +23 -8
  297. package/Meshes/mesh.pure.js.map +1 -1
  298. package/Meshes/meshBlendingTag.d.ts +47 -0
  299. package/Meshes/meshBlendingTag.js +64 -0
  300. package/Meshes/meshBlendingTag.js.map +1 -0
  301. package/Meshes/polygonMesh.js +2 -2
  302. package/Meshes/polygonMesh.js.map +1 -1
  303. package/Meshes/pure.d.ts +1 -0
  304. package/Meshes/pure.js +1 -0
  305. package/Meshes/pure.js.map +1 -1
  306. package/Misc/fileTools.pure.js +21 -0
  307. package/Misc/fileTools.pure.js.map +1 -1
  308. package/Misc/snapshotRenderingHelper.js +2 -2
  309. package/Misc/snapshotRenderingHelper.js.map +1 -1
  310. package/Misc/tools.pure.js +1 -1
  311. package/Misc/tools.pure.js.map +1 -1
  312. package/Particles/gpuParticleSystem.pure.d.ts +2 -0
  313. package/Particles/gpuParticleSystem.pure.js +89 -28
  314. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  315. package/Particles/thinParticleSystem.pure.d.ts +2 -0
  316. package/Particles/thinParticleSystem.pure.js +84 -19
  317. package/Particles/thinParticleSystem.pure.js.map +1 -1
  318. package/Particles/webgl2ParticleSystem.pure.d.ts +1 -0
  319. package/Particles/webgl2ParticleSystem.pure.js +12 -4
  320. package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
  321. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js +7 -0
  322. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
  323. package/PostProcesses/index.d.ts +2 -0
  324. package/PostProcesses/index.js +2 -0
  325. package/PostProcesses/index.js.map +1 -1
  326. package/PostProcesses/meshBlendingBlueNoise.d.ts +15 -0
  327. package/PostProcesses/meshBlendingBlueNoise.js +77 -0
  328. package/PostProcesses/meshBlendingBlueNoise.js.map +1 -0
  329. package/PostProcesses/meshBlendingPostProcess.d.ts +131 -0
  330. package/PostProcesses/meshBlendingPostProcess.js +315 -0
  331. package/PostProcesses/meshBlendingPostProcess.js.map +1 -0
  332. package/PostProcesses/pure.d.ts +2 -0
  333. package/PostProcesses/pure.js +2 -0
  334. package/PostProcesses/pure.js.map +1 -1
  335. package/PostProcesses/thinMeshBlendingPostProcess.d.ts +339 -0
  336. package/PostProcesses/thinMeshBlendingPostProcess.js +771 -0
  337. package/PostProcesses/thinMeshBlendingPostProcess.js.map +1 -0
  338. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +6 -6
  339. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  340. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +8 -8
  341. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  342. package/Rendering/boundingBoxRenderer.pure.js +2 -1
  343. package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
  344. package/Rendering/depthRenderer.pure.js +3 -4
  345. package/Rendering/depthRenderer.pure.js.map +1 -1
  346. package/Rendering/edgesRenderer.pure.d.ts +4 -2
  347. package/Rendering/edgesRenderer.pure.js +11 -2
  348. package/Rendering/edgesRenderer.pure.js.map +1 -1
  349. package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +10 -0
  350. package/Rendering/fluidRenderer/fluidRenderingObject.js +20 -0
  351. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  352. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +9 -3
  353. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +14 -9
  354. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  355. package/Rendering/geometryBufferRenderer.pure.d.ts +38 -4
  356. package/Rendering/geometryBufferRenderer.pure.js +126 -17
  357. package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
  358. package/Rendering/objectRenderer.d.ts +7 -1
  359. package/Rendering/objectRenderer.js +45 -7
  360. package/Rendering/objectRenderer.js.map +1 -1
  361. package/Rendering/outlineRenderer.pure.js +6 -2
  362. package/Rendering/outlineRenderer.pure.js.map +1 -1
  363. package/Rendering/renderingManager.d.ts +1 -1
  364. package/Rendering/renderingManager.js +5 -4
  365. package/Rendering/renderingManager.js.map +1 -1
  366. package/Shaders/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
  367. package/Shaders/ShadersInclude/defaultFragmentAlpha.js +34 -0
  368. package/Shaders/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
  369. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +5 -1
  370. package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
  371. package/Shaders/ShadersInclude/geometryRenderingFragment.d.ts +5 -0
  372. package/Shaders/ShadersInclude/geometryRenderingFragment.js +74 -0
  373. package/Shaders/ShadersInclude/geometryRenderingFragment.js.map +1 -0
  374. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +89 -0
  375. package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
  376. package/Shaders/ShadersInclude/openpbrBlockPrePass.js +24 -17
  377. package/Shaders/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
  378. package/Shaders/ShadersInclude/pbrBlockPrePass.js +27 -20
  379. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  380. package/Shaders/ShadersInclude/pbrDebug.js +6 -2
  381. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  382. package/Shaders/ShadersInclude/prePassDeclaration.js +95 -2
  383. package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
  384. package/Shaders/default.fragment.js +31 -40
  385. package/Shaders/default.fragment.js.map +1 -1
  386. package/Shaders/depthOfField.fragment.js +13 -9
  387. package/Shaders/depthOfField.fragment.js.map +1 -1
  388. package/Shaders/fluidRenderingParticleDepth.vertex.js +16 -1
  389. package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
  390. package/Shaders/fluidRenderingParticleThickness.vertex.js +16 -1
  391. package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
  392. package/Shaders/gaussianSplatting.fragment.js +63 -3
  393. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  394. package/Shaders/gaussianSplatting.vertex.js +80 -0
  395. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  396. package/Shaders/geometry.fragment.js +17 -11
  397. package/Shaders/geometry.fragment.js.map +1 -1
  398. package/Shaders/gpuRenderParticles.fragment.js +43 -1
  399. package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
  400. package/Shaders/gpuRenderParticles.vertex.js +96 -16
  401. package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
  402. package/Shaders/meshBlending.fragment.d.ts +5 -0
  403. package/Shaders/meshBlending.fragment.js +519 -0
  404. package/Shaders/meshBlending.fragment.js.map +1 -0
  405. package/Shaders/particles.fragment.js +43 -1
  406. package/Shaders/particles.fragment.js.map +1 -1
  407. package/Shaders/particles.vertex.js +84 -3
  408. package/Shaders/particles.vertex.js.map +1 -1
  409. package/Shaders/sprites.fragment.js +52 -2
  410. package/Shaders/sprites.fragment.js.map +1 -1
  411. package/Shaders/sprites.vertex.js +62 -1
  412. package/Shaders/sprites.vertex.js.map +1 -1
  413. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
  414. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js +33 -0
  415. package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
  416. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.d.ts +6 -0
  417. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js +76 -0
  418. package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js.map +1 -0
  419. package/ShadersWGSL/ShadersInclude/lightFragment.js +1 -1
  420. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  421. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.d.ts +5 -0
  422. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js +18 -0
  423. package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js.map +1 -0
  424. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.d.ts +1 -0
  425. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js +11 -25
  426. package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
  427. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +1 -0
  428. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +11 -25
  429. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  430. package/ShadersWGSL/ShadersInclude/pbrDebug.js +5 -1
  431. package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
  432. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +6 -1
  433. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
  434. package/ShadersWGSL/default.fragment.js +17 -48
  435. package/ShadersWGSL/default.fragment.js.map +1 -1
  436. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +15 -2
  437. package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
  438. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -2
  439. package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
  440. package/ShadersWGSL/gaussianSplatting.fragment.js +63 -2
  441. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  442. package/ShadersWGSL/gaussianSplatting.vertex.js +80 -0
  443. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  444. package/ShadersWGSL/geometry.fragment.js +37 -2
  445. package/ShadersWGSL/geometry.fragment.js.map +1 -1
  446. package/ShadersWGSL/gpuRenderParticles.fragment.js +47 -2
  447. package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -1
  448. package/ShadersWGSL/gpuRenderParticles.vertex.js +110 -7
  449. package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -1
  450. package/ShadersWGSL/meshBlending.fragment.d.ts +5 -0
  451. package/ShadersWGSL/meshBlending.fragment.js +576 -0
  452. package/ShadersWGSL/meshBlending.fragment.js.map +1 -0
  453. package/ShadersWGSL/openpbr.fragment.js +2 -1
  454. package/ShadersWGSL/openpbr.fragment.js.map +1 -1
  455. package/ShadersWGSL/particles.fragment.js +45 -1
  456. package/ShadersWGSL/particles.fragment.js.map +1 -1
  457. package/ShadersWGSL/particles.vertex.js +86 -4
  458. package/ShadersWGSL/particles.vertex.js.map +1 -1
  459. package/ShadersWGSL/pbr.fragment.js +2 -1
  460. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  461. package/ShadersWGSL/sprites.fragment.js +56 -2
  462. package/ShadersWGSL/sprites.fragment.js.map +1 -1
  463. package/ShadersWGSL/sprites.vertex.js +62 -1
  464. package/ShadersWGSL/sprites.vertex.js.map +1 -1
  465. package/Sprites/spriteManager.d.ts +13 -0
  466. package/Sprites/spriteManager.js +15 -0
  467. package/Sprites/spriteManager.js.map +1 -1
  468. package/Sprites/spriteRenderer.d.ts +24 -1
  469. package/Sprites/spriteRenderer.js +368 -50
  470. package/Sprites/spriteRenderer.js.map +1 -1
  471. package/Sprites/thinSprite.d.ts +4 -0
  472. package/Sprites/thinSprite.js +4 -0
  473. package/Sprites/thinSprite.js.map +1 -1
  474. package/States/alphaCullingState.d.ts +3 -1
  475. package/States/alphaCullingState.js +18 -3
  476. package/States/alphaCullingState.js.map +1 -1
  477. package/XR/webXRDefaultExperience.d.ts +5 -1
  478. package/XR/webXRDefaultExperience.js.map +1 -1
  479. package/XR/webXREnterExitUI.d.ts +2 -1
  480. package/XR/webXREnterExitUI.js.map +1 -1
  481. package/package.json +1 -1
  482. package/scene.pure.d.ts +23 -0
  483. package/scene.pure.js +35 -0
  484. package/scene.pure.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"engine.prefilteredCubeTexture.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/engine.prefilteredCubeTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { ThinEngine } from \"../../Engines/thinEngine.pure\";\r\nimport { InternalTextureSource, InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { Constants } from \"../constants\";\r\nimport { SphericalPolynomial } from \"core/Maths/sphericalPolynomial.pure\";\r\nimport { BaseTexture } from \"core/Materials/Textures/baseTexture.pure\";\r\nimport { type DDSInfo } from \"core/Misc/dds.pure\";\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for enginePrefilteredCubeTexture.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterEnginePrefilteredCubeTexture(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n ThinEngine.prototype.createPrefilteredCubeTexture = function (\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n lodScale: number,\r\n lodOffset: number,\r\n onLoad: Nullable<(internalTexture: Nullable<InternalTexture>) => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n format?: number,\r\n forcedExtension: any = null,\r\n createPolynomials: boolean = true\r\n ): InternalTexture {\r\n const callbackAsync = async (loadData: any) => {\r\n if (!loadData) {\r\n if (onLoad) {\r\n onLoad(null);\r\n }\r\n return;\r\n }\r\n\r\n const texture = loadData.texture as InternalTexture;\r\n if (!createPolynomials) {\r\n texture._sphericalPolynomial = texture._sphericalPolynomial ?? new SphericalPolynomial();\r\n } else if (loadData.info.sphericalPolynomial) {\r\n texture._sphericalPolynomial = loadData.info.sphericalPolynomial;\r\n }\r\n texture._source = InternalTextureSource.CubePrefiltered;\r\n\r\n if (this.getCaps().textureLOD) {\r\n // Do not add extra process if texture lod is supported.\r\n if (onLoad) {\r\n onLoad(texture);\r\n }\r\n return;\r\n }\r\n\r\n const mipSlices = 3;\r\n\r\n const gl = this._gl;\r\n const width = loadData.width;\r\n if (!width) {\r\n return;\r\n }\r\n\r\n const { DDSTools } = await import(\"core/Misc/dds.pure\");\r\n\r\n const textures: BaseTexture[] = [];\r\n for (let i = 0; i < mipSlices; i++) {\r\n //compute LOD from even spacing in smoothness (matching shader calculation)\r\n const smoothness = i / (mipSlices - 1);\r\n const roughness = 1 - smoothness;\r\n\r\n const minLODIndex = lodOffset; // roughness = 0\r\n const maxLODIndex = Math.log2(width) * lodScale + lodOffset; // roughness = 1\r\n\r\n const lodIndex = minLODIndex + (maxLODIndex - minLODIndex) * roughness;\r\n const mipmapIndex = Math.round(Math.min(Math.max(lodIndex, 0), maxLODIndex));\r\n\r\n const glTextureFromLod = new InternalTexture(this, InternalTextureSource.Temp);\r\n glTextureFromLod.type = texture.type;\r\n glTextureFromLod.format = texture.format;\r\n glTextureFromLod.width = Math.pow(2, Math.max(Math.log2(width) - mipmapIndex, 0));\r\n glTextureFromLod.height = glTextureFromLod.width;\r\n glTextureFromLod.isCube = true;\r\n glTextureFromLod._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n glTextureFromLod._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, glTextureFromLod, true);\r\n\r\n glTextureFromLod.samplingMode = Constants.TEXTURE_LINEAR_LINEAR;\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n\r\n if (loadData.isDDS) {\r\n const info: DDSInfo = loadData.info;\r\n const data: any = loadData.data;\r\n this._unpackFlipY(info.isCompressed);\r\n\r\n DDSTools.UploadDDSLevels(this, glTextureFromLod, data, info, true, 6, mipmapIndex);\r\n } else {\r\n Logger.Warn(\"DDS is the only prefiltered cube map supported so far.\");\r\n }\r\n\r\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\r\n\r\n // Wrap in a base texture for easy binding.\r\n const lodTexture = new BaseTexture(scene);\r\n lodTexture._isCube = true;\r\n lodTexture._texture = glTextureFromLod;\r\n\r\n glTextureFromLod.isReady = true;\r\n textures.push(lodTexture);\r\n }\r\n\r\n texture._lodTextureHigh = textures[2];\r\n texture._lodTextureMid = textures[1];\r\n texture._lodTextureLow = textures[0];\r\n\r\n if (onLoad) {\r\n onLoad(texture);\r\n }\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\r\n return this.createCubeTexture(rootUrl, scene, null, false, callbackAsync, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset);\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"engine.prefilteredCubeTexture.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/engine.prefilteredCubeTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { ThinEngine } from \"../../Engines/thinEngine.pure\";\r\nimport { InternalTextureSource, InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { Constants } from \"../constants\";\r\nimport { SphericalPolynomial } from \"core/Maths/sphericalPolynomial.pure\";\r\nimport { BaseTexture } from \"core/Materials/Textures/baseTexture.pure\";\r\nimport { type DDSInfo } from \"core/Misc/dds.pure\";\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for enginePrefilteredCubeTexture.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterEnginePrefilteredCubeTexture(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n ThinEngine.prototype.createPrefilteredCubeTexture = function (\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n lodScale: number,\r\n lodOffset: number,\r\n onLoad: Nullable<(internalTexture: Nullable<InternalTexture>) => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n format?: number,\r\n forcedExtension: any = null,\r\n createPolynomials: boolean = true,\r\n buffer: Nullable<ArrayBufferView> = null\r\n ): InternalTexture {\r\n const callbackAsync = async (loadData: any) => {\r\n if (!loadData) {\r\n if (onLoad) {\r\n onLoad(null);\r\n }\r\n return;\r\n }\r\n\r\n const texture = loadData.texture as InternalTexture;\r\n if (!createPolynomials) {\r\n texture._sphericalPolynomial = texture._sphericalPolynomial ?? new SphericalPolynomial();\r\n } else if (loadData.info.sphericalPolynomial) {\r\n texture._sphericalPolynomial = loadData.info.sphericalPolynomial;\r\n }\r\n texture._source = InternalTextureSource.CubePrefiltered;\r\n\r\n if (this.getCaps().textureLOD) {\r\n // Do not add extra process if texture lod is supported.\r\n if (onLoad) {\r\n onLoad(texture);\r\n }\r\n return;\r\n }\r\n\r\n const mipSlices = 3;\r\n\r\n const gl = this._gl;\r\n const width = loadData.width;\r\n if (!width) {\r\n return;\r\n }\r\n\r\n const { DDSTools } = await import(\"core/Misc/dds.pure\");\r\n\r\n const textures: BaseTexture[] = [];\r\n for (let i = 0; i < mipSlices; i++) {\r\n //compute LOD from even spacing in smoothness (matching shader calculation)\r\n const smoothness = i / (mipSlices - 1);\r\n const roughness = 1 - smoothness;\r\n\r\n const minLODIndex = lodOffset; // roughness = 0\r\n const maxLODIndex = Math.log2(width) * lodScale + lodOffset; // roughness = 1\r\n\r\n const lodIndex = minLODIndex + (maxLODIndex - minLODIndex) * roughness;\r\n const mipmapIndex = Math.round(Math.min(Math.max(lodIndex, 0), maxLODIndex));\r\n\r\n const glTextureFromLod = new InternalTexture(this, InternalTextureSource.Temp);\r\n glTextureFromLod.type = texture.type;\r\n glTextureFromLod.format = texture.format;\r\n glTextureFromLod.width = Math.pow(2, Math.max(Math.log2(width) - mipmapIndex, 0));\r\n glTextureFromLod.height = glTextureFromLod.width;\r\n glTextureFromLod.isCube = true;\r\n glTextureFromLod._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n glTextureFromLod._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, glTextureFromLod, true);\r\n\r\n glTextureFromLod.samplingMode = Constants.TEXTURE_LINEAR_LINEAR;\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n\r\n if (loadData.isDDS) {\r\n const info: DDSInfo = loadData.info;\r\n const data: any = loadData.data;\r\n this._unpackFlipY(info.isCompressed);\r\n\r\n DDSTools.UploadDDSLevels(this, glTextureFromLod, data, info, true, 6, mipmapIndex);\r\n } else {\r\n Logger.Warn(\"DDS is the only prefiltered cube map supported so far.\");\r\n }\r\n\r\n this._bindTextureDirectly(gl.TEXTURE_CUBE_MAP, null);\r\n\r\n // Wrap in a base texture for easy binding.\r\n const lodTexture = new BaseTexture(scene);\r\n lodTexture._isCube = true;\r\n lodTexture._texture = glTextureFromLod;\r\n\r\n glTextureFromLod.isReady = true;\r\n textures.push(lodTexture);\r\n }\r\n\r\n texture._lodTextureHigh = textures[2];\r\n texture._lodTextureMid = textures[1];\r\n texture._lodTextureLow = textures[0];\r\n\r\n if (onLoad) {\r\n onLoad(texture);\r\n }\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\r\n return this.createCubeTexture(\r\n rootUrl,\r\n scene,\r\n null,\r\n false,\r\n callbackAsync,\r\n onError,\r\n format,\r\n forcedExtension,\r\n createPolynomials,\r\n lodScale,\r\n lodOffset,\r\n null,\r\n undefined,\r\n false,\r\n buffer\r\n );\r\n };\r\n}\r\n"]}
@@ -14,8 +14,9 @@ declare module "../../Engines/abstractEngine.pure.js" {
14
14
  * @param format defines the format of the data
15
15
  * @param forcedExtension defines the extension to use to pick the right loader
16
16
  * @param createPolynomials defines wheter or not to create polynomails harmonics for the texture
17
+ * @param buffer defines the data buffer to load instead of loading the rootUrl
17
18
  * @returns the cube texture as an InternalTexture
18
19
  */
19
- createPrefilteredCubeTexture(rootUrl: string, scene: Nullable<Scene>, lodScale: number, lodOffset: number, onLoad?: Nullable<(internalTexture: Nullable<InternalTexture>) => void>, onError?: Nullable<(message?: string, exception?: any) => void>, format?: number, forcedExtension?: any, createPolynomials?: boolean): InternalTexture;
20
+ createPrefilteredCubeTexture(rootUrl: string, scene: Nullable<Scene>, lodScale: number, lodOffset: number, onLoad?: Nullable<(internalTexture: Nullable<InternalTexture>) => void>, onError?: Nullable<(message?: string, exception?: any) => void>, format?: number, forcedExtension?: any, createPolynomials?: boolean, buffer?: Nullable<ArrayBufferView>): InternalTexture;
20
21
  }
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engine.prefilteredCubeTexture.types.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/engine.prefilteredCubeTexture.types.ts"],"names":[],"mappings":"","sourcesContent":["import { type InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene\";\r\ndeclare module \"../../Engines/abstractEngine.pure\" {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n export interface AbstractEngine {\r\n /**\r\n * Create a cube texture from prefiltered data (ie. the mipmaps contain ready to use data for PBR reflection)\r\n * @param rootUrl defines the url where the file to load is located\r\n * @param scene defines the current scene\r\n * @param lodScale defines scale to apply to the mip map selection\r\n * @param lodOffset defines offset to apply to the mip map selection\r\n * @param onLoad defines an optional callback raised when the texture is loaded\r\n * @param onError defines an optional callback raised if there is an issue to load the texture\r\n * @param format defines the format of the data\r\n * @param forcedExtension defines the extension to use to pick the right loader\r\n * @param createPolynomials defines wheter or not to create polynomails harmonics for the texture\r\n * @returns the cube texture as an InternalTexture\r\n */\r\n createPrefilteredCubeTexture(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n lodScale: number,\r\n lodOffset: number,\r\n onLoad?: Nullable<(internalTexture: Nullable<InternalTexture>) => void>,\r\n onError?: Nullable<(message?: string, exception?: any) => void>,\r\n format?: number,\r\n forcedExtension?: any,\r\n createPolynomials?: boolean\r\n ): InternalTexture;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"engine.prefilteredCubeTexture.types.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/engine.prefilteredCubeTexture.types.ts"],"names":[],"mappings":"","sourcesContent":["import { type InternalTexture } from \"../../Materials/Textures/internalTexture\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene\";\r\ndeclare module \"../../Engines/abstractEngine.pure\" {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n export interface AbstractEngine {\r\n /**\r\n * Create a cube texture from prefiltered data (ie. the mipmaps contain ready to use data for PBR reflection)\r\n * @param rootUrl defines the url where the file to load is located\r\n * @param scene defines the current scene\r\n * @param lodScale defines scale to apply to the mip map selection\r\n * @param lodOffset defines offset to apply to the mip map selection\r\n * @param onLoad defines an optional callback raised when the texture is loaded\r\n * @param onError defines an optional callback raised if there is an issue to load the texture\r\n * @param format defines the format of the data\r\n * @param forcedExtension defines the extension to use to pick the right loader\r\n * @param createPolynomials defines wheter or not to create polynomails harmonics for the texture\r\n * @param buffer defines the data buffer to load instead of loading the rootUrl\r\n * @returns the cube texture as an InternalTexture\r\n */\r\n createPrefilteredCubeTexture(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n lodScale: number,\r\n lodOffset: number,\r\n onLoad?: Nullable<(internalTexture: Nullable<InternalTexture>) => void>,\r\n onError?: Nullable<(message?: string, exception?: any) => void>,\r\n format?: number,\r\n forcedExtension?: any,\r\n createPolynomials?: boolean,\r\n buffer?: Nullable<ArrayBufferView>\r\n ): InternalTexture;\r\n }\r\n}\r\n"]}
@@ -13,6 +13,7 @@ export * from "./engine.prefilteredCubeTexture.js";
13
13
  export * from "./engine.renderTarget.js";
14
14
  export * from "./engine.renderTargetCube.js";
15
15
  export * from "./engine.renderTargetTexture.js";
16
+ export * from "./engine.texture2DArrayImageSource.js";
16
17
  export * from "./engine.uniformBuffer.js";
17
18
  export * from "./engine.dynamicBuffer.js";
18
19
  export * from "./engine.readTexture.js";
@@ -14,6 +14,7 @@ export * from "./engine.prefilteredCubeTexture.js";
14
14
  export * from "./engine.renderTarget.js";
15
15
  export * from "./engine.renderTargetCube.js";
16
16
  export * from "./engine.renderTargetTexture.js";
17
+ export * from "./engine.texture2DArrayImageSource.js";
17
18
  export * from "./engine.uniformBuffer.js";
18
19
  export * from "./engine.dynamicBuffer.js";
19
20
  export * from "./engine.readTexture.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AAEvC,yDAAyD;AACzD,gDAAgD;AAChD,cAAc,0BAA0B,CAAC;AAEzC,OAAO,0BAA0B,CAAC","sourcesContent":["/* eslint-disable import/export */\r\nexport * from \"./engine.alphaToCoverage\";\r\nexport * from \"./engine.alpha\";\r\nexport * from \"./engine.debugging\";\r\nexport * from \"./engine.query\";\r\nexport * from \"./engine.transformFeedback\";\r\nexport * from \"./engine.multiview\";\r\nexport * from \"./engine.rawTexture\";\r\nexport * from \"./engine.dynamicTexture\";\r\nexport * from \"./engine.videoTexture\";\r\nexport * from \"./engine.multiRender\";\r\nexport * from \"./engine.cubeTexture\";\r\nexport * from \"./engine.prefilteredCubeTexture\";\r\nexport * from \"./engine.renderTarget\";\r\nexport * from \"./engine.renderTargetCube\";\r\nexport * from \"./engine.renderTargetTexture\";\r\nexport * from \"./engine.uniformBuffer\";\r\nexport * from \"./engine.dynamicBuffer\";\r\nexport * from \"./engine.readTexture\";\r\nexport * from \"./engine.computeShader\";\r\n\r\n// must import first since nothing references the exports\r\n// eslint-disable-next-line no-duplicate-imports\r\nexport * from \"./engine.textureSelector\";\r\n\r\nimport \"./engine.textureSelector\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AAEvC,yDAAyD;AACzD,gDAAgD;AAChD,cAAc,0BAA0B,CAAC;AAEzC,OAAO,0BAA0B,CAAC","sourcesContent":["/* eslint-disable import/export */\r\nexport * from \"./engine.alphaToCoverage\";\r\nexport * from \"./engine.alpha\";\r\nexport * from \"./engine.debugging\";\r\nexport * from \"./engine.query\";\r\nexport * from \"./engine.transformFeedback\";\r\nexport * from \"./engine.multiview\";\r\nexport * from \"./engine.rawTexture\";\r\nexport * from \"./engine.dynamicTexture\";\r\nexport * from \"./engine.videoTexture\";\r\nexport * from \"./engine.multiRender\";\r\nexport * from \"./engine.cubeTexture\";\r\nexport * from \"./engine.prefilteredCubeTexture\";\r\nexport * from \"./engine.renderTarget\";\r\nexport * from \"./engine.renderTargetCube\";\r\nexport * from \"./engine.renderTargetTexture\";\r\nexport * from \"./engine.texture2DArrayImageSource\";\r\nexport * from \"./engine.uniformBuffer\";\r\nexport * from \"./engine.dynamicBuffer\";\r\nexport * from \"./engine.readTexture\";\r\nexport * from \"./engine.computeShader\";\r\n\r\n// must import first since nothing references the exports\r\n// eslint-disable-next-line no-duplicate-imports\r\nexport * from \"./engine.textureSelector\";\r\n\r\nimport \"./engine.textureSelector\";\r\n"]}
@@ -14,9 +14,9 @@ export * from "./engine.prefilteredCubeTexture.pure.js";
14
14
  export * from "./engine.renderTarget.pure.js";
15
15
  export * from "./engine.renderTargetCube.pure.js";
16
16
  export * from "./engine.renderTargetTexture.pure.js";
17
+ export * from "./engine.texture2DArrayImageSource.pure.js";
17
18
  export * from "./engine.uniformBuffer.pure.js";
18
19
  export * from "./engine.dynamicBuffer.pure.js";
19
20
  export * from "./engine.readTexture.pure.js";
20
21
  export * from "./engine.computeShader.pure.js";
21
22
  export * from "./engine.textureSelector.pure.js";
22
- export * from "./engine.texture2DArrayImageSource.pure.js";
@@ -15,10 +15,10 @@ export * from "./engine.prefilteredCubeTexture.pure.js";
15
15
  export * from "./engine.renderTarget.pure.js";
16
16
  export * from "./engine.renderTargetCube.pure.js";
17
17
  export * from "./engine.renderTargetTexture.pure.js";
18
+ export * from "./engine.texture2DArrayImageSource.pure.js";
18
19
  export * from "./engine.uniformBuffer.pure.js";
19
20
  export * from "./engine.dynamicBuffer.pure.js";
20
21
  export * from "./engine.readTexture.pure.js";
21
22
  export * from "./engine.computeShader.pure.js";
22
23
  export * from "./engine.textureSelector.pure.js";
23
- export * from "./engine.texture2DArrayImageSource.pure.js";
24
24
  //# sourceMappingURL=pure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,kCAAkC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yCAAyC,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable import/export */\nexport * from \"./engine.alphaToCoverage.pure\";\nexport * from \"./engine.alpha.pure\";\nexport * from \"./engine.debugging.pure\";\nexport * from \"./engine.query.pure\";\nexport * from \"./engine.transformFeedback.pure\";\nexport * from \"./engine.multiview.pure\";\nexport * from \"./engine.rawTexture.pure\";\nexport * from \"./engine.dynamicTexture.pure\";\nexport * from \"./engine.videoTexture.pure\";\nexport * from \"./engine.multiRender.pure\";\nexport * from \"./engine.cubeTexture.pure\";\nexport * from \"./engine.prefilteredCubeTexture.pure\";\nexport * from \"./engine.renderTarget.pure\";\nexport * from \"./engine.renderTargetCube.pure\";\nexport * from \"./engine.renderTargetTexture.pure\";\nexport * from \"./engine.uniformBuffer.pure\";\nexport * from \"./engine.dynamicBuffer.pure\";\nexport * from \"./engine.readTexture.pure\";\nexport * from \"./engine.computeShader.pure\";\nexport * from \"./engine.textureSelector.pure\";\nexport * from \"./engine.texture2DArrayImageSource.pure\";\n"]}
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Extensions/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,kCAAkC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sCAAsC,CAAC;AACrD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable import/export */\nexport * from \"./engine.alphaToCoverage.pure\";\nexport * from \"./engine.alpha.pure\";\nexport * from \"./engine.debugging.pure\";\nexport * from \"./engine.query.pure\";\nexport * from \"./engine.transformFeedback.pure\";\nexport * from \"./engine.multiview.pure\";\nexport * from \"./engine.rawTexture.pure\";\nexport * from \"./engine.dynamicTexture.pure\";\nexport * from \"./engine.videoTexture.pure\";\nexport * from \"./engine.multiRender.pure\";\nexport * from \"./engine.cubeTexture.pure\";\nexport * from \"./engine.prefilteredCubeTexture.pure\";\nexport * from \"./engine.renderTarget.pure\";\nexport * from \"./engine.renderTargetCube.pure\";\nexport * from \"./engine.renderTargetTexture.pure\";\nexport * from \"./engine.texture2DArrayImageSource.pure\";\nexport * from \"./engine.uniformBuffer.pure\";\nexport * from \"./engine.dynamicBuffer.pure\";\nexport * from \"./engine.readTexture.pure\";\nexport * from \"./engine.computeShader.pure\";\nexport * from \"./engine.textureSelector.pure\";\n"]}
@@ -5,6 +5,53 @@ import { CreateRadianceImageDataArrayBufferViews, GetEnvInfo, UploadEnvSpherical
5
5
  import { SphericalPolynomial } from "../../../Maths/sphericalPolynomial.pure.js";
6
6
 
7
7
  import { ThinNativeEngine } from "../../thinNativeEngine.pure.js";
8
+ function ApplySphericalPolynomialFromNative(texture, sphericalPolynomial) {
9
+ if (!sphericalPolynomial || sphericalPolynomial.length < 27) {
10
+ return;
11
+ }
12
+ const sp = new SphericalPolynomial();
13
+ sp.x.copyFromFloats(sphericalPolynomial[0], sphericalPolynomial[1], sphericalPolynomial[2]);
14
+ sp.y.copyFromFloats(sphericalPolynomial[3], sphericalPolynomial[4], sphericalPolynomial[5]);
15
+ sp.z.copyFromFloats(sphericalPolynomial[6], sphericalPolynomial[7], sphericalPolynomial[8]);
16
+ sp.xx.copyFromFloats(sphericalPolynomial[9], sphericalPolynomial[10], sphericalPolynomial[11]);
17
+ sp.yy.copyFromFloats(sphericalPolynomial[12], sphericalPolynomial[13], sphericalPolynomial[14]);
18
+ sp.zz.copyFromFloats(sphericalPolynomial[15], sphericalPolynomial[16], sphericalPolynomial[17]);
19
+ sp.yz.copyFromFloats(sphericalPolynomial[18], sphericalPolynomial[19], sphericalPolynomial[20]);
20
+ sp.zx.copyFromFloats(sphericalPolynomial[21], sphericalPolynomial[22], sphericalPolynomial[23]);
21
+ sp.xy.copyFromFloats(sphericalPolynomial[24], sphericalPolynomial[25], sphericalPolynomial[26]);
22
+ texture._sphericalPolynomial = sp;
23
+ }
24
+ function SyncCubeTextureSizeFromNative(nativeEngine, texture, fallbackSize) {
25
+ const hardware = texture._hardwareTexture?.underlyingResource;
26
+ if (hardware) {
27
+ const width = nativeEngine.getTextureWidth(hardware);
28
+ const height = nativeEngine.getTextureHeight(hardware);
29
+ if (width > 0 && height > 0) {
30
+ texture.width = width;
31
+ texture.height = height;
32
+ texture.baseWidth = width;
33
+ texture.baseHeight = height;
34
+ return;
35
+ }
36
+ }
37
+ if (fallbackSize && fallbackSize > 0) {
38
+ texture.width = fallbackSize;
39
+ texture.height = fallbackSize;
40
+ texture.baseWidth = fallbackSize;
41
+ texture.baseHeight = fallbackSize;
42
+ }
43
+ }
44
+ function NotifyCubeTextureLoaded(texture, onLoad, loadData) {
45
+ // Native cannot read cube faces for lazy irradiance generation. Preserve supplied
46
+ // coefficients, or publish an empty polynomial before observers (including clones) run.
47
+ texture._sphericalPolynomial ?? (texture._sphericalPolynomial = new SphericalPolynomial());
48
+ texture.isReady = true;
49
+ texture.onLoadedObservable.notifyObservers(texture);
50
+ texture.onLoadedObservable.clear();
51
+ if (onLoad) {
52
+ onLoad(loadData);
53
+ }
54
+ }
8
55
  let _Registered = false;
9
56
  /**
10
57
  * Register side effects for nativeEngineCubeTexture.
@@ -36,6 +83,8 @@ export function RegisterNativeEngineCubeTexture() {
36
83
  const info = GetEnvInfo(data);
37
84
  texture.width = info.width;
38
85
  texture.height = info.width;
86
+ texture.baseWidth = info.width;
87
+ texture.baseHeight = info.width;
39
88
  UploadEnvSpherical(texture, info);
40
89
  const specularInfo = info.specular;
41
90
  if (!specularInfo) {
@@ -50,10 +99,8 @@ export function RegisterNativeEngineCubeTexture() {
50
99
  texture._isRGBD = true;
51
100
  texture.invertY = true;
52
101
  this._engine.loadCubeTextureWithMips(texture._hardwareTexture.underlyingResource, imageData, false, texture._useSRGBBuffer, () => {
53
- texture.isReady = true;
54
- if (onLoad) {
55
- onLoad();
56
- }
102
+ SyncCubeTextureSizeFromNative(this._engine, texture, info.width);
103
+ NotifyCubeTextureLoaded(texture, onLoad);
57
104
  }, () => {
58
105
  throw new Error("Could not load a native cube texture.");
59
106
  });
@@ -88,51 +135,40 @@ export function RegisterNativeEngineCubeTexture() {
88
135
  })
89
136
  // eslint-disable-next-line github/no-then
90
137
  .then(() => {
91
- texture.isReady = true;
92
- if (onLoad) {
93
- onLoad();
94
- }
138
+ SyncCubeTextureSizeFromNative(this._engine, texture);
139
+ NotifyCubeTextureLoaded(texture, onLoad);
95
140
  }, (error) => {
96
141
  if (onError) {
97
142
  onError(`Failed to load cubemap: ${error?.message ?? String(error)}`, error);
98
143
  }
99
144
  });
100
145
  }
101
- else if (!files || files.length <= 1) {
102
- // Self-contained single-file cubemap container (.dds / .ktx / .ktx2) that already holds
103
- // all six faces (and their prefiltered mip chain). Load the single buffer and hand it to
104
- // the native engine, which parses the container directly and returns the diffuse spherical
105
- // harmonics (as a 27-float SphericalPolynomial) so PBR irradiance matches the web engines.
146
+ else if (extension.indexOf(".dds") === 0 && (buffer || !files || files.length <= 1)) {
147
+ // DDS containers hold all six faces and can provide diffuse SH coefficients.
148
+ // Prefer the supplied buffer to loading the single URL.
106
149
  const singleUrl = files && files.length > 0 ? files[0] : rootUrl;
107
- this._loadFileAsync(singleUrl, undefined, true)
108
- // eslint-disable-next-line github/no-then
109
- .then(async (data) => {
110
- const buffer = new Uint8Array(data, 0, data.byteLength);
111
- return await new Promise((resolve, reject) => {
112
- this._engine.loadCubeTexture(texture._hardwareTexture.underlyingResource, [buffer], !noMipmap, false, texture._useSRGBBuffer, (sphericalPolynomial) => {
113
- if (createPolynomials && sphericalPolynomial && sphericalPolynomial.length >= 27) {
114
- const sp = new SphericalPolynomial();
115
- sp.x.copyFromFloats(sphericalPolynomial[0], sphericalPolynomial[1], sphericalPolynomial[2]);
116
- sp.y.copyFromFloats(sphericalPolynomial[3], sphericalPolynomial[4], sphericalPolynomial[5]);
117
- sp.z.copyFromFloats(sphericalPolynomial[6], sphericalPolynomial[7], sphericalPolynomial[8]);
118
- sp.xx.copyFromFloats(sphericalPolynomial[9], sphericalPolynomial[10], sphericalPolynomial[11]);
119
- sp.yy.copyFromFloats(sphericalPolynomial[12], sphericalPolynomial[13], sphericalPolynomial[14]);
120
- sp.zz.copyFromFloats(sphericalPolynomial[15], sphericalPolynomial[16], sphericalPolynomial[17]);
121
- sp.yz.copyFromFloats(sphericalPolynomial[18], sphericalPolynomial[19], sphericalPolynomial[20]);
122
- sp.zx.copyFromFloats(sphericalPolynomial[21], sphericalPolynomial[22], sphericalPolynomial[23]);
123
- sp.xy.copyFromFloats(sphericalPolynomial[24], sphericalPolynomial[25], sphericalPolynomial[26]);
124
- texture._sphericalPolynomial = sp;
150
+ const sourceLabel = buffer ? rootUrl || singleUrl : singleUrl;
151
+ const loadContainerBufferAsync = async (data) => {
152
+ const view = data instanceof Uint8Array ? data : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
153
+ await new Promise((resolve, reject) => {
154
+ this._engine.loadCubeTexture(texture._hardwareTexture.underlyingResource, [view], !noMipmap, false, texture._useSRGBBuffer, (sphericalPolynomial) => {
155
+ if (createPolynomials) {
156
+ ApplySphericalPolynomialFromNative(texture, sphericalPolynomial);
125
157
  }
126
158
  resolve();
127
- }, () => reject(new Error(`Native engine failed to parse the cubemap container '${singleUrl}'`)));
159
+ }, () => reject(new Error(`Native engine failed to parse the cubemap container '${sourceLabel}'`)));
128
160
  });
129
- })
130
- // eslint-disable-next-line github/no-then
131
- .then(() => {
132
- texture.isReady = true;
133
- if (onLoad) {
134
- onLoad();
135
- }
161
+ };
162
+ const loadPromise = buffer
163
+ ? loadContainerBufferAsync(buffer)
164
+ : // eslint-disable-next-line github/no-then
165
+ this._loadFileAsync(singleUrl, undefined, true).then(async (data) => {
166
+ await loadContainerBufferAsync(new Uint8Array(data, 0, data.byteLength));
167
+ });
168
+ // eslint-disable-next-line github/no-then
169
+ loadPromise.then(() => {
170
+ SyncCubeTextureSizeFromNative(this._engine, texture);
171
+ NotifyCubeTextureLoaded(texture, onLoad);
136
172
  }, (error) => {
137
173
  if (onError) {
138
174
  onError(`Failed to load cubemap: ${error?.message ?? String(error)}`, error);
@@ -145,5 +181,18 @@ export function RegisterNativeEngineCubeTexture() {
145
181
  this._internalTexturesCache.push(texture);
146
182
  return texture;
147
183
  };
184
+ // Native has no WebGL DDS loadData. Initialize prefiltered state before loading so observers
185
+ // cannot trigger unsupported cube-face readback when polynomial generation is disabled.
186
+ ThinNativeEngine.prototype.createPrefilteredCubeTexture = function (rootUrl, scene, lodScale, lodOffset, onLoad = null, onError = null, format, forcedExtension = null, createPolynomials = true, buffer = null) {
187
+ const texture = new InternalTexture(this, 9 /* InternalTextureSource.CubePrefiltered */);
188
+ if (!createPolynomials) {
189
+ texture._sphericalPolynomial = new SphericalPolynomial();
190
+ }
191
+ return this.createCubeTexture(rootUrl, scene, null, false, () => {
192
+ if (onLoad) {
193
+ onLoad(texture);
194
+ }
195
+ }, onError, format, forcedExtension, createPolynomials, lodScale, lodOffset, texture, undefined, false, buffer);
196
+ };
148
197
  }
149
198
  //# sourceMappingURL=nativeEngine.cubeTexture.pure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nativeEngine.cubeTexture.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/Native/Extensions/nativeEngine.cubeTexture.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 { Texture } from \"../../../Materials/Textures/texture.pure\";\r\nimport { CreateRadianceImageDataArrayBufferViews, GetEnvInfo, UploadEnvSpherical } from \"../../../Misc/environmentTextureTools.pure\";\r\nimport { type IWebRequest } from \"../../../Misc/interfaces/iWebRequest\";\r\nimport { type Scene } from \"../../../scene.pure\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { SphericalPolynomial } from \"../../../Maths/sphericalPolynomial.pure\";\r\nimport { Constants } from \"../../constants\";\r\nimport { ThinNativeEngine } from \"../../thinNativeEngine.pure\";\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for nativeEngineCubeTexture.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterNativeEngineCubeTexture(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n ThinNativeEngine.prototype.createCubeTexture = function (\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap?: boolean,\r\n onLoad: Nullable<(data?: any) => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n format?: number,\r\n forcedExtension: any = null,\r\n createPolynomials = false,\r\n lodScale: number = 0,\r\n lodOffset: number = 0,\r\n fallback: Nullable<InternalTexture> = null,\r\n loaderOptions?: any,\r\n useSRGBBuffer = false,\r\n buffer: Nullable<ArrayBufferView> = null\r\n ): InternalTexture {\r\n const texture = fallback ? fallback : new InternalTexture(this, InternalTextureSource.Cube);\r\n texture.isCube = true;\r\n texture.url = rootUrl;\r\n texture.generateMipMaps = !noMipmap;\r\n texture._lodGenerationScale = lodScale;\r\n texture._lodGenerationOffset = lodOffset;\r\n texture._useSRGBBuffer = this._getUseSRGBBuffer(useSRGBBuffer, !!noMipmap);\r\n\r\n if (!this._doNotHandleContextLost) {\r\n texture._extension = forcedExtension;\r\n texture._files = files;\r\n texture._buffer = buffer;\r\n }\r\n\r\n const lastDot = rootUrl.lastIndexOf(\".\");\r\n const extension = forcedExtension ? forcedExtension : lastDot > -1 ? rootUrl.substring(lastDot).toLowerCase() : \"\";\r\n\r\n // TODO: use texture loader to load env files?\r\n if (extension === \".env\") {\r\n const onloaddata = (data: ArrayBufferView) => {\r\n const info = GetEnvInfo(data)!;\r\n texture.width = info.width;\r\n texture.height = info.width;\r\n\r\n UploadEnvSpherical(texture, info);\r\n\r\n const specularInfo = info.specular;\r\n if (!specularInfo) {\r\n throw new Error(`Nothing else parsed so far`);\r\n }\r\n\r\n texture._lodGenerationScale = specularInfo.lodGenerationScale;\r\n const imageData = CreateRadianceImageDataArrayBufferViews(data, info);\r\n\r\n texture.format = Constants.TEXTUREFORMAT_RGBA;\r\n texture.type = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n texture.generateMipMaps = true;\r\n texture.getEngine().updateTextureSamplingMode(Texture.TRILINEAR_SAMPLINGMODE, texture);\r\n texture._isRGBD = true;\r\n texture.invertY = true;\r\n\r\n this._engine.loadCubeTextureWithMips(\r\n texture._hardwareTexture!.underlyingResource,\r\n imageData,\r\n false,\r\n texture._useSRGBBuffer,\r\n () => {\r\n texture.isReady = true;\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n },\r\n () => {\r\n throw new Error(\"Could not load a native cube texture.\");\r\n }\r\n );\r\n };\r\n\r\n if (buffer) {\r\n onloaddata(buffer);\r\n } else if (files && files.length === 6) {\r\n throw new Error(`Multi-file loading not allowed on env files.`);\r\n } else {\r\n const onInternalError = (request?: IWebRequest, exception?: any) => {\r\n if (onError && request) {\r\n onError(request.status + \" \" + request.statusText, exception);\r\n }\r\n };\r\n\r\n this._loadFile(\r\n rootUrl,\r\n (data) => {\r\n onloaddata(new Uint8Array(data as ArrayBuffer, 0, (data as ArrayBuffer).byteLength));\r\n },\r\n undefined,\r\n undefined,\r\n true,\r\n onInternalError\r\n );\r\n }\r\n } else if (files && files.length === 6) {\r\n // Reorder from [+X, +Y, +Z, -X, -Y, -Z] to [+X, -X, +Y, -Y, +Z, -Z].\r\n const reorderedFiles = [files[0], files[3], files[1], files[4], files[2], files[5]];\r\n // eslint-disable-next-line github/no-then\r\n Promise.all(reorderedFiles.map(async (file) => await this._loadFileAsync(file, undefined, true).then((data) => new Uint8Array(data, 0, data.byteLength))))\r\n // eslint-disable-next-line github/no-then\r\n .then(async (data) => {\r\n return await new Promise<void>((resolve, reject) => {\r\n this._engine.loadCubeTexture(\r\n texture._hardwareTexture!.underlyingResource,\r\n data,\r\n !noMipmap,\r\n true,\r\n texture._useSRGBBuffer,\r\n () => resolve(),\r\n () => reject(new Error(\"Native engine failed to load the cubemap faces\"))\r\n );\r\n });\r\n })\r\n // eslint-disable-next-line github/no-then\r\n .then(\r\n () => {\r\n texture.isReady = true;\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(`Failed to load cubemap: ${error?.message ?? String(error)}`, error);\r\n }\r\n }\r\n );\r\n } else if (!files || files.length <= 1) {\r\n // Self-contained single-file cubemap container (.dds / .ktx / .ktx2) that already holds\r\n // all six faces (and their prefiltered mip chain). Load the single buffer and hand it to\r\n // the native engine, which parses the container directly and returns the diffuse spherical\r\n // harmonics (as a 27-float SphericalPolynomial) so PBR irradiance matches the web engines.\r\n const singleUrl = files && files.length > 0 ? files[0] : rootUrl;\r\n\r\n this._loadFileAsync(singleUrl, undefined, true)\r\n // eslint-disable-next-line github/no-then\r\n .then(async (data) => {\r\n const buffer = new Uint8Array(data, 0, data.byteLength);\r\n return await new Promise<void>((resolve, reject) => {\r\n this._engine.loadCubeTexture(\r\n texture._hardwareTexture!.underlyingResource,\r\n [buffer],\r\n !noMipmap,\r\n false,\r\n texture._useSRGBBuffer,\r\n (sphericalPolynomial?: ArrayLike<number>) => {\r\n if (createPolynomials && sphericalPolynomial && sphericalPolynomial.length >= 27) {\r\n const sp = new SphericalPolynomial();\r\n sp.x.copyFromFloats(sphericalPolynomial[0], sphericalPolynomial[1], sphericalPolynomial[2]);\r\n sp.y.copyFromFloats(sphericalPolynomial[3], sphericalPolynomial[4], sphericalPolynomial[5]);\r\n sp.z.copyFromFloats(sphericalPolynomial[6], sphericalPolynomial[7], sphericalPolynomial[8]);\r\n sp.xx.copyFromFloats(sphericalPolynomial[9], sphericalPolynomial[10], sphericalPolynomial[11]);\r\n sp.yy.copyFromFloats(sphericalPolynomial[12], sphericalPolynomial[13], sphericalPolynomial[14]);\r\n sp.zz.copyFromFloats(sphericalPolynomial[15], sphericalPolynomial[16], sphericalPolynomial[17]);\r\n sp.yz.copyFromFloats(sphericalPolynomial[18], sphericalPolynomial[19], sphericalPolynomial[20]);\r\n sp.zx.copyFromFloats(sphericalPolynomial[21], sphericalPolynomial[22], sphericalPolynomial[23]);\r\n sp.xy.copyFromFloats(sphericalPolynomial[24], sphericalPolynomial[25], sphericalPolynomial[26]);\r\n texture._sphericalPolynomial = sp;\r\n }\r\n resolve();\r\n },\r\n () => reject(new Error(`Native engine failed to parse the cubemap container '${singleUrl}'`))\r\n );\r\n });\r\n })\r\n // eslint-disable-next-line github/no-then\r\n .then(\r\n () => {\r\n texture.isReady = true;\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(`Failed to load cubemap: ${error?.message ?? String(error)}`, error);\r\n }\r\n }\r\n );\r\n } else {\r\n throw new Error(\"Cannot load cubemap because 6 files were not defined\");\r\n }\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n return texture;\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"nativeEngine.cubeTexture.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/Native/Extensions/nativeEngine.cubeTexture.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 { Texture } from \"../../../Materials/Textures/texture.pure\";\r\nimport { CreateRadianceImageDataArrayBufferViews, GetEnvInfo, UploadEnvSpherical } from \"../../../Misc/environmentTextureTools.pure\";\r\nimport { type IWebRequest } from \"../../../Misc/interfaces/iWebRequest\";\r\nimport { type Scene } from \"../../../scene.pure\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { SphericalPolynomial } from \"../../../Maths/sphericalPolynomial.pure\";\r\nimport { Constants } from \"../../constants\";\r\nimport { ThinNativeEngine } from \"../../thinNativeEngine.pure\";\r\n\r\nfunction ApplySphericalPolynomialFromNative(texture: InternalTexture, sphericalPolynomial: ArrayLike<number> | undefined): void {\r\n if (!sphericalPolynomial || sphericalPolynomial.length < 27) {\r\n return;\r\n }\r\n\r\n const sp = new SphericalPolynomial();\r\n sp.x.copyFromFloats(sphericalPolynomial[0], sphericalPolynomial[1], sphericalPolynomial[2]);\r\n sp.y.copyFromFloats(sphericalPolynomial[3], sphericalPolynomial[4], sphericalPolynomial[5]);\r\n sp.z.copyFromFloats(sphericalPolynomial[6], sphericalPolynomial[7], sphericalPolynomial[8]);\r\n sp.xx.copyFromFloats(sphericalPolynomial[9], sphericalPolynomial[10], sphericalPolynomial[11]);\r\n sp.yy.copyFromFloats(sphericalPolynomial[12], sphericalPolynomial[13], sphericalPolynomial[14]);\r\n sp.zz.copyFromFloats(sphericalPolynomial[15], sphericalPolynomial[16], sphericalPolynomial[17]);\r\n sp.yz.copyFromFloats(sphericalPolynomial[18], sphericalPolynomial[19], sphericalPolynomial[20]);\r\n sp.zx.copyFromFloats(sphericalPolynomial[21], sphericalPolynomial[22], sphericalPolynomial[23]);\r\n sp.xy.copyFromFloats(sphericalPolynomial[24], sphericalPolynomial[25], sphericalPolynomial[26]);\r\n texture._sphericalPolynomial = sp;\r\n}\r\n\r\nfunction SyncCubeTextureSizeFromNative(\r\n nativeEngine: { getTextureWidth(texture: unknown): number; getTextureHeight(texture: unknown): number },\r\n texture: InternalTexture,\r\n fallbackSize?: number\r\n): void {\r\n const hardware = texture._hardwareTexture?.underlyingResource;\r\n if (hardware) {\r\n const width = nativeEngine.getTextureWidth(hardware);\r\n const height = nativeEngine.getTextureHeight(hardware);\r\n if (width > 0 && height > 0) {\r\n texture.width = width;\r\n texture.height = height;\r\n texture.baseWidth = width;\r\n texture.baseHeight = height;\r\n return;\r\n }\r\n }\r\n\r\n if (fallbackSize && fallbackSize > 0) {\r\n texture.width = fallbackSize;\r\n texture.height = fallbackSize;\r\n texture.baseWidth = fallbackSize;\r\n texture.baseHeight = fallbackSize;\r\n }\r\n}\r\n\r\nfunction NotifyCubeTextureLoaded(texture: InternalTexture, onLoad: Nullable<(data?: any) => void>, loadData?: any): void {\r\n // Native cannot read cube faces for lazy irradiance generation. Preserve supplied\r\n // coefficients, or publish an empty polynomial before observers (including clones) run.\r\n texture._sphericalPolynomial ??= new SphericalPolynomial();\r\n texture.isReady = true;\r\n texture.onLoadedObservable.notifyObservers(texture);\r\n texture.onLoadedObservable.clear();\r\n if (onLoad) {\r\n onLoad(loadData);\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for nativeEngineCubeTexture.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterNativeEngineCubeTexture(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n ThinNativeEngine.prototype.createCubeTexture = function (\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap?: boolean,\r\n onLoad: Nullable<(data?: any) => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n format?: number,\r\n forcedExtension: any = null,\r\n createPolynomials = false,\r\n lodScale: number = 0,\r\n lodOffset: number = 0,\r\n fallback: Nullable<InternalTexture> = null,\r\n loaderOptions?: any,\r\n useSRGBBuffer = false,\r\n buffer: Nullable<ArrayBufferView> = null\r\n ): InternalTexture {\r\n const texture = fallback ? fallback : new InternalTexture(this, InternalTextureSource.Cube);\r\n texture.isCube = true;\r\n texture.url = rootUrl;\r\n texture.generateMipMaps = !noMipmap;\r\n texture._lodGenerationScale = lodScale;\r\n texture._lodGenerationOffset = lodOffset;\r\n texture._useSRGBBuffer = this._getUseSRGBBuffer(useSRGBBuffer, !!noMipmap);\r\n\r\n if (!this._doNotHandleContextLost) {\r\n texture._extension = forcedExtension;\r\n texture._files = files;\r\n texture._buffer = buffer;\r\n }\r\n\r\n const lastDot = rootUrl.lastIndexOf(\".\");\r\n const extension = forcedExtension ? forcedExtension : lastDot > -1 ? rootUrl.substring(lastDot).toLowerCase() : \"\";\r\n\r\n // TODO: use texture loader to load env files?\r\n if (extension === \".env\") {\r\n const onloaddata = (data: ArrayBufferView) => {\r\n const info = GetEnvInfo(data)!;\r\n texture.width = info.width;\r\n texture.height = info.width;\r\n texture.baseWidth = info.width;\r\n texture.baseHeight = info.width;\r\n\r\n UploadEnvSpherical(texture, info);\r\n\r\n const specularInfo = info.specular;\r\n if (!specularInfo) {\r\n throw new Error(`Nothing else parsed so far`);\r\n }\r\n\r\n texture._lodGenerationScale = specularInfo.lodGenerationScale;\r\n const imageData = CreateRadianceImageDataArrayBufferViews(data, info);\r\n\r\n texture.format = Constants.TEXTUREFORMAT_RGBA;\r\n texture.type = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n texture.generateMipMaps = true;\r\n texture.getEngine().updateTextureSamplingMode(Texture.TRILINEAR_SAMPLINGMODE, texture);\r\n texture._isRGBD = true;\r\n texture.invertY = true;\r\n\r\n this._engine.loadCubeTextureWithMips(\r\n texture._hardwareTexture!.underlyingResource,\r\n imageData,\r\n false,\r\n texture._useSRGBBuffer,\r\n () => {\r\n SyncCubeTextureSizeFromNative(this._engine, texture, info.width);\r\n NotifyCubeTextureLoaded(texture, onLoad);\r\n },\r\n () => {\r\n throw new Error(\"Could not load a native cube texture.\");\r\n }\r\n );\r\n };\r\n\r\n if (buffer) {\r\n onloaddata(buffer);\r\n } else if (files && files.length === 6) {\r\n throw new Error(`Multi-file loading not allowed on env files.`);\r\n } else {\r\n const onInternalError = (request?: IWebRequest, exception?: any) => {\r\n if (onError && request) {\r\n onError(request.status + \" \" + request.statusText, exception);\r\n }\r\n };\r\n\r\n this._loadFile(\r\n rootUrl,\r\n (data) => {\r\n onloaddata(new Uint8Array(data as ArrayBuffer, 0, (data as ArrayBuffer).byteLength));\r\n },\r\n undefined,\r\n undefined,\r\n true,\r\n onInternalError\r\n );\r\n }\r\n } else if (files && files.length === 6) {\r\n // Reorder from [+X, +Y, +Z, -X, -Y, -Z] to [+X, -X, +Y, -Y, +Z, -Z].\r\n const reorderedFiles = [files[0], files[3], files[1], files[4], files[2], files[5]];\r\n // eslint-disable-next-line github/no-then\r\n Promise.all(reorderedFiles.map(async (file) => await this._loadFileAsync(file, undefined, true).then((data) => new Uint8Array(data, 0, data.byteLength))))\r\n // eslint-disable-next-line github/no-then\r\n .then(async (data) => {\r\n return await new Promise<void>((resolve, reject) => {\r\n this._engine.loadCubeTexture(\r\n texture._hardwareTexture!.underlyingResource,\r\n data,\r\n !noMipmap,\r\n true,\r\n texture._useSRGBBuffer,\r\n () => resolve(),\r\n () => reject(new Error(\"Native engine failed to load the cubemap faces\"))\r\n );\r\n });\r\n })\r\n // eslint-disable-next-line github/no-then\r\n .then(\r\n () => {\r\n SyncCubeTextureSizeFromNative(this._engine, texture);\r\n NotifyCubeTextureLoaded(texture, onLoad);\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(`Failed to load cubemap: ${error?.message ?? String(error)}`, error);\r\n }\r\n }\r\n );\r\n } else if (extension.indexOf(\".dds\") === 0 && (buffer || !files || files.length <= 1)) {\r\n // DDS containers hold all six faces and can provide diffuse SH coefficients.\r\n // Prefer the supplied buffer to loading the single URL.\r\n const singleUrl = files && files.length > 0 ? files[0] : rootUrl;\r\n const sourceLabel = buffer ? rootUrl || singleUrl : singleUrl;\r\n\r\n const loadContainerBufferAsync = async (data: ArrayBufferView) => {\r\n const view = data instanceof Uint8Array ? data : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\r\n await new Promise<void>((resolve, reject) => {\r\n this._engine.loadCubeTexture(\r\n texture._hardwareTexture!.underlyingResource,\r\n [view],\r\n !noMipmap,\r\n false,\r\n texture._useSRGBBuffer,\r\n (sphericalPolynomial?: ArrayLike<number>) => {\r\n if (createPolynomials) {\r\n ApplySphericalPolynomialFromNative(texture, sphericalPolynomial);\r\n }\r\n resolve();\r\n },\r\n () => reject(new Error(`Native engine failed to parse the cubemap container '${sourceLabel}'`))\r\n );\r\n });\r\n };\r\n\r\n const loadPromise = buffer\r\n ? loadContainerBufferAsync(buffer)\r\n : // eslint-disable-next-line github/no-then\r\n this._loadFileAsync(singleUrl, undefined, true).then(async (data) => {\r\n await loadContainerBufferAsync(new Uint8Array(data, 0, data.byteLength));\r\n });\r\n\r\n // eslint-disable-next-line github/no-then\r\n loadPromise.then(\r\n () => {\r\n SyncCubeTextureSizeFromNative(this._engine, texture);\r\n NotifyCubeTextureLoaded(texture, onLoad);\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(`Failed to load cubemap: ${error?.message ?? String(error)}`, error);\r\n }\r\n }\r\n );\r\n } else {\r\n throw new Error(\"Cannot load cubemap because 6 files were not defined\");\r\n }\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n return texture;\r\n };\r\n\r\n // Native has no WebGL DDS loadData. Initialize prefiltered state before loading so observers\r\n // cannot trigger unsupported cube-face readback when polynomial generation is disabled.\r\n ThinNativeEngine.prototype.createPrefilteredCubeTexture = function (\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n lodScale: number,\r\n lodOffset: number,\r\n onLoad: Nullable<(internalTexture: Nullable<InternalTexture>) => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n format?: number,\r\n forcedExtension: any = null,\r\n createPolynomials: boolean = true,\r\n buffer: Nullable<ArrayBufferView> = null\r\n ): InternalTexture {\r\n const texture = new InternalTexture(this, InternalTextureSource.CubePrefiltered);\r\n if (!createPolynomials) {\r\n texture._sphericalPolynomial = new SphericalPolynomial();\r\n }\r\n\r\n return this.createCubeTexture(\r\n rootUrl,\r\n scene,\r\n null,\r\n false,\r\n () => {\r\n if (onLoad) {\r\n onLoad(texture);\r\n }\r\n },\r\n onError,\r\n format,\r\n forcedExtension,\r\n createPolynomials,\r\n lodScale,\r\n lodOffset,\r\n texture,\r\n undefined,\r\n false,\r\n buffer\r\n );\r\n };\r\n}\r\n"]}
@@ -4,7 +4,7 @@ import { type Nullable } from "../../../types.js";
4
4
  declare module "../../../Engines/thinNativeEngine.pure.js" {
5
5
  interface ThinNativeEngine {
6
6
  /**
7
- * Creates a cube texture
7
+ * Creates a cube texture from six face images or a single DDS/env container.
8
8
  * @param rootUrl defines the url where the files to load is located
9
9
  * @param scene defines the current scene
10
10
  * @param files defines the list of files to load (1 per face)
@@ -19,9 +19,27 @@ declare module "../../../Engines/thinNativeEngine.pure.js" {
19
19
  * @param fallback defines texture to use while falling back when (compressed) texture file not found.
20
20
  * @param loaderOptions options to be passed to the loader
21
21
  * @param useSRGBBuffer defines if the texture must be loaded in a sRGB GPU buffer (if supported by the GPU).
22
- * @param buffer defines the data buffer to load instead of loading the rootUrl
22
+ * @param buffer defines the DDS or env data buffer to load instead of loading the rootUrl
23
23
  * @returns the cube texture as an InternalTexture
24
24
  */
25
25
  createCubeTexture(rootUrl: string, scene: Nullable<Scene>, files: Nullable<string[]>, noMipmap?: boolean, onLoad?: Nullable<(data?: any) => void>, onError?: Nullable<(message?: string, exception?: any) => void>, format?: number, forcedExtension?: any, createPolynomials?: boolean, lodScale?: number, lodOffset?: number, fallback?: Nullable<InternalTexture>, loaderOptions?: any, useSRGBBuffer?: boolean, buffer?: Nullable<ArrayBufferView>): InternalTexture;
26
+ /**
27
+ * Creates a prefiltered cube texture suitable for IBL (Native).
28
+ * Completes the same load contract as the Web engines: onLoad receives the
29
+ * InternalTexture, `_source` is CubePrefiltered, and an empty spherical
30
+ * polynomial is installed when createPolynomials is false.
31
+ * @param rootUrl defines the url where the file to load is located
32
+ * @param scene defines the current scene
33
+ * @param lodScale defines scale to apply to the mip map selection
34
+ * @param lodOffset defines offset to apply to the mip map selection
35
+ * @param onLoad defines an optional callback raised when the texture is loaded
36
+ * @param onError defines an optional callback raised if there is an issue to load the texture
37
+ * @param format defines the format of the data
38
+ * @param forcedExtension defines the extension to use to pick the right loader
39
+ * @param createPolynomials defines whether to create spherical polynomial harmonics for the texture
40
+ * @param buffer defines the DDS or env data buffer to load instead of loading the rootUrl
41
+ * @returns the cube texture as an InternalTexture
42
+ */
43
+ createPrefilteredCubeTexture(rootUrl: string, scene: Nullable<Scene>, lodScale: number, lodOffset: number, onLoad?: Nullable<(internalTexture: Nullable<InternalTexture>) => void>, onError?: Nullable<(message?: string, exception?: any) => void>, format?: number, forcedExtension?: any, createPolynomials?: boolean, buffer?: Nullable<ArrayBufferView>): InternalTexture;
26
44
  }
27
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nativeEngine.cubeTexture.types.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/Native/Extensions/nativeEngine.cubeTexture.types.ts"],"names":[],"mappings":"","sourcesContent":["import { type InternalTexture } from \"../../../Materials/Textures/internalTexture\";\r\nimport { type Scene } from \"../../../scene\";\r\nimport { type Nullable } from \"../../../types\";\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n\r\ndeclare module \"../../../Engines/thinNativeEngine.pure\" {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n export interface ThinNativeEngine {\r\n /**\r\n * Creates a cube texture\r\n * @param rootUrl defines the url where the files to load is located\r\n * @param scene defines the current scene\r\n * @param files defines the list of files to load (1 per face)\r\n * @param noMipmap defines a boolean indicating that no mipmaps shall be generated (false by default)\r\n * @param onLoad defines an optional callback raised when the texture is loaded\r\n * @param onError defines an optional callback raised if there is an issue to load the texture\r\n * @param format defines the format of the data\r\n * @param forcedExtension defines the extension to use to pick the right loader\r\n * @param createPolynomials if a polynomial sphere should be created for the cube texture\r\n * @param lodScale defines the scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness\r\n * @param lodOffset defines the offset applied to environment texture. This manages first LOD level used for IBL according to the roughness\r\n * @param fallback defines texture to use while falling back when (compressed) texture file not found.\r\n * @param loaderOptions options to be passed to the loader\r\n * @param useSRGBBuffer defines if the texture must be loaded in a sRGB GPU buffer (if supported by the GPU).\r\n * @param buffer defines the data buffer to load instead of loading the rootUrl\r\n * @returns the cube texture as an InternalTexture\r\n */\r\n createCubeTexture(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap?: boolean,\r\n onLoad?: Nullable<(data?: any) => void>,\r\n onError?: Nullable<(message?: string, exception?: any) => void>,\r\n format?: number,\r\n forcedExtension?: any,\r\n createPolynomials?: boolean,\r\n lodScale?: number,\r\n lodOffset?: number,\r\n fallback?: Nullable<InternalTexture>,\r\n loaderOptions?: any,\r\n useSRGBBuffer?: boolean,\r\n buffer?: Nullable<ArrayBufferView>\r\n ): InternalTexture;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"nativeEngine.cubeTexture.types.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/Native/Extensions/nativeEngine.cubeTexture.types.ts"],"names":[],"mappings":"","sourcesContent":["import { type InternalTexture } from \"../../../Materials/Textures/internalTexture\";\r\nimport { type Scene } from \"../../../scene\";\r\nimport { type Nullable } from \"../../../types\";\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n\r\ndeclare module \"../../../Engines/thinNativeEngine.pure\" {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n export interface ThinNativeEngine {\r\n /**\r\n * Creates a cube texture from six face images or a single DDS/env container.\r\n * @param rootUrl defines the url where the files to load is located\r\n * @param scene defines the current scene\r\n * @param files defines the list of files to load (1 per face)\r\n * @param noMipmap defines a boolean indicating that no mipmaps shall be generated (false by default)\r\n * @param onLoad defines an optional callback raised when the texture is loaded\r\n * @param onError defines an optional callback raised if there is an issue to load the texture\r\n * @param format defines the format of the data\r\n * @param forcedExtension defines the extension to use to pick the right loader\r\n * @param createPolynomials if a polynomial sphere should be created for the cube texture\r\n * @param lodScale defines the scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness\r\n * @param lodOffset defines the offset applied to environment texture. This manages first LOD level used for IBL according to the roughness\r\n * @param fallback defines texture to use while falling back when (compressed) texture file not found.\r\n * @param loaderOptions options to be passed to the loader\r\n * @param useSRGBBuffer defines if the texture must be loaded in a sRGB GPU buffer (if supported by the GPU).\r\n * @param buffer defines the DDS or env data buffer to load instead of loading the rootUrl\r\n * @returns the cube texture as an InternalTexture\r\n */\r\n createCubeTexture(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n files: Nullable<string[]>,\r\n noMipmap?: boolean,\r\n onLoad?: Nullable<(data?: any) => void>,\r\n onError?: Nullable<(message?: string, exception?: any) => void>,\r\n format?: number,\r\n forcedExtension?: any,\r\n createPolynomials?: boolean,\r\n lodScale?: number,\r\n lodOffset?: number,\r\n fallback?: Nullable<InternalTexture>,\r\n loaderOptions?: any,\r\n useSRGBBuffer?: boolean,\r\n buffer?: Nullable<ArrayBufferView>\r\n ): InternalTexture;\r\n\r\n /**\r\n * Creates a prefiltered cube texture suitable for IBL (Native).\r\n * Completes the same load contract as the Web engines: onLoad receives the\r\n * InternalTexture, `_source` is CubePrefiltered, and an empty spherical\r\n * polynomial is installed when createPolynomials is false.\r\n * @param rootUrl defines the url where the file to load is located\r\n * @param scene defines the current scene\r\n * @param lodScale defines scale to apply to the mip map selection\r\n * @param lodOffset defines offset to apply to the mip map selection\r\n * @param onLoad defines an optional callback raised when the texture is loaded\r\n * @param onError defines an optional callback raised if there is an issue to load the texture\r\n * @param format defines the format of the data\r\n * @param forcedExtension defines the extension to use to pick the right loader\r\n * @param createPolynomials defines whether to create spherical polynomial harmonics for the texture\r\n * @param buffer defines the DDS or env data buffer to load instead of loading the rootUrl\r\n * @returns the cube texture as an InternalTexture\r\n */\r\n createPrefilteredCubeTexture(\r\n rootUrl: string,\r\n scene: Nullable<Scene>,\r\n lodScale: number,\r\n lodOffset: number,\r\n onLoad?: Nullable<(internalTexture: Nullable<InternalTexture>) => void>,\r\n onError?: Nullable<(message?: string, exception?: any) => void>,\r\n format?: number,\r\n forcedExtension?: any,\r\n createPolynomials?: boolean,\r\n buffer?: Nullable<ArrayBufferView>\r\n ): InternalTexture;\r\n }\r\n}\r\n"]}
@@ -237,6 +237,10 @@ export function RegisterEnginesWebGPUExtensionsEngineMultiRender() {
237
237
  // the render pass is not created yet so we don't need to call setMRTAttachments: it will be called as part of the render pass creation (see WebGPUEngine._startRenderTargetRenderPass)
238
238
  }
239
239
  };
240
+ WebGPUEngine.prototype.clearAttachments = function (color, attachments, clearColor, clearDepth, clearStencil = false, stencilClearValue = 0) {
241
+ this.bindAttachments(attachments);
242
+ this.clear(color, clearColor, clearDepth, clearStencil, stencilClearValue);
243
+ };
240
244
  WebGPUEngine.prototype.buildTextureLayout = function (textureStatus, backBufferLayout = false) {
241
245
  const result = [];
242
246
  if (backBufferLayout) {