@onerjs/core 9.0.1 → 9.0.3

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 (476) hide show
  1. package/Animations/animationGroup.pure.js.map +1 -1
  2. package/Buffers/buffer.pure.js +4 -0
  3. package/Buffers/buffer.pure.js.map +1 -1
  4. package/Cameras/camera.pure.d.ts +14 -0
  5. package/Cameras/camera.pure.js +15 -0
  6. package/Cameras/camera.pure.js.map +1 -1
  7. package/Compute/computeShader.pure.d.ts +2 -1
  8. package/Compute/computeShader.pure.js +29 -10
  9. package/Compute/computeShader.pure.js.map +1 -1
  10. package/Culling/ray.core.js +22 -9
  11. package/Culling/ray.core.js.map +1 -1
  12. package/Engines/IDrawContext.d.ts +2 -0
  13. package/Engines/IDrawContext.js.map +1 -1
  14. package/Engines/Native/nativeInterfaces.d.ts +55 -4
  15. package/Engines/Native/nativeInterfaces.js.map +1 -1
  16. package/Engines/Native/nativeRenderTargetWrapper.d.ts +1 -0
  17. package/Engines/Native/nativeRenderTargetWrapper.js +5 -1
  18. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  19. package/Engines/Processors/shaderCodeInliner.d.ts +2 -0
  20. package/Engines/Processors/shaderCodeInliner.js +251 -6
  21. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  22. package/Engines/Processors/shaderProcessor.js +10 -1
  23. package/Engines/Processors/shaderProcessor.js.map +1 -1
  24. package/Engines/WebGPU/Extensions/engine.debugging.pure.js +12 -0
  25. package/Engines/WebGPU/Extensions/engine.debugging.pure.js.map +1 -1
  26. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +0 -1
  27. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
  28. package/Engines/WebGPU/Extensions/engine.query.pure.js +5 -0
  29. package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
  30. package/Engines/WebGPU/webgpuBufferManager.js +7 -0
  31. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  32. package/Engines/WebGPU/webgpuCacheTextureView.d.ts +1 -1
  33. package/Engines/WebGPU/webgpuCacheTextureView.js +20 -8
  34. package/Engines/WebGPU/webgpuCacheTextureView.js.map +1 -1
  35. package/Engines/WebGPU/webgpuDrawContext.d.ts +2 -0
  36. package/Engines/WebGPU/webgpuDrawContext.js +6 -0
  37. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  38. package/Engines/WebGPU/webgpuQuerySet.d.ts +3 -3
  39. package/Engines/WebGPU/webgpuQuerySet.js +23 -9
  40. package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
  41. package/Engines/WebGPU/webgpuRenderPassCommandStream.d.ts +156 -0
  42. package/Engines/WebGPU/webgpuRenderPassCommandStream.js +323 -0
  43. package/Engines/WebGPU/webgpuRenderPassCommandStream.js.map +1 -0
  44. package/Engines/WebGPU/webgpuTextureManager.d.ts +1 -1
  45. package/Engines/WebGPU/webgpuTextureManager.js +4 -3
  46. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  47. package/Engines/WebGPU/webgpuTimestampQuery.d.ts +3 -1
  48. package/Engines/WebGPU/webgpuTimestampQuery.js +9 -6
  49. package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
  50. package/Engines/abstractEngine.pure.d.ts +2 -0
  51. package/Engines/abstractEngine.pure.js +14 -5
  52. package/Engines/abstractEngine.pure.js.map +1 -1
  53. package/Engines/constants.d.ts +6 -0
  54. package/Engines/constants.js +6 -0
  55. package/Engines/constants.js.map +1 -1
  56. package/Engines/engine.d.ts +198 -24
  57. package/Engines/pure.d.ts +1 -0
  58. package/Engines/pure.js +1 -0
  59. package/Engines/pure.js.map +1 -1
  60. package/Engines/renderCommandBatcher.pure.d.ts +16 -0
  61. package/Engines/renderCommandBatcher.pure.js +24 -0
  62. package/Engines/renderCommandBatcher.pure.js.map +1 -0
  63. package/Engines/thinEngine.functions.js +3 -2
  64. package/Engines/thinEngine.functions.js.map +1 -1
  65. package/Engines/thinEngine.pure.js +18 -2
  66. package/Engines/thinEngine.pure.js.map +1 -1
  67. package/Engines/thinNativeEngine.pure.d.ts +10 -7
  68. package/Engines/thinNativeEngine.pure.js +117 -46
  69. package/Engines/thinNativeEngine.pure.js.map +1 -1
  70. package/Engines/thinWebGPUEngine.d.ts +8 -0
  71. package/Engines/thinWebGPUEngine.js +11 -0
  72. package/Engines/thinWebGPUEngine.js.map +1 -1
  73. package/Engines/webgpuEngine.pure.d.ts +60 -1
  74. package/Engines/webgpuEngine.pure.js +238 -42
  75. package/Engines/webgpuEngine.pure.js.map +1 -1
  76. package/FlowGraph/Blocks/Data/Audio/flowGraphGetSoundVolumeBlock.pure.d.ts +3 -3
  77. package/FlowGraph/Blocks/Data/Audio/flowGraphGetSoundVolumeBlock.pure.js +2 -1
  78. package/FlowGraph/Blocks/Data/Audio/flowGraphGetSoundVolumeBlock.pure.js.map +1 -1
  79. package/FlowGraph/Blocks/Data/Audio/flowGraphIsSoundPlayingBlock.pure.d.ts +3 -3
  80. package/FlowGraph/Blocks/Data/Audio/flowGraphIsSoundPlayingBlock.pure.js +2 -1
  81. package/FlowGraph/Blocks/Data/Audio/flowGraphIsSoundPlayingBlock.pure.js.map +1 -1
  82. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.d.ts +5 -0
  83. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.js +8 -0
  84. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.js.map +1 -0
  85. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.pure.d.ts +77 -0
  86. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.pure.js +141 -0
  87. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.pure.js.map +1 -0
  88. package/FlowGraph/Blocks/Event/flowGraphSoundEndedEventBlock.pure.d.ts +5 -3
  89. package/FlowGraph/Blocks/Event/flowGraphSoundEndedEventBlock.pure.js +38 -7
  90. package/FlowGraph/Blocks/Event/flowGraphSoundEndedEventBlock.pure.js.map +1 -1
  91. package/FlowGraph/Blocks/Event/index.d.ts +1 -0
  92. package/FlowGraph/Blocks/Event/index.js +1 -0
  93. package/FlowGraph/Blocks/Event/index.js.map +1 -1
  94. package/FlowGraph/Blocks/Event/pure.d.ts +1 -0
  95. package/FlowGraph/Blocks/Event/pure.js +1 -0
  96. package/FlowGraph/Blocks/Event/pure.js.map +1 -1
  97. package/FlowGraph/Blocks/Execution/Audio/flowGraphPauseSoundBlock.pure.d.ts +3 -3
  98. package/FlowGraph/Blocks/Execution/Audio/flowGraphPauseSoundBlock.pure.js +2 -1
  99. package/FlowGraph/Blocks/Execution/Audio/flowGraphPauseSoundBlock.pure.js.map +1 -1
  100. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlaySoundBlock.pure.d.ts +3 -3
  101. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlaySoundBlock.pure.js +2 -1
  102. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlaySoundBlock.pure.js.map +1 -1
  103. package/FlowGraph/Blocks/Execution/Audio/flowGraphSetSoundVolumeBlock.pure.d.ts +3 -3
  104. package/FlowGraph/Blocks/Execution/Audio/flowGraphSetSoundVolumeBlock.pure.js +2 -1
  105. package/FlowGraph/Blocks/Execution/Audio/flowGraphSetSoundVolumeBlock.pure.js.map +1 -1
  106. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopSoundBlock.pure.d.ts +3 -3
  107. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopSoundBlock.pure.js +2 -1
  108. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopSoundBlock.pure.js.map +1 -1
  109. package/FlowGraph/Blocks/allBlocks.pure.js +2 -0
  110. package/FlowGraph/Blocks/allBlocks.pure.js.map +1 -1
  111. package/FlowGraph/Blocks/flowGraphBlockFactory.js +2 -0
  112. package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
  113. package/FlowGraph/Blocks/flowGraphBlockNames.d.ts +1 -0
  114. package/FlowGraph/Blocks/flowGraphBlockNames.js +1 -0
  115. package/FlowGraph/Blocks/flowGraphBlockNames.js.map +1 -1
  116. package/FlowGraph/flowGraph.d.ts +12 -1
  117. package/FlowGraph/flowGraph.js +38 -0
  118. package/FlowGraph/flowGraph.js.map +1 -1
  119. package/FlowGraph/flowGraphCoordinator.d.ts +44 -0
  120. package/FlowGraph/flowGraphCoordinator.js +141 -0
  121. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  122. package/FlowGraph/flowGraphDataConnection.pure.js +41 -14
  123. package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
  124. package/FlowGraph/flowGraphParser.js +105 -5
  125. package/FlowGraph/flowGraphParser.js.map +1 -1
  126. package/FlowGraph/flowGraphSoundAssets.d.ts +40 -0
  127. package/FlowGraph/flowGraphSoundAssets.js +33 -0
  128. package/FlowGraph/flowGraphSoundAssets.js.map +1 -0
  129. package/FlowGraph/index.d.ts +1 -0
  130. package/FlowGraph/index.js +1 -0
  131. package/FlowGraph/index.js.map +1 -1
  132. package/FlowGraph/pure.d.ts +1 -0
  133. package/FlowGraph/pure.js +1 -0
  134. package/FlowGraph/pure.js.map +1 -1
  135. package/FlowGraph/serialization.d.ts +8 -0
  136. package/FlowGraph/serialization.js +31 -12
  137. package/FlowGraph/serialization.js.map +1 -1
  138. package/FlowGraph/typeDefinitions.d.ts +25 -0
  139. package/FlowGraph/typeDefinitions.js.map +1 -1
  140. package/FrameGraph/Tasks/PostProcesses/taaTask.js +2 -0
  141. package/FrameGraph/Tasks/PostProcesses/taaTask.js.map +1 -1
  142. package/Instrumentation/engineInstrumentation.d.ts +1 -0
  143. package/Instrumentation/engineInstrumentation.js +25 -6
  144. package/Instrumentation/engineInstrumentation.js.map +1 -1
  145. package/Lights/Clustered/clusteredLightContainer.pure.js +2 -0
  146. package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
  147. package/Lights/Shadows/cascadedShadowGenerator.pure.d.ts +36 -1
  148. package/Lights/Shadows/cascadedShadowGenerator.pure.js +202 -27
  149. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
  150. package/Lights/directionalLight.pure.d.ts +24 -10
  151. package/Lights/directionalLight.pure.js +29 -11
  152. package/Lights/directionalLight.pure.js.map +1 -1
  153. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +4 -4
  154. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  155. package/Materials/Node/Blocks/Dual/lightBlock.pure.js +1 -1
  156. package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
  157. package/Materials/Node/Blocks/Input/inputBlock.pure.js +4 -0
  158. package/Materials/Node/Blocks/Input/inputBlock.pure.js.map +1 -1
  159. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.d.ts +9 -0
  160. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +23 -3
  161. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
  162. package/Materials/PBR/openpbrMaterial.pure.js +1 -1
  163. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  164. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +9 -0
  165. package/Materials/PBR/pbrBaseMaterial.pure.js +60 -1
  166. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  167. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +11 -0
  168. package/Materials/PBR/pbrBaseSimpleMaterial.js +21 -2
  169. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  170. package/Materials/PBR/pbrMaterial.pure.d.ts +12 -0
  171. package/Materials/PBR/pbrMaterial.pure.js +23 -3
  172. package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
  173. package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +1 -0
  174. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +10 -0
  175. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
  176. package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +5 -0
  177. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +7 -0
  178. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -1
  179. package/Materials/Textures/HTML/htmlInteractionManager.d.ts +9 -3
  180. package/Materials/Textures/HTML/htmlInteractionManager.js +64 -5
  181. package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -1
  182. package/Materials/Textures/HTML/htmlTexture.d.ts +11 -11
  183. package/Materials/Textures/HTML/htmlTexture.js +106 -65
  184. package/Materials/Textures/HTML/htmlTexture.js.map +1 -1
  185. package/Materials/Textures/Loaders/internalTextureLoader.d.ts +2 -1
  186. package/Materials/Textures/Loaders/internalTextureLoader.js.map +1 -1
  187. package/Materials/Textures/Loaders/ktxTextureLoader.d.ts +2 -1
  188. package/Materials/Textures/Loaders/ktxTextureLoader.js +4 -50
  189. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  190. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +10 -0
  191. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  192. package/Materials/Textures/dynamicTexture.pure.js +6 -0
  193. package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
  194. package/Materials/Textures/ktx2encoderTypes.d.ts +51 -0
  195. package/Materials/Textures/ktx2encoderTypes.js +2 -0
  196. package/Materials/Textures/ktx2encoderTypes.js.map +1 -0
  197. package/Materials/Textures/renderTargetTexture.pure.js +10 -2
  198. package/Materials/Textures/renderTargetTexture.pure.js.map +1 -1
  199. package/Materials/Textures/texture.pure.js +7 -1
  200. package/Materials/Textures/texture.pure.js.map +1 -1
  201. package/Materials/Textures/textureMerger.d.ts +11 -0
  202. package/Materials/Textures/textureMerger.js +34 -19
  203. package/Materials/Textures/textureMerger.js.map +1 -1
  204. package/Materials/Textures/textureProcessor.d.ts +145 -0
  205. package/Materials/Textures/textureProcessor.js +445 -45
  206. package/Materials/Textures/textureProcessor.js.map +1 -1
  207. package/Materials/Textures/textureSampling.functions.d.ts +41 -0
  208. package/Materials/Textures/textureSampling.functions.js +82 -0
  209. package/Materials/Textures/textureSampling.functions.js.map +1 -0
  210. package/Materials/drawWrapper.d.ts +8 -0
  211. package/Materials/drawWrapper.js +19 -0
  212. package/Materials/drawWrapper.js.map +1 -1
  213. package/Materials/effect.pure.d.ts +6 -0
  214. package/Materials/effect.pure.js +28 -6
  215. package/Materials/effect.pure.js.map +1 -1
  216. package/Materials/effect.webgl.functions.pure.js +1 -1
  217. package/Materials/effect.webgl.functions.pure.js.map +1 -1
  218. package/Materials/material.pure.d.ts +5 -0
  219. package/Materials/material.pure.js +9 -2
  220. package/Materials/material.pure.js.map +1 -1
  221. package/Materials/materialFlags.d.ts +6 -0
  222. package/Materials/materialFlags.js +14 -0
  223. package/Materials/materialFlags.js.map +1 -1
  224. package/Materials/materialHelper.functions.d.ts +2 -1
  225. package/Materials/materialHelper.functions.js +36 -2
  226. package/Materials/materialHelper.functions.js.map +1 -1
  227. package/Materials/materialHelper.geometryrendering.js +19 -16
  228. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  229. package/Materials/materialPluginManager.pure.js +12 -8
  230. package/Materials/materialPluginManager.pure.js.map +1 -1
  231. package/Materials/prePassConfiguration.js +19 -16
  232. package/Materials/prePassConfiguration.js.map +1 -1
  233. package/Materials/shaderMaterial.pure.js +19 -6
  234. package/Materials/shaderMaterial.pure.js.map +1 -1
  235. package/Materials/shadowDepthWrapper.d.ts +6 -0
  236. package/Materials/shadowDepthWrapper.js +17 -0
  237. package/Materials/shadowDepthWrapper.js.map +1 -1
  238. package/Meshes/Compression/dracoCodec.d.ts +14 -0
  239. package/Meshes/Compression/dracoCodec.js +22 -0
  240. package/Meshes/Compression/dracoCodec.js.map +1 -1
  241. package/Meshes/Compression/dracoDecoder.d.ts +1 -0
  242. package/Meshes/Compression/dracoDecoder.js +27 -0
  243. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  244. package/Meshes/Compression/dracoEncoder.d.ts +1 -0
  245. package/Meshes/Compression/dracoEncoder.js +8 -0
  246. package/Meshes/Compression/dracoEncoder.js.map +1 -1
  247. package/Meshes/Compression/meshoptCompression.d.ts +1 -0
  248. package/Meshes/Compression/meshoptCompression.js +9 -0
  249. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  250. package/Meshes/GaussianSplatting/gaussianSplattingGpuSorter.d.ts +415 -0
  251. package/Meshes/GaussianSplatting/gaussianSplattingGpuSorter.js +912 -0
  252. package/Meshes/GaussianSplatting/gaussianSplattingGpuSorter.js.map +1 -0
  253. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +3 -0
  254. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +40 -9
  255. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  256. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +112 -8
  257. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +696 -74
  258. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  259. package/Meshes/abstractMesh.pure.js +12 -4
  260. package/Meshes/abstractMesh.pure.js.map +1 -1
  261. package/Meshes/geometry.d.ts +5 -0
  262. package/Meshes/geometry.js +25 -0
  263. package/Meshes/geometry.js.map +1 -1
  264. package/Meshes/index.d.ts +1 -0
  265. package/Meshes/index.js +1 -0
  266. package/Meshes/index.js.map +1 -1
  267. package/Meshes/mesh.pure.d.ts +7 -0
  268. package/Meshes/mesh.pure.js +18 -13
  269. package/Meshes/mesh.pure.js.map +1 -1
  270. package/Meshes/pure.d.ts +1 -0
  271. package/Meshes/pure.js +1 -0
  272. package/Meshes/pure.js.map +1 -1
  273. package/Meshes/subMesh.pure.d.ts +3 -0
  274. package/Meshes/subMesh.pure.js +26 -0
  275. package/Meshes/subMesh.pure.js.map +1 -1
  276. package/Meshes/thinInstanceMesh.pure.js +5 -3
  277. package/Meshes/thinInstanceMesh.pure.js.map +1 -1
  278. package/Misc/index.d.ts +1 -0
  279. package/Misc/index.js +1 -0
  280. package/Misc/index.js.map +1 -1
  281. package/Misc/khronosTextureContainer2.d.ts +3 -2
  282. package/Misc/khronosTextureContainer2.js +24 -6
  283. package/Misc/khronosTextureContainer2.js.map +1 -1
  284. package/Misc/khronosTextureContainer2Encoder.d.ts +166 -0
  285. package/Misc/khronosTextureContainer2Encoder.js +556 -0
  286. package/Misc/khronosTextureContainer2Encoder.js.map +1 -0
  287. package/Misc/khronosTextureContainer2EncoderWorker.d.ts +61 -0
  288. package/Misc/khronosTextureContainer2EncoderWorker.js +55 -0
  289. package/Misc/khronosTextureContainer2EncoderWorker.js.map +1 -0
  290. package/Misc/pure.d.ts +1 -0
  291. package/Misc/pure.js +1 -0
  292. package/Misc/pure.js.map +1 -1
  293. package/Misc/textureFormat.functions.d.ts +6 -0
  294. package/Misc/textureFormat.functions.js +54 -0
  295. package/Misc/textureFormat.functions.js.map +1 -0
  296. package/Misc/textureTools.d.ts +6 -2
  297. package/Misc/textureTools.js +100 -42
  298. package/Misc/textureTools.js.map +1 -1
  299. package/Misc/tools.pure.js +1 -1
  300. package/Misc/tools.pure.js.map +1 -1
  301. package/Particles/Node/Blocks/systemBlock.pure.d.ts +1 -1
  302. package/Particles/Node/Blocks/systemBlock.pure.js +6 -3
  303. package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
  304. package/Particles/computeShaderParticleSystem.pure.js +5 -0
  305. package/Particles/computeShaderParticleSystem.pure.js.map +1 -1
  306. package/Particles/gpuParticleSystem.pure.d.ts +2 -0
  307. package/Particles/gpuParticleSystem.pure.js +25 -1
  308. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  309. package/Particles/solidParticle.d.ts +5 -0
  310. package/Particles/solidParticle.js +5 -0
  311. package/Particles/solidParticle.js.map +1 -1
  312. package/Particles/solidParticleSystem.d.ts +10 -0
  313. package/Particles/solidParticleSystem.js +72 -13
  314. package/Particles/solidParticleSystem.js.map +1 -1
  315. package/Particles/thinParticleSystem.pure.js +4 -0
  316. package/Particles/thinParticleSystem.pure.js.map +1 -1
  317. package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.pure.d.ts +27 -6
  318. package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.pure.js +60 -5
  319. package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.pure.js.map +1 -1
  320. package/PostProcesses/thinTAAPostProcess.d.ts +1 -0
  321. package/PostProcesses/thinTAAPostProcess.js +17 -1
  322. package/PostProcesses/thinTAAPostProcess.js.map +1 -1
  323. package/PostProcesses/volumetricLightScatteringPostProcess.pure.d.ts +2 -1
  324. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +6 -5
  325. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
  326. package/Rendering/boundingBoxRenderer.pure.js +2 -3
  327. package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
  328. package/Rendering/geometryBufferRenderer.pure.js +8 -2
  329. package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
  330. package/Rendering/objectRenderer.d.ts +1 -0
  331. package/Rendering/objectRenderer.js +14 -0
  332. package/Rendering/objectRenderer.js.map +1 -1
  333. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +2 -2
  334. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
  335. package/Shaders/ShadersInclude/bumpVertex.js +1 -1
  336. package/Shaders/ShadersInclude/bumpVertex.js.map +1 -1
  337. package/Shaders/ShadersInclude/bumpVertexDeclaration.js +1 -1
  338. package/Shaders/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
  339. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +5 -1
  340. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  341. package/Shaders/ShadersInclude/helperFunctions.js +2 -2
  342. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  343. package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js +1 -1
  344. package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -1
  345. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js +6 -0
  346. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js.map +1 -1
  347. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +11 -1
  348. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
  349. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +9 -0
  350. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
  351. package/Shaders/ShadersInclude/pbrBlockReflectance.js +1 -1
  352. package/Shaders/ShadersInclude/pbrBlockReflectance.js.map +1 -1
  353. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js +1 -1
  354. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -1
  355. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +7 -1
  356. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  357. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +1 -0
  358. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  359. package/Shaders/ShadersInclude/pbrIBLFunctions.js +12 -0
  360. package/Shaders/ShadersInclude/pbrIBLFunctions.js.map +1 -1
  361. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  362. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  363. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +3 -0
  364. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  365. package/Shaders/geometry.vertex.js +6 -6
  366. package/Shaders/geometry.vertex.js.map +1 -1
  367. package/Shaders/gpuUpdateParticles.vertex.js +1 -1
  368. package/Shaders/gpuUpdateParticles.vertex.js.map +1 -1
  369. package/Shaders/lod.fragment.js +15 -2
  370. package/Shaders/lod.fragment.js.map +1 -1
  371. package/Shaders/lod3D.fragment.js +15 -2
  372. package/Shaders/lod3D.fragment.js.map +1 -1
  373. package/Shaders/lodCube.fragment.js +15 -2
  374. package/Shaders/lodCube.fragment.js.map +1 -1
  375. package/Shaders/openpbr.vertex.js +2 -0
  376. package/Shaders/openpbr.vertex.js.map +1 -1
  377. package/Shaders/pbr.fragment.js +12 -1
  378. package/Shaders/pbr.fragment.js.map +1 -1
  379. package/Shaders/pbr.vertex.js +2 -0
  380. package/Shaders/pbr.vertex.js.map +1 -1
  381. package/Shaders/textureMerger.fragment.js +28 -0
  382. package/Shaders/textureMerger.fragment.js.map +1 -1
  383. package/Shaders/textureProcessor.fragment.js +26 -4
  384. package/Shaders/textureProcessor.fragment.js.map +1 -1
  385. package/Shaders/volumetricLightScattering.fragment.js +1 -1
  386. package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
  387. package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js +2 -2
  388. package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
  389. package/ShadersWGSL/ShadersInclude/bumpVertex.js +1 -1
  390. package/ShadersWGSL/ShadersInclude/bumpVertex.js.map +1 -1
  391. package/ShadersWGSL/ShadersInclude/bumpVertexDeclaration.js +1 -1
  392. package/ShadersWGSL/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
  393. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +1 -1
  394. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  395. package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
  396. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  397. package/ShadersWGSL/ShadersInclude/lightFragment.js +44 -2
  398. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  399. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js +17 -3
  400. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js.map +1 -1
  401. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js +12 -1
  402. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  403. package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js +1 -1
  404. package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -1
  405. package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js +11 -1
  406. package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
  407. package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js +9 -0
  408. package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
  409. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js +1 -1
  410. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js.map +1 -1
  411. package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js +1 -1
  412. package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -1
  413. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
  414. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  415. package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js +1 -0
  416. package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  417. package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js +8 -0
  418. package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js.map +1 -1
  419. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +1 -1
  420. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  421. package/ShadersWGSL/ShadersInclude/prePassVertex.js +2 -2
  422. package/ShadersWGSL/ShadersInclude/prePassVertex.js.map +1 -1
  423. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js +1 -1
  424. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  425. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +3 -1
  426. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  427. package/ShadersWGSL/ShadersInclude/shadowsVertex.js +16 -0
  428. package/ShadersWGSL/ShadersInclude/shadowsVertex.js.map +1 -1
  429. package/ShadersWGSL/default.fragment.js +4 -4
  430. package/ShadersWGSL/default.fragment.js.map +1 -1
  431. package/ShadersWGSL/default.vertex.js +1 -1
  432. package/ShadersWGSL/default.vertex.js.map +1 -1
  433. package/ShadersWGSL/gaussianSplatting.vertex.js +3 -3
  434. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  435. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  436. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  437. package/ShadersWGSL/gsSortCount.compute.d.ts +5 -0
  438. package/ShadersWGSL/gsSortCount.compute.js +19 -0
  439. package/ShadersWGSL/gsSortCount.compute.js.map +1 -0
  440. package/ShadersWGSL/gsSortKeys.compute.d.ts +5 -0
  441. package/ShadersWGSL/gsSortKeys.compute.js +49 -0
  442. package/ShadersWGSL/gsSortKeys.compute.js.map +1 -0
  443. package/ShadersWGSL/gsSortOutput.compute.d.ts +5 -0
  444. package/ShadersWGSL/gsSortOutput.compute.js +28 -0
  445. package/ShadersWGSL/gsSortOutput.compute.js.map +1 -0
  446. package/ShadersWGSL/gsSortScanLocal.compute.d.ts +5 -0
  447. package/ShadersWGSL/gsSortScanLocal.compute.js +23 -0
  448. package/ShadersWGSL/gsSortScanLocal.compute.js.map +1 -0
  449. package/ShadersWGSL/gsSortScanSums.compute.d.ts +5 -0
  450. package/ShadersWGSL/gsSortScanSums.compute.js +19 -0
  451. package/ShadersWGSL/gsSortScanSums.compute.js.map +1 -0
  452. package/ShadersWGSL/gsSortScatter.compute.d.ts +5 -0
  453. package/ShadersWGSL/gsSortScatter.compute.js +33 -0
  454. package/ShadersWGSL/gsSortScatter.compute.js.map +1 -0
  455. package/ShadersWGSL/lod.fragment.js +14 -2
  456. package/ShadersWGSL/lod.fragment.js.map +1 -1
  457. package/ShadersWGSL/lod3D.fragment.js +14 -2
  458. package/ShadersWGSL/lod3D.fragment.js.map +1 -1
  459. package/ShadersWGSL/lodCube.fragment.js +14 -2
  460. package/ShadersWGSL/lodCube.fragment.js.map +1 -1
  461. package/ShadersWGSL/openpbr.vertex.js +3 -1
  462. package/ShadersWGSL/openpbr.vertex.js.map +1 -1
  463. package/ShadersWGSL/pbr.fragment.js +11 -0
  464. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  465. package/ShadersWGSL/pbr.vertex.js +3 -1
  466. package/ShadersWGSL/pbr.vertex.js.map +1 -1
  467. package/ShadersWGSL/textureMerger.fragment.js +40 -4
  468. package/ShadersWGSL/textureMerger.fragment.js.map +1 -1
  469. package/ShadersWGSL/textureProcessor.fragment.js +26 -4
  470. package/ShadersWGSL/textureProcessor.fragment.js.map +1 -1
  471. package/Sprites/spriteRenderer.js +15 -5
  472. package/Sprites/spriteRenderer.js.map +1 -1
  473. package/package.json +1 -1
  474. package/scene.pure.d.ts +23 -1
  475. package/scene.pure.js +83 -1
  476. package/scene.pure.js.map +1 -1
@@ -0,0 +1,61 @@
1
+ import { type _IKTX2EncoderDefaultOptions, type IKTX2EncoderOptions } from "../Materials/Textures/ktx2encoderTypes.js";
2
+ /** @internal */
3
+ export interface IKTX2EncoderInstance {
4
+ _initializeAsync(): Promise<void>;
5
+ encode(rgba: Uint8Array, width: number, height: number, options: IKTX2EncoderOptions): Promise<Uint8Array>;
6
+ }
7
+ /**
8
+ * Basis Universal encoder factory, such as the BASIS global defined by basis_encoder.js.
9
+ * @internal
10
+ */
11
+ export type _KTX2EncoderBasisFactory = (options: {
12
+ wasmBinary: ArrayBuffer | Uint8Array;
13
+ }) => unknown;
14
+ /** @internal */
15
+ export interface IKTX2EncoderModule {
16
+ KTX2Encoder: {
17
+ new (): IKTX2EncoderInstance;
18
+ JSModule: unknown;
19
+ WasmBinary: ArrayBuffer | null;
20
+ JSModuleURL: string;
21
+ WasmModuleURL: string;
22
+ DefaultEncoderOptions: _IKTX2EncoderDefaultOptions;
23
+ };
24
+ }
25
+ /** @internal */
26
+ export type KTX2EncoderWorkerRequest = {
27
+ action: "init";
28
+ id: number;
29
+ jsEncoderModuleUrl: string;
30
+ basisJsUrl: string;
31
+ wasmBinary: ArrayBuffer;
32
+ } | {
33
+ action: "setDefaultEncoderOptions";
34
+ options: _IKTX2EncoderDefaultOptions;
35
+ } | {
36
+ action: "encode";
37
+ id: number;
38
+ rgba: Uint8Array;
39
+ width: number;
40
+ height: number;
41
+ options: IKTX2EncoderOptions;
42
+ };
43
+ /** @internal */
44
+ export type KTX2EncoderWorkerReply = {
45
+ action: "init";
46
+ id: number;
47
+ } | {
48
+ action: "encoded";
49
+ id: number;
50
+ data: Uint8Array;
51
+ } | {
52
+ action: "error";
53
+ id: number;
54
+ message: string;
55
+ fatal?: boolean;
56
+ };
57
+ /**
58
+ * Self-contained worker entry point, serialized into a Blob by the core adapter.
59
+ * @internal
60
+ */
61
+ export declare function KTX2EncoderWorkerFunction(): void;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Self-contained worker entry point, serialized into a Blob by the core adapter.
3
+ * @internal
4
+ */
5
+ export function KTX2EncoderWorkerFunction() {
6
+ let encoder;
7
+ onmessage = (event) => {
8
+ const request = event.data;
9
+ if (request.action === "setDefaultEncoderOptions") {
10
+ if (typeof KTX2ENCODER !== "undefined") {
11
+ KTX2ENCODER.KTX2Encoder.DefaultEncoderOptions = request.options;
12
+ }
13
+ return;
14
+ }
15
+ const fail = (error) => postMessage({ action: "error", id: request.id, message: error instanceof Error ? error.message : String(error), fatal: error instanceof WebAssembly.RuntimeError });
16
+ try {
17
+ if (request.action === "init") {
18
+ if (typeof KTX2ENCODER === "undefined") {
19
+ importScripts(request.jsEncoderModuleUrl);
20
+ }
21
+ if (typeof BASIS === "undefined") {
22
+ importScripts(request.basisJsUrl);
23
+ }
24
+ // Avoid async helpers outside this serialized function in ES2015 bundles.
25
+ KTX2ENCODER.KTX2Encoder.JSModule = BASIS;
26
+ KTX2ENCODER.KTX2Encoder.WasmBinary = request.wasmBinary;
27
+ const initialized = new KTX2ENCODER.KTX2Encoder();
28
+ initialized
29
+ ._initializeAsync()
30
+ // eslint-disable-next-line github/no-then
31
+ .then(() => {
32
+ encoder = initialized;
33
+ postMessage({ action: "init", id: request.id });
34
+ })
35
+ // eslint-disable-next-line github/no-then
36
+ .catch(fail);
37
+ }
38
+ else {
39
+ if (!encoder) {
40
+ throw new Error("KTX2 encoder worker is not initialized.");
41
+ }
42
+ encoder
43
+ .encode(request.rgba, request.width, request.height, request.options)
44
+ // eslint-disable-next-line github/no-then
45
+ .then((data) => postMessage({ action: "encoded", id: request.id, data }, [data.buffer]))
46
+ // eslint-disable-next-line github/no-then
47
+ .catch(fail);
48
+ }
49
+ }
50
+ catch (error) {
51
+ fail(error);
52
+ }
53
+ };
54
+ }
55
+ //# sourceMappingURL=khronosTextureContainer2EncoderWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"khronosTextureContainer2EncoderWorker.js","sourceRoot":"","sources":["../../../../dev/core/src/Misc/khronosTextureContainer2EncoderWorker.ts"],"names":[],"mappings":"AA0CA;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACrC,IAAI,OAAyC,CAAC;IAC9C,SAAS,GAAG,CAAC,KAA6C,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,0BAA0B,EAAE,CAAC;YAChD,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;gBACrC,WAAW,CAAC,WAAW,CAAC,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;YACpE,CAAC;YACD,OAAO;QACX,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE,CAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;QACxK,IAAI,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5B,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;oBACrC,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;oBAC/B,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACtC,CAAC;gBACD,0EAA0E;gBAC1E,WAAW,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACzC,WAAW,CAAC,WAAW,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;gBACxD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;gBAClD,WAAW;qBACN,gBAAgB,EAAE;oBACnB,0CAA0C;qBACzC,IAAI,CAAC,GAAG,EAAE;oBACP,OAAO,GAAG,WAAW,CAAC;oBACtB,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpD,CAAC,CAAC;oBACF,0CAA0C;qBACzC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAC/D,CAAC;gBACD,OAAO;qBACF,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;oBACrE,0CAA0C;qBACzC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAqB,CAAC,CAAC,CAAC;oBACvG,0CAA0C;qBACzC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;AACN,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { type _IKTX2EncoderDefaultOptions, type IKTX2EncoderOptions } from \"../Materials/Textures/ktx2encoderTypes\";\n\n/** @internal */\nexport interface IKTX2EncoderInstance {\n _initializeAsync(): Promise<void>;\n encode(rgba: Uint8Array, width: number, height: number, options: IKTX2EncoderOptions): Promise<Uint8Array>;\n}\n\n/**\n * Basis Universal encoder factory, such as the BASIS global defined by basis_encoder.js.\n * @internal\n */\nexport type _KTX2EncoderBasisFactory = (options: { wasmBinary: ArrayBuffer | Uint8Array }) => unknown;\n\n/** @internal */\nexport interface IKTX2EncoderModule {\n KTX2Encoder: {\n new (): IKTX2EncoderInstance;\n JSModule: unknown;\n WasmBinary: ArrayBuffer | null;\n JSModuleURL: string;\n WasmModuleURL: string;\n DefaultEncoderOptions: _IKTX2EncoderDefaultOptions;\n };\n}\n\n/** @internal */\nexport type KTX2EncoderWorkerRequest =\n | { action: \"init\"; id: number; jsEncoderModuleUrl: string; basisJsUrl: string; wasmBinary: ArrayBuffer }\n | { action: \"setDefaultEncoderOptions\"; options: _IKTX2EncoderDefaultOptions }\n | { action: \"encode\"; id: number; rgba: Uint8Array; width: number; height: number; options: IKTX2EncoderOptions };\n\n/** @internal */\nexport type KTX2EncoderWorkerReply =\n { action: \"init\"; id: number } | { action: \"encoded\"; id: number; data: Uint8Array } | { action: \"error\"; id: number; message: string; fatal?: boolean };\n\ndeclare const KTX2ENCODER: IKTX2EncoderModule;\ndeclare const BASIS: unknown;\ndeclare function importScripts(...urls: string[]): void;\ndeclare function postMessage(message: KTX2EncoderWorkerReply, transfer?: Transferable[]): void;\n\n/**\n * Self-contained worker entry point, serialized into a Blob by the core adapter.\n * @internal\n */\nexport function KTX2EncoderWorkerFunction(): void {\n let encoder: IKTX2EncoderInstance | undefined;\n onmessage = (event: MessageEvent<KTX2EncoderWorkerRequest>) => {\n const request = event.data;\n if (request.action === \"setDefaultEncoderOptions\") {\n if (typeof KTX2ENCODER !== \"undefined\") {\n KTX2ENCODER.KTX2Encoder.DefaultEncoderOptions = request.options;\n }\n return;\n }\n const fail = (error: unknown) =>\n postMessage({ action: \"error\", id: request.id, message: error instanceof Error ? error.message : String(error), fatal: error instanceof WebAssembly.RuntimeError });\n try {\n if (request.action === \"init\") {\n if (typeof KTX2ENCODER === \"undefined\") {\n importScripts(request.jsEncoderModuleUrl);\n }\n if (typeof BASIS === \"undefined\") {\n importScripts(request.basisJsUrl);\n }\n // Avoid async helpers outside this serialized function in ES2015 bundles.\n KTX2ENCODER.KTX2Encoder.JSModule = BASIS;\n KTX2ENCODER.KTX2Encoder.WasmBinary = request.wasmBinary;\n const initialized = new KTX2ENCODER.KTX2Encoder();\n initialized\n ._initializeAsync()\n // eslint-disable-next-line github/no-then\n .then(() => {\n encoder = initialized;\n postMessage({ action: \"init\", id: request.id });\n })\n // eslint-disable-next-line github/no-then\n .catch(fail);\n } else {\n if (!encoder) {\n throw new Error(\"KTX2 encoder worker is not initialized.\");\n }\n encoder\n .encode(request.rgba, request.width, request.height, request.options)\n // eslint-disable-next-line github/no-then\n .then((data) => postMessage({ action: \"encoded\", id: request.id, data }, [data.buffer as ArrayBuffer]))\n // eslint-disable-next-line github/no-then\n .catch(fail);\n }\n } catch (error) {\n fail(error);\n }\n };\n}\n"]}
package/Misc/pure.d.ts CHANGED
@@ -53,6 +53,7 @@ export * from "./depthReducer.js";
53
53
  export * from "./dataStorage.js";
54
54
  export * from "./sceneRecorder.js";
55
55
  export * from "./khronosTextureContainer2.js";
56
+ export * from "./khronosTextureContainer2Encoder.js";
56
57
  export * from "./trajectoryClassifier.js";
57
58
  export * from "./timer.js";
58
59
  export * from "./copyTools.js";
package/Misc/pure.js CHANGED
@@ -54,6 +54,7 @@ export * from "./depthReducer.js";
54
54
  export * from "./dataStorage.js";
55
55
  export * from "./sceneRecorder.js";
56
56
  export * from "./khronosTextureContainer2.js";
57
+ export * from "./khronosTextureContainer2Encoder.js";
57
58
  export * from "./trajectoryClassifier.js";
58
59
  export * from "./timer.js";
59
60
  export * from "./copyTools.js";
package/Misc/pure.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Misc/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,iCAAiC,CAAC;AAChD,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AACxI,cAAc,mBAAmB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./andOrNotEvaluator\";\nexport * from \"./assetsManager\";\nexport * from \"./basis.pure\";\nexport * from \"./dds.pure\";\nexport * from \"./decorators\";\nexport * from \"./deferred\";\nexport * from \"./environmentTextureTools.pure\";\nexport * from \"./meshExploder\";\nexport * from \"./filesInput\";\nexport * from \"./HighDynamicRange/pure\";\nexport * from \"./khronosTextureContainer\";\nexport * from \"./observable.pure\";\nexport * from \"./observable.extensions.pure\";\nexport * from \"./performanceMonitor\";\nexport * from \"./sceneOptimizer\";\nexport * from \"./sceneSerializer\";\nexport * from \"./shaderImportLoader\";\nexport * from \"./smartArray\";\nexport * from \"./stringDictionary\";\nexport * from \"./tags\";\nexport * from \"./textureTools\";\nexport * from \"./arrayTools\";\nexport * from \"./tga\";\nexport * from \"./tools.pure\";\nexport * from \"./videoRecorder\";\nexport * from \"./virtualJoystick\";\nexport * from \"./workerPool\";\nexport * from \"./logger\";\nexport * from \"./typeStore\";\nexport * from \"./filesInputStore\";\nexport * from \"./deepCopier\";\nexport * from \"./deepMerger\";\nexport * from \"./pivotTools\";\nexport * from \"./precisionDate\";\nexport * from \"./screenshotTools.pure\";\nexport * from \"./webRequest\";\nexport * from \"./iInspectable\";\nexport * from \"./brdfTextureTools\";\nexport * from \"./rgbdTextureTools\";\nexport * from \"./gradients\";\nexport * from \"./perfCounter\";\nexport * from \"./fileRequest\";\nexport * from \"./customAnimationFrameRequester\";\nexport * from \"./retryStrategy\";\nexport * from \"./interfaces/screenshotSize\";\nexport * from \"./interfaces/iPerfViewer\";\nexport * from \"./fileTools.pure\";\nexport * from \"./stringTools\";\nexport * from \"./dataReader\";\nexport * from \"./minMaxReducer.pure\";\nexport * from \"./depthReducer\";\nexport * from \"./dataStorage\";\nexport * from \"./sceneRecorder\";\nexport * from \"./khronosTextureContainer2\";\nexport * from \"./trajectoryClassifier\";\nexport * from \"./timer\";\nexport * from \"./copyTools\";\nexport * from \"./reflector\";\nexport * from \"./domManagement\";\nexport * from \"./pressureObserverWrapper\";\nexport * from \"./PerformanceViewer/pure\";\nexport * from \"./coroutine\";\nexport * from \"./guid\";\nexport * from \"./error\";\nexport * from \"./snapshotRenderingHelper\";\nexport * from \"./observableCoroutine.pure\";\nexport * from \"./copyTextureToTexture\";\nexport * from \"./areaLightsTextureTools\";\nexport { DumpTools, EncodeImageAsync } from \"./dumpTools.pure\";\nexport * from \"./greasedLineTools\";\nexport * from \"./equirectangularCapture.pure\";\nexport * from \"./decorators.serialization\";\nexport * from \"./asyncLock\";\nexport * from \"./bitArray\";\nexport * from \"./urlTools\";\nexport * from \"./lazy\";\nexport * from \"./uniqueIdGenerator\";\nexport { workerFunction as KTX2WorkerFunction, initializeWebWorker as KTX2InitializeWebWorker } from \"./khronosTextureContainer2Worker\";\nexport * from \"./tools.internals\";\n"]}
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Misc/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,iCAAiC,CAAC;AAChD,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AACxI,cAAc,mBAAmB,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./andOrNotEvaluator\";\nexport * from \"./assetsManager\";\nexport * from \"./basis.pure\";\nexport * from \"./dds.pure\";\nexport * from \"./decorators\";\nexport * from \"./deferred\";\nexport * from \"./environmentTextureTools.pure\";\nexport * from \"./meshExploder\";\nexport * from \"./filesInput\";\nexport * from \"./HighDynamicRange/pure\";\nexport * from \"./khronosTextureContainer\";\nexport * from \"./observable.pure\";\nexport * from \"./observable.extensions.pure\";\nexport * from \"./performanceMonitor\";\nexport * from \"./sceneOptimizer\";\nexport * from \"./sceneSerializer\";\nexport * from \"./shaderImportLoader\";\nexport * from \"./smartArray\";\nexport * from \"./stringDictionary\";\nexport * from \"./tags\";\nexport * from \"./textureTools\";\nexport * from \"./arrayTools\";\nexport * from \"./tga\";\nexport * from \"./tools.pure\";\nexport * from \"./videoRecorder\";\nexport * from \"./virtualJoystick\";\nexport * from \"./workerPool\";\nexport * from \"./logger\";\nexport * from \"./typeStore\";\nexport * from \"./filesInputStore\";\nexport * from \"./deepCopier\";\nexport * from \"./deepMerger\";\nexport * from \"./pivotTools\";\nexport * from \"./precisionDate\";\nexport * from \"./screenshotTools.pure\";\nexport * from \"./webRequest\";\nexport * from \"./iInspectable\";\nexport * from \"./brdfTextureTools\";\nexport * from \"./rgbdTextureTools\";\nexport * from \"./gradients\";\nexport * from \"./perfCounter\";\nexport * from \"./fileRequest\";\nexport * from \"./customAnimationFrameRequester\";\nexport * from \"./retryStrategy\";\nexport * from \"./interfaces/screenshotSize\";\nexport * from \"./interfaces/iPerfViewer\";\nexport * from \"./fileTools.pure\";\nexport * from \"./stringTools\";\nexport * from \"./dataReader\";\nexport * from \"./minMaxReducer.pure\";\nexport * from \"./depthReducer\";\nexport * from \"./dataStorage\";\nexport * from \"./sceneRecorder\";\nexport * from \"./khronosTextureContainer2\";\nexport * from \"./khronosTextureContainer2Encoder\";\nexport * from \"./trajectoryClassifier\";\nexport * from \"./timer\";\nexport * from \"./copyTools\";\nexport * from \"./reflector\";\nexport * from \"./domManagement\";\nexport * from \"./pressureObserverWrapper\";\nexport * from \"./PerformanceViewer/pure\";\nexport * from \"./coroutine\";\nexport * from \"./guid\";\nexport * from \"./error\";\nexport * from \"./snapshotRenderingHelper\";\nexport * from \"./observableCoroutine.pure\";\nexport * from \"./copyTextureToTexture\";\nexport * from \"./areaLightsTextureTools\";\nexport { DumpTools, EncodeImageAsync } from \"./dumpTools.pure\";\nexport * from \"./greasedLineTools\";\nexport * from \"./equirectangularCapture.pure\";\nexport * from \"./decorators.serialization\";\nexport * from \"./asyncLock\";\nexport * from \"./bitArray\";\nexport * from \"./urlTools\";\nexport * from \"./lazy\";\nexport * from \"./uniqueIdGenerator\";\nexport { workerFunction as KTX2WorkerFunction, initializeWebWorker as KTX2InitializeWebWorker } from \"./khronosTextureContainer2Worker\";\nexport * from \"./tools.internals\";\n"]}
@@ -0,0 +1,6 @@
1
+ import { type Nullable } from "../types.js";
2
+ /**
3
+ * Maps a compressed sRGB format to its linear counterpart, or returns null for other formats.
4
+ * @internal
5
+ */
6
+ export declare function MapSRGBToLinear(format: number): Nullable<number>;
@@ -0,0 +1,54 @@
1
+
2
+ /**
3
+ * Maps a compressed sRGB format to its linear counterpart, or returns null for other formats.
4
+ * @internal
5
+ */
6
+ export function MapSRGBToLinear(format) {
7
+ switch (format) {
8
+ case 35916:
9
+ return 33776;
10
+ case 35918:
11
+ return 33778;
12
+ case 35919:
13
+ return 33779;
14
+ case 37493:
15
+ return 37492;
16
+ case 37497:
17
+ return 37496;
18
+ case 37495:
19
+ return 37494;
20
+ case 37840:
21
+ return 37808;
22
+ case 37841:
23
+ return 37809;
24
+ case 37842:
25
+ return 37810;
26
+ case 37843:
27
+ return 37811;
28
+ case 37844:
29
+ return 37812;
30
+ case 37845:
31
+ return 37813;
32
+ case 37846:
33
+ return 37814;
34
+ case 37847:
35
+ return 37815;
36
+ case 37848:
37
+ return 37816;
38
+ case 37849:
39
+ return 37817;
40
+ case 37850:
41
+ return 37818;
42
+ case 37851:
43
+ return 37819;
44
+ case 37852:
45
+ return 37820;
46
+ case 37853:
47
+ return 37821;
48
+ case 36493:
49
+ return 36492;
50
+ default:
51
+ return null;
52
+ }
53
+ }
54
+ //# sourceMappingURL=textureFormat.functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textureFormat.functions.js","sourceRoot":"","sources":["../../../../dev/core/src/Misc/textureFormat.functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC1C,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,SAAS,CAAC,2CAA2C;YACtD,OAAO,SAAS,CAAC,sCAAsC,CAAC;QAC5D,KAAK,SAAS,CAAC,iDAAiD;YAC5D,OAAO,SAAS,CAAC,uCAAuC,CAAC;QAC7D,KAAK,SAAS,CAAC,iDAAiD;YAC5D,OAAO,SAAS,CAAC,uCAAuC,CAAC;QAC7D,KAAK,SAAS,CAAC,mCAAmC;YAC9C,OAAO,SAAS,CAAC,kCAAkC,CAAC;QACxD,KAAK,SAAS,CAAC,8CAA8C;YACzD,OAAO,SAAS,CAAC,uCAAuC,CAAC;QAC7D,KAAK,SAAS,CAAC,uDAAuD;YAClE,OAAO,SAAS,CAAC,sDAAsD,CAAC;QAC5E,KAAK,SAAS,CAAC,kDAAkD;YAC7D,OAAO,SAAS,CAAC,sCAAsC,CAAC;QAC5D,KAAK,SAAS,CAAC,kDAAkD;YAC7D,OAAO,SAAS,CAAC,sCAAsC,CAAC;QAC5D,KAAK,SAAS,CAAC,kDAAkD;YAC7D,OAAO,SAAS,CAAC,sCAAsC,CAAC;QAC5D,KAAK,SAAS,CAAC,kDAAkD;YAC7D,OAAO,SAAS,CAAC,sCAAsC,CAAC;QAC5D,KAAK,SAAS,CAAC,kDAAkD;YAC7D,OAAO,SAAS,CAAC,sCAAsC,CAAC;QAC5D,KAAK,SAAS,CAAC,kDAAkD;YAC7D,OAAO,SAAS,CAAC,sCAAsC,CAAC;QAC5D,KAAK,SAAS,CAAC,kDAAkD;YAC7D,OAAO,SAAS,CAAC,sCAAsC,CAAC;QAC5D,KAAK,SAAS,CAAC,kDAAkD;YAC7D,OAAO,SAAS,CAAC,sCAAsC,CAAC;QAC5D,KAAK,SAAS,CAAC,mDAAmD;YAC9D,OAAO,SAAS,CAAC,uCAAuC,CAAC;QAC7D,KAAK,SAAS,CAAC,mDAAmD;YAC9D,OAAO,SAAS,CAAC,uCAAuC,CAAC;QAC7D,KAAK,SAAS,CAAC,mDAAmD;YAC9D,OAAO,SAAS,CAAC,uCAAuC,CAAC;QAC7D,KAAK,SAAS,CAAC,oDAAoD;YAC/D,OAAO,SAAS,CAAC,wCAAwC,CAAC;QAC9D,KAAK,SAAS,CAAC,oDAAoD;YAC/D,OAAO,SAAS,CAAC,wCAAwC,CAAC;QAC9D,KAAK,SAAS,CAAC,oDAAoD;YAC/D,OAAO,SAAS,CAAC,wCAAwC,CAAC;QAC9D,KAAK,SAAS,CAAC,8CAA8C;YACzD,OAAO,SAAS,CAAC,wCAAwC,CAAC;QAC9D;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC","sourcesContent":["import { Constants } from \"../Engines/constants\";\nimport { type Nullable } from \"../types\";\n\n/**\n * Maps a compressed sRGB format to its linear counterpart, or returns null for other formats.\n * @internal\n */\nexport function MapSRGBToLinear(format: number): Nullable<number> {\n switch (format) {\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_S3TC_DXT1_EXT:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ETC2:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12;\n case Constants.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_BPTC_UNORM:\n return Constants.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM;\n default:\n return null;\n }\n}\n"]}
@@ -26,12 +26,15 @@ export declare function CreateResizedCopy(texture: Texture, width: number, heigh
26
26
  * @returns a promise with the internalTexture having its texture replaced by the result of the processing
27
27
  */
28
28
  export declare function ApplyPostProcess(postProcessName: string, internalTexture: InternalTexture, scene: Scene, type?: number, samplingMode?: number, format?: number, width?: number, height?: number): Promise<InternalTexture>;
29
+ /** @internal */
30
+ export declare function _IsCompressedTextureFormat(format: number): boolean;
29
31
  /**
30
32
  * Waits for when the given texture is ready to be used (downloaded, converted, mip mapped...)
31
33
  * @param texture the texture to wait for
34
+ * @param signal optional signal to abort the readiness wait
32
35
  * @returns a promise that resolves when the texture is ready
33
36
  */
34
- export declare function WhenTextureReadyAsync(texture: BaseTexture): Promise<void>;
37
+ export declare function WhenTextureReadyAsync(texture: BaseTexture, signal?: AbortSignal): Promise<void>;
35
38
  /**
36
39
  * Gets the pixel data of the specified texture, either by reading it directly
37
40
  * or by rendering it to an intermediate RGBA texture and retrieving the bytes from it.
@@ -44,9 +47,10 @@ export declare function WhenTextureReadyAsync(texture: BaseTexture): Promise<voi
44
47
  * @param lod if the texture has multiple LODs, the lod index to use for the source
45
48
  * @param forceRTT if true, forces the use of the RTT path for reading pixels (useful for cube maps to ensure correct orientation and gamma)
46
49
  * @param slice if the texture is 3D, the depth slice index to use for the source
50
+ * @param applyGammaCorrection if true (default), converts linear RTT pixels to display gamma and previews single-channel data as grayscale. If false, preserves sampled channel semantics, including undoing hardware sRGB decoding.
47
51
  * @returns the 8-bit texture data
48
52
  */
49
- export declare function GetTextureDataAsync(texture: BaseTexture, width?: number, height?: number, face?: number, lod?: number, forceRTT?: boolean, slice?: number): Promise<Uint8Array>;
53
+ export declare function GetTextureDataAsync(texture: BaseTexture, width?: number, height?: number, face?: number, lod?: number, forceRTT?: boolean, slice?: number, applyGammaCorrection?: boolean): Promise<Uint8Array>;
50
54
  /**
51
55
  * Class used to host texture specific utilities
52
56
  */
@@ -3,9 +3,13 @@ import { RenderTargetTexture } from "../Materials/Textures/renderTargetTexture.p
3
3
  import { PassPostProcess } from "../PostProcesses/passPostProcess.pure.js";
4
4
 
5
5
  import { PostProcess } from "../PostProcesses/postProcess.pure.js";
6
+ import { MapSRGBToLinear } from "./textureFormat.functions.js";
6
7
  import { Clamp } from "../Maths/math.scalar.functions.js";
7
8
  import { FromHalfFloat, ToHalfFloat } from "./halfFloat.js";
8
9
  export { FromHalfFloat, ToHalfFloat };
10
+ const DisplayGamma = 0;
11
+ const PreserveChannels = 1;
12
+ const RestoreHardwareSRGB = 2;
9
13
  /**
10
14
  * Uses the GPU to create a copy texture rescaled at a given size
11
15
  * @param texture Texture to copy from
@@ -115,8 +119,11 @@ export function ApplyPostProcess(postProcessName, internalTexture, scene, type,
115
119
  });
116
120
  });
117
121
  }
118
- function IsCompressedTextureFormat(format) {
122
+ /** @internal */
123
+ export function _IsCompressedTextureFormat(format) {
119
124
  switch (format) {
125
+ case 0x8c00: // COMPRESSED_RGB_PVRTC_4BPPV1_IMG
126
+ case 0x8c02: // COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
120
127
  case 36492:
121
128
  case 36493:
122
129
  case 36495:
@@ -172,31 +179,59 @@ function IsCompressedTextureFormat(format) {
172
179
  /**
173
180
  * Waits for when the given texture is ready to be used (downloaded, converted, mip mapped...)
174
181
  * @param texture the texture to wait for
182
+ * @param signal optional signal to abort the readiness wait
175
183
  * @returns a promise that resolves when the texture is ready
176
184
  */
177
- export async function WhenTextureReadyAsync(texture) {
185
+ export async function WhenTextureReadyAsync(texture, signal) {
186
+ signal?.throwIfAborted();
178
187
  if (texture.isReady()) {
179
188
  return;
180
189
  }
181
- if (texture.loadingError) {
182
- throw new Error(texture.errorObject?.message || `Texture ${texture.name} errored while loading.`);
183
- }
184
- const onLoadObservable = texture.onLoadObservable;
185
- if (onLoadObservable) {
186
- return await new Promise((res) => onLoadObservable.addOnce(() => res()));
190
+ const internalTexture = texture.getInternalTexture();
191
+ if (texture.loadingError || internalTexture?._loadError) {
192
+ throw new Error(texture.errorObject?.message || internalTexture?._loadError?.message || `Texture ${texture.name} errored while loading.`);
187
193
  }
188
- const onLoadedObservable = texture._texture?.onLoadedObservable;
189
- if (onLoadedObservable) {
190
- return await new Promise((res) => onLoadedObservable.addOnce(() => res()));
194
+ const onLoadObservable = texture.onLoadObservable ?? texture._texture?.onLoadedObservable;
195
+ if (!onLoadObservable) {
196
+ throw new Error(`Cannot determine readiness of texture ${texture.name}.`);
191
197
  }
192
- throw new Error(`Cannot determine readiness of texture ${texture.name}.`);
198
+ await new Promise((resolve, reject) => {
199
+ const cleanup = () => {
200
+ onLoadObservable.removeCallback(onLoad);
201
+ Texture.OnTextureLoadErrorObservable.remove(onError);
202
+ internalTexture?.onErrorObservable.remove(onInternalError ?? null);
203
+ signal?.removeEventListener("abort", onAbort);
204
+ texture.onDisposeObservable.remove(onDispose);
205
+ };
206
+ const fail = (error) => {
207
+ cleanup();
208
+ reject(error);
209
+ };
210
+ const onLoad = () => {
211
+ cleanup();
212
+ resolve();
213
+ };
214
+ const onAbort = () => fail(signal.reason);
215
+ const onError = Texture.OnTextureLoadErrorObservable.add((failedTexture) => {
216
+ if (failedTexture === texture) {
217
+ fail(new Error(texture.errorObject?.message || `Texture ${texture.name} errored while loading.`));
218
+ }
219
+ });
220
+ const onInternalError = internalTexture?.onErrorObservable.add((error) => fail(new Error(error.message || `Texture ${texture.name} errored while loading.`)));
221
+ const onDispose = texture.onDisposeObservable.add(() => fail(new Error(`Texture ${texture.name} was disposed while waiting for readiness.`)));
222
+ onLoadObservable.addOnce(onLoad);
223
+ signal?.addEventListener("abort", onAbort, { once: true });
224
+ if (signal?.aborted) {
225
+ onAbort();
226
+ }
227
+ });
193
228
  }
194
229
  /**
195
230
  * Gets the data of the specified texture by rendering it to an intermediate RGBA texture and retrieving the bytes from it.
196
231
  * This is convienent to get 8-bit RGBA values for a texture in a GPU compressed format, which cannot be read using readPixels.
197
232
  * @internal
198
233
  */
199
- async function ReadPixelsUsingRTT(texture, width, height, face, lod, slice = 0) {
234
+ async function ReadPixelsUsingRTT(texture, width, height, face, lod, slice, applyGammaCorrection) {
200
235
  const scene = texture.getScene();
201
236
  const engine = scene.getEngine();
202
237
  const sourceInternalTexture = texture.getInternalTexture();
@@ -250,23 +285,45 @@ async function ReadPixelsUsingRTT(texture, width, height, face, lod, slice = 0)
250
285
  shaderLanguage: engine.isWebGPU ? 1 /* ShaderLanguage.WGSL */ : 0 /* ShaderLanguage.GLSL */,
251
286
  });
252
287
  }
253
- await new Promise((resolve) => {
254
- lodPostProcess.onEffectCreatedObservable.addOnce((e) => {
255
- e.executeWhenCompiled(() => {
256
- resolve(0);
288
+ let rtt;
289
+ try {
290
+ await new Promise((resolve, reject) => {
291
+ lodPostProcess.onEffectCreatedObservable.addOnce((effect) => {
292
+ const cleanup = () => {
293
+ effect.onCompileObservable.remove(onCompile);
294
+ effect.onErrorObservable.remove(onError);
295
+ };
296
+ const onCompile = effect.onCompileObservable.addOnce(() => {
297
+ cleanup();
298
+ resolve();
299
+ });
300
+ const onError = effect.onErrorObservable.addOnce(() => {
301
+ cleanup();
302
+ reject(new Error(effect.getCompilationError() || "Texture readback shader compilation failed."));
303
+ });
304
+ const compilationError = effect.getCompilationError();
305
+ if (compilationError) {
306
+ cleanup();
307
+ reject(new Error(compilationError));
308
+ }
309
+ else if (effect.isReady()) {
310
+ cleanup();
311
+ resolve();
312
+ }
257
313
  });
258
314
  });
259
- });
260
- const rtt = new RenderTargetTexture("temp", { width: width, height: height }, scene, false);
261
- lodPostProcess.onApply = function (effect) {
262
- effect.setTexture("textureSampler", texture);
263
- effect.setFloat("lod", lod);
264
- effect.setInt("gamma", texture.gammaSpace ? 1 : 0);
265
- if (is3DTexture) {
266
- effect.setFloat("slice", slice);
267
- }
268
- };
269
- try {
315
+ rtt = new RenderTargetTexture("temp", { width: width, height: height }, scene, false);
316
+ lodPostProcess.onApply = function (effect) {
317
+ effect.setTexture("textureSampler", texture);
318
+ effect.setFloat("lod", lod);
319
+ const hardwareSRGB = sourceInternalTexture?._useSRGBBuffer ||
320
+ MapSRGBToLinear(texture.textureFormat) !== null ||
321
+ texture.textureFormat === 35917;
322
+ effect.setInt("gamma", hardwareSRGB ? RestoreHardwareSRGB : !applyGammaCorrection || texture.gammaSpace ? PreserveChannels : DisplayGamma);
323
+ if (is3DTexture) {
324
+ effect.setFloat("slice", slice);
325
+ }
326
+ };
270
327
  if (rtt.renderTarget && sourceInternalTexture) {
271
328
  const samplingMode = sourceInternalTexture.samplingMode;
272
329
  if (lod !== 0) {
@@ -289,7 +346,7 @@ async function ReadPixelsUsingRTT(texture, width, height, face, lod, slice = 0)
289
346
  }
290
347
  }
291
348
  finally {
292
- rtt.dispose();
349
+ rtt?.dispose();
293
350
  lodPostProcess.dispose();
294
351
  }
295
352
  }
@@ -305,9 +362,10 @@ async function ReadPixelsUsingRTT(texture, width, height, face, lod, slice = 0)
305
362
  * @param lod if the texture has multiple LODs, the lod index to use for the source
306
363
  * @param forceRTT if true, forces the use of the RTT path for reading pixels (useful for cube maps to ensure correct orientation and gamma)
307
364
  * @param slice if the texture is 3D, the depth slice index to use for the source
365
+ * @param applyGammaCorrection if true (default), converts linear RTT pixels to display gamma and previews single-channel data as grayscale. If false, preserves sampled channel semantics, including undoing hardware sRGB decoding.
308
366
  * @returns the 8-bit texture data
309
367
  */
310
- export async function GetTextureDataAsync(texture, width, height, face = 0, lod = 0, forceRTT = false, slice = 0) {
368
+ export async function GetTextureDataAsync(texture, width, height, face = 0, lod = 0, forceRTT = false, slice = 0, applyGammaCorrection = true) {
311
369
  await WhenTextureReadyAsync(texture);
312
370
  const internalTexture = texture.getInternalTexture();
313
371
  const is3DTexture = texture.is3D || !!internalTexture?.is3D;
@@ -318,11 +376,11 @@ export async function GetTextureDataAsync(texture, width, height, face = 0, lod
318
376
  // If we're resizing the texture, we need to use a render target texture.
319
377
  // forceRTT can be used to ensure correct orientation and gamma for cube maps.
320
378
  // 3D textures must also use RTT because direct readPixels does not expose slice selection.
321
- if (forceRTT || is3DTexture || IsCompressedTextureFormat(texture.textureFormat) || targetWidth !== textureWidth || targetHeight !== textureHeight) {
379
+ if (forceRTT || is3DTexture || _IsCompressedTextureFormat(texture.textureFormat) || targetWidth !== textureWidth || targetHeight !== textureHeight) {
322
380
  if (texture.is2DArray) {
323
381
  throw new Error(`Reading pixels from 2D array textures with ${forceRTT ? "RTT" : "compression"} is not supported.`);
324
382
  }
325
- return await ReadPixelsUsingRTT(texture, targetWidth, targetHeight, face, lod, slice);
383
+ return await ReadPixelsUsingRTT(texture, targetWidth, targetHeight, face, lod, slice, applyGammaCorrection);
326
384
  }
327
385
  let data = (await texture.readPixels(face, lod));
328
386
  if (!data) {
@@ -350,21 +408,21 @@ export async function GetTextureDataAsync(texture, width, height, face = 0, lod
350
408
  for (let pixel = 0, src = 0, dst = 0; pixel < pixelCount; pixel++, dst += 4) {
351
409
  const c0 = data[src++];
352
410
  if (componentCount === 1) {
353
- // Luminance/R-style data: replicate to RGB and use opaque alpha.
354
- normalizedData[dst] = c0;
355
- normalizedData[dst + 1] = c0;
356
- normalizedData[dst + 2] = c0;
357
- normalizedData[dst + 3] = 255;
411
+ const alphaOnly = !applyGammaCorrection && texture.textureFormat === 0;
412
+ const redOnly = !applyGammaCorrection && (texture.textureFormat === 6 || texture.textureFormat === 8);
413
+ normalizedData[dst] = alphaOnly ? 0 : c0;
414
+ normalizedData[dst + 1] = alphaOnly || redOnly ? 0 : c0;
415
+ normalizedData[dst + 2] = alphaOnly || redOnly ? 0 : c0;
416
+ normalizedData[dst + 3] = alphaOnly ? c0 : 255;
358
417
  continue;
359
418
  }
360
419
  const c1 = data[src++];
361
420
  if (componentCount === 2) {
362
- // Two-channel data has no standard blue/alpha semantics for preview,
363
- // so preserve R/G, clear B, and force opaque alpha.
421
+ const luminanceAlpha = !applyGammaCorrection && texture.textureFormat === 2;
364
422
  normalizedData[dst] = c0;
365
- normalizedData[dst + 1] = c1;
366
- normalizedData[dst + 2] = 0;
367
- normalizedData[dst + 3] = 255;
423
+ normalizedData[dst + 1] = luminanceAlpha ? c0 : c1;
424
+ normalizedData[dst + 2] = luminanceAlpha ? c0 : 0;
425
+ normalizedData[dst + 3] = luminanceAlpha ? c1 : 255;
368
426
  continue;
369
427
  }
370
428
  // RGB data: append an opaque alpha channel.