@onerjs/core 8.54.4 → 8.54.6

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 (234) hide show
  1. package/Engines/Native/nativeHelpers.js +5 -0
  2. package/Engines/Native/nativeHelpers.js.map +1 -1
  3. package/Engines/WebGPU/Extensions/engine.cubeTexture.pure.js +1 -1
  4. package/Engines/WebGPU/Extensions/engine.cubeTexture.pure.js.map +1 -1
  5. package/Engines/WebGPU/Extensions/engine.rawTexture.pure.js +2 -2
  6. package/Engines/WebGPU/Extensions/engine.rawTexture.pure.js.map +1 -1
  7. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +1 -0
  8. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +18 -4
  9. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  10. package/Engines/WebGPU/webgpuCacheTextureView.d.ts +13 -0
  11. package/Engines/WebGPU/webgpuCacheTextureView.js +32 -0
  12. package/Engines/WebGPU/webgpuCacheTextureView.js.map +1 -0
  13. package/Engines/WebGPU/webgpuRenderTargetWrapper.d.ts +10 -0
  14. package/Engines/WebGPU/webgpuRenderTargetWrapper.js +10 -0
  15. package/Engines/WebGPU/webgpuRenderTargetWrapper.js.map +1 -1
  16. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.pure.js +57 -4
  17. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.pure.js.map +1 -1
  18. package/Engines/WebGPU/webgpuTextureManager.d.ts +1 -1
  19. package/Engines/WebGPU/webgpuTextureManager.js +4 -2
  20. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  21. package/Engines/abstractEngine.pure.js +2 -2
  22. package/Engines/abstractEngine.pure.js.map +1 -1
  23. package/Engines/engineCapabilities.d.ts +5 -0
  24. package/Engines/engineCapabilities.js.map +1 -1
  25. package/Engines/thinNativeEngine.pure.d.ts +5 -0
  26. package/Engines/thinNativeEngine.pure.js +52 -10
  27. package/Engines/thinNativeEngine.pure.js.map +1 -1
  28. package/Engines/webgpuEngine.pure.d.ts +1 -0
  29. package/Engines/webgpuEngine.pure.js +22 -8
  30. package/Engines/webgpuEngine.pure.js.map +1 -1
  31. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.d.ts +95 -1
  32. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +169 -4
  33. package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
  34. package/FlowGraph/Blocks/Data/Math/flowGraphMathCombineExtractBlocks.pure.d.ts +21 -6
  35. package/FlowGraph/Blocks/Data/Math/flowGraphMathCombineExtractBlocks.pure.js +28 -26
  36. package/FlowGraph/Blocks/Data/Math/flowGraphMathCombineExtractBlocks.pure.js.map +1 -1
  37. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixMathBlocks.pure.d.ts +30 -2
  38. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixMathBlocks.pure.js +111 -29
  39. package/FlowGraph/Blocks/Data/Math/flowGraphMatrixMathBlocks.pure.js.map +1 -1
  40. package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.pure.d.ts +56 -2
  41. package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.pure.js +99 -14
  42. package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.pure.js.map +1 -1
  43. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js +10 -2
  44. package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.pure.js.map +1 -1
  45. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +21 -1
  46. package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
  47. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +18 -0
  48. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +29 -2
  49. package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
  50. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +15 -0
  51. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +44 -7
  52. package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
  53. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +9 -0
  54. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +9 -1
  55. package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
  56. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +7 -0
  57. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +8 -1
  58. package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
  59. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.d.ts +5 -0
  60. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.js +8 -0
  61. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.js.map +1 -0
  62. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.pure.d.ts +37 -0
  63. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.pure.js +44 -0
  64. package/FlowGraph/Blocks/Event/flowGraphStopEventPropagationBlock.pure.js.map +1 -0
  65. package/FlowGraph/Blocks/Event/index.d.ts +1 -0
  66. package/FlowGraph/Blocks/Event/index.js +1 -0
  67. package/FlowGraph/Blocks/Event/index.js.map +1 -1
  68. package/FlowGraph/Blocks/Event/pure.d.ts +1 -0
  69. package/FlowGraph/Blocks/Event/pure.js +1 -0
  70. package/FlowGraph/Blocks/Event/pure.js.map +1 -1
  71. package/FlowGraph/Blocks/Execution/Animation/flowGraphBezierCurveEasingBlock.pure.d.ts +4 -1
  72. package/FlowGraph/Blocks/Execution/Animation/flowGraphBezierCurveEasingBlock.pure.js +67 -2
  73. package/FlowGraph/Blocks/Execution/Animation/flowGraphBezierCurveEasingBlock.pure.js.map +1 -1
  74. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +13 -0
  75. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +102 -7
  76. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
  77. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +5 -1
  78. package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
  79. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js +5 -1
  80. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.pure.js.map +1 -1
  81. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.d.ts +11 -2
  82. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js +21 -3
  83. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.pure.js.map +1 -1
  84. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSetDelayBlock.pure.js +25 -4
  85. package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSetDelayBlock.pure.js.map +1 -1
  86. package/FlowGraph/Blocks/flowGraphBlockFactory.js +18 -0
  87. package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
  88. package/FlowGraph/Blocks/flowGraphBlockNames.d.ts +9 -0
  89. package/FlowGraph/Blocks/flowGraphBlockNames.js +9 -0
  90. package/FlowGraph/Blocks/flowGraphBlockNames.js.map +1 -1
  91. package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +17 -3
  92. package/FlowGraph/CustomTypes/flowGraphMatrix.js +27 -21
  93. package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
  94. package/FlowGraph/flowGraphContext.d.ts +23 -0
  95. package/FlowGraph/flowGraphContext.js +29 -0
  96. package/FlowGraph/flowGraphContext.js.map +1 -1
  97. package/FlowGraph/flowGraphCoordinator.d.ts +58 -1
  98. package/FlowGraph/flowGraphCoordinator.js +72 -0
  99. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  100. package/FlowGraph/flowGraphDelayRegistry.d.ts +31 -0
  101. package/FlowGraph/flowGraphDelayRegistry.js +50 -0
  102. package/FlowGraph/flowGraphDelayRegistry.js.map +1 -0
  103. package/FlowGraph/flowGraphHostResolver.d.ts +69 -0
  104. package/FlowGraph/flowGraphHostResolver.js +25 -0
  105. package/FlowGraph/flowGraphHostResolver.js.map +1 -0
  106. package/FlowGraph/flowGraphMath.d.ts +48 -1
  107. package/FlowGraph/flowGraphMath.js +169 -4
  108. package/FlowGraph/flowGraphMath.js.map +1 -1
  109. package/FlowGraph/flowGraphPathConverterComponent.d.ts +14 -3
  110. package/FlowGraph/flowGraphPathConverterComponent.js +110 -18
  111. package/FlowGraph/flowGraphPathConverterComponent.js.map +1 -1
  112. package/FlowGraph/flowGraphSignalConnection.pure.js +7 -1
  113. package/FlowGraph/flowGraphSignalConnection.pure.js.map +1 -1
  114. package/FlowGraph/index.d.ts +2 -0
  115. package/FlowGraph/index.js +2 -0
  116. package/FlowGraph/index.js.map +1 -1
  117. package/FlowGraph/pure.d.ts +2 -0
  118. package/FlowGraph/pure.js +2 -0
  119. package/FlowGraph/pure.js.map +1 -1
  120. package/Materials/Node/nodeMaterial.pure.d.ts +3 -1
  121. package/Materials/Node/nodeMaterial.pure.js +18 -1
  122. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  123. package/Materials/Textures/envCubeTexture.pure.js +7 -2
  124. package/Materials/Textures/envCubeTexture.pure.js.map +1 -1
  125. package/Materials/materialHelper.functions.d.ts +14 -0
  126. package/Materials/materialHelper.functions.js +67 -0
  127. package/Materials/materialHelper.functions.js.map +1 -1
  128. package/Maths/math.vector.pure.d.ts +11 -1
  129. package/Maths/math.vector.pure.js +13 -0
  130. package/Maths/math.vector.pure.js.map +1 -1
  131. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +216 -1
  132. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +714 -67
  133. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  134. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +81 -4
  135. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +466 -52
  136. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  137. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.d.ts +19 -0
  138. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js +24 -0
  139. package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js.map +1 -1
  140. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +31 -6
  141. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -1
  142. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +5 -1
  143. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js.map +1 -1
  144. package/Meshes/abstractMesh.pure.js +1 -0
  145. package/Meshes/abstractMesh.pure.js.map +1 -1
  146. package/Meshes/mesh.pure.js +5 -0
  147. package/Meshes/mesh.pure.js.map +1 -1
  148. package/Meshes/transformNode.pure.js +1 -0
  149. package/Meshes/transformNode.pure.js.map +1 -1
  150. package/Misc/areaLightsTextureTools.js +1 -1
  151. package/Misc/areaLightsTextureTools.js.map +1 -1
  152. package/Misc/greasedLineTools.js +1 -1
  153. package/Misc/greasedLineTools.js.map +1 -1
  154. package/Misc/tools.pure.js +14 -2
  155. package/Misc/tools.pure.js.map +1 -1
  156. package/Particles/gpuParticleSystem.pure.d.ts +66 -1
  157. package/Particles/gpuParticleSystem.pure.js +189 -49
  158. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  159. package/Physics/v2/characterController.js +69 -17
  160. package/Physics/v2/characterController.js.map +1 -1
  161. package/PostProcesses/RenderPipeline/Pipelines/fsr1RenderingPipeline.d.ts +79 -0
  162. package/PostProcesses/RenderPipeline/Pipelines/fsr1RenderingPipeline.js +171 -0
  163. package/PostProcesses/RenderPipeline/Pipelines/fsr1RenderingPipeline.js.map +1 -0
  164. package/PostProcesses/RenderPipeline/Pipelines/index.d.ts +5 -0
  165. package/PostProcesses/RenderPipeline/Pipelines/index.js +6 -0
  166. package/PostProcesses/RenderPipeline/Pipelines/index.js.map +1 -1
  167. package/PostProcesses/RenderPipeline/Pipelines/pure.d.ts +1 -0
  168. package/PostProcesses/RenderPipeline/Pipelines/pure.js +1 -0
  169. package/PostProcesses/RenderPipeline/Pipelines/pure.js.map +1 -1
  170. package/PostProcesses/thinFSR1SharpenPostProcess.d.ts +32 -0
  171. package/PostProcesses/thinFSR1SharpenPostProcess.js +58 -0
  172. package/PostProcesses/thinFSR1SharpenPostProcess.js.map +1 -0
  173. package/PostProcesses/thinFSR1UpscalePostProcess.d.ts +37 -0
  174. package/PostProcesses/thinFSR1UpscalePostProcess.js +68 -0
  175. package/PostProcesses/thinFSR1UpscalePostProcess.js.map +1 -0
  176. package/Shaders/ShadersInclude/ffxFunctions.d.ts +5 -0
  177. package/Shaders/ShadersInclude/ffxFunctions.js +18 -0
  178. package/Shaders/ShadersInclude/ffxFunctions.js.map +1 -0
  179. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +2 -2
  180. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  181. package/Shaders/ShadersInclude/openpbrIblFunctions.js +1 -6
  182. package/Shaders/ShadersInclude/openpbrIblFunctions.js.map +1 -1
  183. package/Shaders/fsr1Sharpen.fragment.d.ts +5 -0
  184. package/Shaders/fsr1Sharpen.fragment.js +26 -0
  185. package/Shaders/fsr1Sharpen.fragment.js.map +1 -0
  186. package/Shaders/fsr1Upscale.fragment.d.ts +5 -0
  187. package/Shaders/fsr1Upscale.fragment.js +77 -0
  188. package/Shaders/fsr1Upscale.fragment.js.map +1 -0
  189. package/ShadersWGSL/ShadersInclude/ffxFunctions.d.ts +5 -0
  190. package/ShadersWGSL/ShadersInclude/ffxFunctions.js +18 -0
  191. package/ShadersWGSL/ShadersInclude/ffxFunctions.js.map +1 -0
  192. package/ShadersWGSL/fsr1Sharpen.fragment.d.ts +5 -0
  193. package/ShadersWGSL/fsr1Sharpen.fragment.js +34 -0
  194. package/ShadersWGSL/fsr1Sharpen.fragment.js.map +1 -0
  195. package/ShadersWGSL/fsr1Upscale.fragment.d.ts +5 -0
  196. package/ShadersWGSL/fsr1Upscale.fragment.js +68 -0
  197. package/ShadersWGSL/fsr1Upscale.fragment.js.map +1 -0
  198. package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +3 -9
  199. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +4 -11
  200. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -1
  201. package/XR/features/WebXRAbstractFeature.d.ts +9 -0
  202. package/XR/features/WebXRAbstractFeature.js +16 -0
  203. package/XR/features/WebXRAbstractFeature.js.map +1 -1
  204. package/XR/features/WebXRDepthSensing.pure.d.ts +7 -0
  205. package/XR/features/WebXRDepthSensing.pure.js +350 -39
  206. package/XR/features/WebXRDepthSensing.pure.js.map +1 -1
  207. package/XR/features/WebXRImageTracking.pure.js.map +1 -1
  208. package/XR/features/WebXRLayers.pure.d.ts +6 -5
  209. package/XR/features/WebXRLayers.pure.js +65 -8
  210. package/XR/features/WebXRLayers.pure.js.map +1 -1
  211. package/XR/features/WebXRRawCameraAccess.pure.js +9 -2
  212. package/XR/features/WebXRRawCameraAccess.pure.js.map +1 -1
  213. package/XR/features/WebXRSpaceWarp.pure.d.ts +0 -1
  214. package/XR/features/WebXRSpaceWarp.pure.js +13 -4
  215. package/XR/features/WebXRSpaceWarp.pure.js.map +1 -1
  216. package/XR/features/WebXRWalkingLocomotion.pure.js.map +1 -1
  217. package/XR/webXRCamera.js +27 -0
  218. package/XR/webXRCamera.js.map +1 -1
  219. package/XR/webXRFeatureWarningRegistry.d.ts +14 -0
  220. package/XR/webXRFeatureWarningRegistry.js +19 -0
  221. package/XR/webXRFeatureWarningRegistry.js.map +1 -0
  222. package/XR/webXRFeaturesManager.d.ts +5 -0
  223. package/XR/webXRFeaturesManager.js +23 -4
  224. package/XR/webXRFeaturesManager.js.map +1 -1
  225. package/XR/webXRGraphicsBinding.d.ts +17 -10
  226. package/XR/webXRGraphicsBinding.js +8 -5
  227. package/XR/webXRGraphicsBinding.js.map +1 -1
  228. package/XR/webXRSessionManager.d.ts +3 -5
  229. package/XR/webXRSessionManager.js +1 -3
  230. package/XR/webXRSessionManager.js.map +1 -1
  231. package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +21 -5
  232. package/XR/webXRWebGPURenderTargetTextureProvider.js +38 -10
  233. package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -1
  234. package/package.json +1 -1
@@ -296,6 +296,11 @@ function _getFallbackAlphaMode(mode, unsupportedName, fallback = _native.Engine.
296
296
  }
297
297
  export function getNativeAlphaMode(mode) {
298
298
  switch (mode) {
299
+ // AbstractEngine initializes/resets _alphaMode to -1 as an "unset" sentinel (see
300
+ // abstractEngine.pure.ts). WebGL/WebGPU tolerate restoring that sentinel via setAlphaMode(-1)
301
+ // (e.g. OutlineRenderer._afterRenderingMesh saving/restoring getAlphaMode()); treat it as
302
+ // ALPHA_DISABLE here so the native path doesn't throw on the transient reset value.
303
+ case -1:
299
304
  case 0:
300
305
  return _native.Engine.ALPHA_DISABLE;
301
306
  case 1:
@@ -1 +1 @@
1
- {"version":3,"file":"nativeHelpers.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Native/nativeHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { ErrorCodes, RuntimeError } from \"core/Misc/error\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { Constants } from \"../constants\";\r\nimport { type INative } from \"./nativeInterfaces\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer.pure\";\r\n\r\ndeclare const _native: INative;\r\n\r\nexport function getNativeTextureFormat(format: number, type: number): number {\r\n switch (format) {\r\n // Depth (type is ignored)\r\n case Constants.TEXTUREFORMAT_DEPTH16:\r\n return _native.Engine.TEXTURE_FORMAT_D16;\r\n case Constants.TEXTUREFORMAT_DEPTH24:\r\n return _native.Engine.TEXTURE_FORMAT_D24;\r\n case Constants.TEXTUREFORMAT_DEPTH24_STENCIL8:\r\n return _native.Engine.TEXTURE_FORMAT_D24S8;\r\n case Constants.TEXTUREFORMAT_DEPTH32_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_D32F;\r\n\r\n // Compressed (type is ignored)\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM:\r\n return _native.Engine.TEXTURE_FORMAT_BC7;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_BC6H;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5:\r\n return _native.Engine.TEXTURE_FORMAT_BC3;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3:\r\n return _native.Engine.TEXTURE_FORMAT_BC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1:\r\n return _native.Engine.TEXTURE_FORMAT_BC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1:\r\n return _native.Engine.TEXTURE_FORMAT_BC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC4x4;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC5x4;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC5x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC6x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC6x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x8;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x8;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x10;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC12x10;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC12x12;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL:\r\n return _native.Engine.TEXTURE_FORMAT_ETC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2:\r\n return _native.Engine.TEXTURE_FORMAT_ETC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC:\r\n return _native.Engine.TEXTURE_FORMAT_ETC2A;\r\n\r\n case Constants.TEXTUREFORMAT_RGB: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8S;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8U;\r\n }\r\n break;\r\n }\r\n\r\n case Constants.TEXTUREFORMAT_RGBA_INTEGER: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32U;\r\n }\r\n break;\r\n }\r\n\r\n case Constants.TEXTUREFORMAT_RGBA: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16I;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_R: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_R8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_R32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_R16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_R8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_R16S;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_R16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_R32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_R32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_RG: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RG8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RG32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RG8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16S;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RG32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RG32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_BGRA: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_BGRA8;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n throw new RuntimeError(`Unsupported texture format or type: format ${format}, type ${type}.`, ErrorCodes.UnsupportedTextureError);\r\n}\r\n\r\nexport function getNativeSamplingMode(samplingMode: number): number {\r\n switch (samplingMode) {\r\n case Constants.TEXTURE_NEAREST_NEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST;\r\n case Constants.TEXTURE_LINEAR_LINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR;\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR_MIPLINEAR;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST_MIPNEAREST;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR_MIPNEAREST;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR_MIPLINEAR;\r\n case Constants.TEXTURE_NEAREST_LINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST_MIPLINEAR;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPNEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST_MIPNEAREST;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPLINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST_MIPLINEAR;\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR_MIPNEAREST;\r\n case Constants.TEXTURE_LINEAR_NEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST;\r\n default:\r\n throw new Error(`Unsupported sampling mode: ${samplingMode}.`);\r\n }\r\n}\r\n\r\nexport function getNativeAddressMode(wrapMode: number): number {\r\n switch (wrapMode) {\r\n case Constants.TEXTURE_WRAP_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_WRAP;\r\n case Constants.TEXTURE_CLAMP_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_CLAMP;\r\n case Constants.TEXTURE_MIRROR_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_MIRROR;\r\n default:\r\n throw new Error(\"Unexpected wrap mode: \" + wrapMode + \".\");\r\n }\r\n}\r\n\r\nexport function getNativeStencilFunc(func: number): number {\r\n switch (func) {\r\n case Constants.LESS:\r\n return _native.Engine.STENCIL_TEST_LESS;\r\n case Constants.LEQUAL:\r\n return _native.Engine.STENCIL_TEST_LEQUAL;\r\n case Constants.EQUAL:\r\n return _native.Engine.STENCIL_TEST_EQUAL;\r\n case Constants.GEQUAL:\r\n return _native.Engine.STENCIL_TEST_GEQUAL;\r\n case Constants.GREATER:\r\n return _native.Engine.STENCIL_TEST_GREATER;\r\n case Constants.NOTEQUAL:\r\n return _native.Engine.STENCIL_TEST_NOTEQUAL;\r\n case Constants.NEVER:\r\n return _native.Engine.STENCIL_TEST_NEVER;\r\n case Constants.ALWAYS:\r\n return _native.Engine.STENCIL_TEST_ALWAYS;\r\n default:\r\n throw new Error(`Unsupported stencil func mode: ${func}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilOpFail(opFail: number): number {\r\n switch (opFail) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_FAIL_S_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_FAIL_S_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_FAIL_S_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil OpFail mode: ${opFail}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilDepthFail(depthFail: number): number {\r\n switch (depthFail) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil depthFail mode: ${depthFail}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilDepthPass(opPass: number): number {\r\n switch (opPass) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_PASS_Z_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_PASS_Z_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_PASS_Z_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil opPass mode: ${opPass}.`);\r\n }\r\n}\r\n\r\nconst _warnedUnsupportedAlphaModes = new Set<number>();\r\n\r\n// Some alpha modes were introduced alongside newer Babylon Native features. When running against an older\r\n// native binary the corresponding _native.Engine constant is undefined; warn once and use a supported fallback.\r\nfunction _getFallbackAlphaMode(mode: number, unsupportedName: string, fallback = _native.Engine.ALPHA_ONEONE, fallbackName = \"ALPHA_ONEONE\"): number {\r\n if (!_warnedUnsupportedAlphaModes.has(mode)) {\r\n _warnedUnsupportedAlphaModes.add(mode);\r\n Logger.Warn(`Alpha mode ${unsupportedName} is not supported by this version of Babylon Native; falling back to ${fallbackName}.`);\r\n }\r\n return fallback;\r\n}\r\n\r\nexport function getNativeAlphaMode(mode: number): number {\r\n switch (mode) {\r\n case Constants.ALPHA_DISABLE:\r\n return _native.Engine.ALPHA_DISABLE;\r\n case Constants.ALPHA_ADD:\r\n return _native.Engine.ALPHA_ADD;\r\n case Constants.ALPHA_COMBINE:\r\n return _native.Engine.ALPHA_COMBINE;\r\n case Constants.ALPHA_SUBTRACT:\r\n return _native.Engine.ALPHA_SUBTRACT;\r\n case Constants.ALPHA_MULTIPLY:\r\n return _native.Engine.ALPHA_MULTIPLY;\r\n case Constants.ALPHA_MAXIMIZED:\r\n return _native.Engine.ALPHA_MAXIMIZED;\r\n case Constants.ALPHA_ONEONE:\r\n return _native.Engine.ALPHA_ONEONE;\r\n case Constants.ALPHA_ONEONE_ONEONE:\r\n return _native.Engine.ALPHA_ONEONE_ONEONE ?? _getFallbackAlphaMode(mode, \"ALPHA_ONEONE_ONEONE\");\r\n case Constants.ALPHA_LAYER_ACCUMULATE:\r\n return _native.Engine.ALPHA_LAYER_ACCUMULATE ?? _getFallbackAlphaMode(mode, \"ALPHA_LAYER_ACCUMULATE\");\r\n case Constants.ALPHA_PREMULTIPLIED:\r\n return _native.Engine.ALPHA_PREMULTIPLIED;\r\n case Constants.ALPHA_PREMULTIPLIED_PORTERDUFF:\r\n return _native.Engine.ALPHA_PREMULTIPLIED_PORTERDUFF;\r\n case Constants.ALPHA_INTERPOLATE:\r\n return _native.Engine.ALPHA_INTERPOLATE;\r\n case Constants.ALPHA_SCREENMODE:\r\n return _native.Engine.ALPHA_SCREENMODE;\r\n case Constants.ALPHA_REPLACE_COLOR:\r\n return _native.Engine.ALPHA_REPLACE_COLOR ?? _getFallbackAlphaMode(mode, \"ALPHA_REPLACE_COLOR\", _native.Engine.ALPHA_COMBINE, \"ALPHA_COMBINE\");\r\n default:\r\n throw new Error(`Unsupported alpha mode: ${mode}.`);\r\n }\r\n}\r\n\r\nexport function getNativeAttribType(type: number): number {\r\n switch (type) {\r\n case VertexBuffer.BYTE:\r\n return _native.Engine.ATTRIB_TYPE_INT8;\r\n case VertexBuffer.UNSIGNED_BYTE:\r\n return _native.Engine.ATTRIB_TYPE_UINT8;\r\n case VertexBuffer.SHORT:\r\n return _native.Engine.ATTRIB_TYPE_INT16;\r\n case VertexBuffer.UNSIGNED_SHORT:\r\n return _native.Engine.ATTRIB_TYPE_UINT16;\r\n case VertexBuffer.FLOAT:\r\n return _native.Engine.ATTRIB_TYPE_FLOAT;\r\n // HALF_FLOAT (as well as INT and UNSIGNED_INT) has no equivalent in the native bindings, which only\r\n // expose ATTRIB_TYPE_INT8/UINT8/INT16/UINT16/FLOAT. Those vertex attribute types are therefore\r\n // WebGL/WebGPU only and intentionally fall through to the throw below on the Babylon Native engine.\r\n default:\r\n throw new Error(`Unsupported attribute type: ${type}.`);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"nativeHelpers.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Native/nativeHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { ErrorCodes, RuntimeError } from \"core/Misc/error\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { Constants } from \"../constants\";\r\nimport { type INative } from \"./nativeInterfaces\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer.pure\";\r\n\r\ndeclare const _native: INative;\r\n\r\nexport function getNativeTextureFormat(format: number, type: number): number {\r\n switch (format) {\r\n // Depth (type is ignored)\r\n case Constants.TEXTUREFORMAT_DEPTH16:\r\n return _native.Engine.TEXTURE_FORMAT_D16;\r\n case Constants.TEXTUREFORMAT_DEPTH24:\r\n return _native.Engine.TEXTURE_FORMAT_D24;\r\n case Constants.TEXTUREFORMAT_DEPTH24_STENCIL8:\r\n return _native.Engine.TEXTURE_FORMAT_D24S8;\r\n case Constants.TEXTUREFORMAT_DEPTH32_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_D32F;\r\n\r\n // Compressed (type is ignored)\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM:\r\n return _native.Engine.TEXTURE_FORMAT_BC7;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_BC6H;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5:\r\n return _native.Engine.TEXTURE_FORMAT_BC3;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3:\r\n return _native.Engine.TEXTURE_FORMAT_BC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1:\r\n return _native.Engine.TEXTURE_FORMAT_BC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1:\r\n return _native.Engine.TEXTURE_FORMAT_BC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC4x4;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC5x4;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC5x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC6x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC6x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x8;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x8;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x10;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC12x10;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC12x12;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL:\r\n return _native.Engine.TEXTURE_FORMAT_ETC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2:\r\n return _native.Engine.TEXTURE_FORMAT_ETC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC:\r\n return _native.Engine.TEXTURE_FORMAT_ETC2A;\r\n\r\n case Constants.TEXTUREFORMAT_RGB: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8S;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8U;\r\n }\r\n break;\r\n }\r\n\r\n case Constants.TEXTUREFORMAT_RGBA_INTEGER: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32U;\r\n }\r\n break;\r\n }\r\n\r\n case Constants.TEXTUREFORMAT_RGBA: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16I;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_R: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_R8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_R32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_R16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_R8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_R16S;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_R16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_R32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_R32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_RG: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RG8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RG32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RG8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16S;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RG32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RG32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_BGRA: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_BGRA8;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n throw new RuntimeError(`Unsupported texture format or type: format ${format}, type ${type}.`, ErrorCodes.UnsupportedTextureError);\r\n}\r\n\r\nexport function getNativeSamplingMode(samplingMode: number): number {\r\n switch (samplingMode) {\r\n case Constants.TEXTURE_NEAREST_NEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST;\r\n case Constants.TEXTURE_LINEAR_LINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR;\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR_MIPLINEAR;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST_MIPNEAREST;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR_MIPNEAREST;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR_MIPLINEAR;\r\n case Constants.TEXTURE_NEAREST_LINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST_MIPLINEAR;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPNEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST_MIPNEAREST;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPLINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST_MIPLINEAR;\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR_MIPNEAREST;\r\n case Constants.TEXTURE_LINEAR_NEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST;\r\n default:\r\n throw new Error(`Unsupported sampling mode: ${samplingMode}.`);\r\n }\r\n}\r\n\r\nexport function getNativeAddressMode(wrapMode: number): number {\r\n switch (wrapMode) {\r\n case Constants.TEXTURE_WRAP_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_WRAP;\r\n case Constants.TEXTURE_CLAMP_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_CLAMP;\r\n case Constants.TEXTURE_MIRROR_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_MIRROR;\r\n default:\r\n throw new Error(\"Unexpected wrap mode: \" + wrapMode + \".\");\r\n }\r\n}\r\n\r\nexport function getNativeStencilFunc(func: number): number {\r\n switch (func) {\r\n case Constants.LESS:\r\n return _native.Engine.STENCIL_TEST_LESS;\r\n case Constants.LEQUAL:\r\n return _native.Engine.STENCIL_TEST_LEQUAL;\r\n case Constants.EQUAL:\r\n return _native.Engine.STENCIL_TEST_EQUAL;\r\n case Constants.GEQUAL:\r\n return _native.Engine.STENCIL_TEST_GEQUAL;\r\n case Constants.GREATER:\r\n return _native.Engine.STENCIL_TEST_GREATER;\r\n case Constants.NOTEQUAL:\r\n return _native.Engine.STENCIL_TEST_NOTEQUAL;\r\n case Constants.NEVER:\r\n return _native.Engine.STENCIL_TEST_NEVER;\r\n case Constants.ALWAYS:\r\n return _native.Engine.STENCIL_TEST_ALWAYS;\r\n default:\r\n throw new Error(`Unsupported stencil func mode: ${func}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilOpFail(opFail: number): number {\r\n switch (opFail) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_FAIL_S_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_FAIL_S_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_FAIL_S_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil OpFail mode: ${opFail}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilDepthFail(depthFail: number): number {\r\n switch (depthFail) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil depthFail mode: ${depthFail}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilDepthPass(opPass: number): number {\r\n switch (opPass) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_PASS_Z_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_PASS_Z_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_PASS_Z_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil opPass mode: ${opPass}.`);\r\n }\r\n}\r\n\r\nconst _warnedUnsupportedAlphaModes = new Set<number>();\r\n\r\n// Some alpha modes were introduced alongside newer Babylon Native features. When running against an older\r\n// native binary the corresponding _native.Engine constant is undefined; warn once and use a supported fallback.\r\nfunction _getFallbackAlphaMode(mode: number, unsupportedName: string, fallback = _native.Engine.ALPHA_ONEONE, fallbackName = \"ALPHA_ONEONE\"): number {\r\n if (!_warnedUnsupportedAlphaModes.has(mode)) {\r\n _warnedUnsupportedAlphaModes.add(mode);\r\n Logger.Warn(`Alpha mode ${unsupportedName} is not supported by this version of Babylon Native; falling back to ${fallbackName}.`);\r\n }\r\n return fallback;\r\n}\r\n\r\nexport function getNativeAlphaMode(mode: number): number {\r\n switch (mode) {\r\n // AbstractEngine initializes/resets _alphaMode to -1 as an \"unset\" sentinel (see\r\n // abstractEngine.pure.ts). WebGL/WebGPU tolerate restoring that sentinel via setAlphaMode(-1)\r\n // (e.g. OutlineRenderer._afterRenderingMesh saving/restoring getAlphaMode()); treat it as\r\n // ALPHA_DISABLE here so the native path doesn't throw on the transient reset value.\r\n case -1:\r\n case Constants.ALPHA_DISABLE:\r\n return _native.Engine.ALPHA_DISABLE;\r\n case Constants.ALPHA_ADD:\r\n return _native.Engine.ALPHA_ADD;\r\n case Constants.ALPHA_COMBINE:\r\n return _native.Engine.ALPHA_COMBINE;\r\n case Constants.ALPHA_SUBTRACT:\r\n return _native.Engine.ALPHA_SUBTRACT;\r\n case Constants.ALPHA_MULTIPLY:\r\n return _native.Engine.ALPHA_MULTIPLY;\r\n case Constants.ALPHA_MAXIMIZED:\r\n return _native.Engine.ALPHA_MAXIMIZED;\r\n case Constants.ALPHA_ONEONE:\r\n return _native.Engine.ALPHA_ONEONE;\r\n case Constants.ALPHA_ONEONE_ONEONE:\r\n return _native.Engine.ALPHA_ONEONE_ONEONE ?? _getFallbackAlphaMode(mode, \"ALPHA_ONEONE_ONEONE\");\r\n case Constants.ALPHA_LAYER_ACCUMULATE:\r\n return _native.Engine.ALPHA_LAYER_ACCUMULATE ?? _getFallbackAlphaMode(mode, \"ALPHA_LAYER_ACCUMULATE\");\r\n case Constants.ALPHA_PREMULTIPLIED:\r\n return _native.Engine.ALPHA_PREMULTIPLIED;\r\n case Constants.ALPHA_PREMULTIPLIED_PORTERDUFF:\r\n return _native.Engine.ALPHA_PREMULTIPLIED_PORTERDUFF;\r\n case Constants.ALPHA_INTERPOLATE:\r\n return _native.Engine.ALPHA_INTERPOLATE;\r\n case Constants.ALPHA_SCREENMODE:\r\n return _native.Engine.ALPHA_SCREENMODE;\r\n case Constants.ALPHA_REPLACE_COLOR:\r\n return _native.Engine.ALPHA_REPLACE_COLOR ?? _getFallbackAlphaMode(mode, \"ALPHA_REPLACE_COLOR\", _native.Engine.ALPHA_COMBINE, \"ALPHA_COMBINE\");\r\n default:\r\n throw new Error(`Unsupported alpha mode: ${mode}.`);\r\n }\r\n}\r\n\r\nexport function getNativeAttribType(type: number): number {\r\n switch (type) {\r\n case VertexBuffer.BYTE:\r\n return _native.Engine.ATTRIB_TYPE_INT8;\r\n case VertexBuffer.UNSIGNED_BYTE:\r\n return _native.Engine.ATTRIB_TYPE_UINT8;\r\n case VertexBuffer.SHORT:\r\n return _native.Engine.ATTRIB_TYPE_INT16;\r\n case VertexBuffer.UNSIGNED_SHORT:\r\n return _native.Engine.ATTRIB_TYPE_UINT16;\r\n case VertexBuffer.FLOAT:\r\n return _native.Engine.ATTRIB_TYPE_FLOAT;\r\n // HALF_FLOAT (as well as INT and UNSIGNED_INT) has no equivalent in the native bindings, which only\r\n // expose ATTRIB_TYPE_INT8/UINT8/INT16/UINT16/FLOAT. Those vertex attribute types are therefore\r\n // WebGL/WebGPU only and intentionally fall through to the throw below on the Babylon Native engine.\r\n default:\r\n throw new Error(`Unsupported attribute type: ${type}.`);\r\n }\r\n}\r\n"]}
@@ -42,7 +42,7 @@ export function RegisterEnginesWebGPUExtensionsEngineCubeTexture() {
42
42
  this._setCubeMapTextureParams(texture, !noMipmap);
43
43
  texture.format = format ?? -1;
44
44
  const gpuTextureWrapper = this._textureHelper.createGPUTextureForInternalTexture(texture, width, height);
45
- this._textureHelper.updateCubeTextures(imageBitmaps, gpuTextureWrapper.underlyingResource, width, height, gpuTextureWrapper.format, false, false, 0, 0);
45
+ this._textureHelper.updateCubeTextures(imageBitmaps, texture, width, height, gpuTextureWrapper.format, false, false, 0, 0);
46
46
  if (!noMipmap) {
47
47
  this._generateMipmaps(texture, this._uploadEncoder);
48
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engine.cubeTexture.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.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 { type Nullable } from \"../../../types\";\r\nimport { Constants } from \"../../constants\";\r\nimport { type DepthTextureCreationOptions } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { type WebGPUHardwareTexture } from \"../webgpuHardwareTexture\";\r\nimport { WebGPUTextureHelper } from \"../webgpuTextureHelper\";\r\nimport { type Scene } from \"../../../scene.pure\";\r\nimport { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for enginesWebGPUExtensionsEngineCubeTexture.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterEnginesWebGPUExtensionsEngineCubeTexture(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n ThinWebGPUEngine.prototype._createDepthStencilCubeTexture = function (size: number, options: DepthTextureCreationOptions): InternalTexture {\r\n const internalTexture = new InternalTexture(this, options.generateStencil ? InternalTextureSource.DepthStencil : InternalTextureSource.Depth);\r\n\r\n internalTexture.isCube = true;\r\n internalTexture.label = options.label;\r\n\r\n const internalOptions = {\r\n bilinearFiltering: false,\r\n comparisonFunction: 0,\r\n generateStencil: false,\r\n samples: 1,\r\n depthTextureFormat: options.generateStencil ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\r\n ...options,\r\n };\r\n\r\n internalTexture.format = internalOptions.depthTextureFormat;\r\n\r\n this._setupDepthStencilTexture(internalTexture, size, internalOptions.bilinearFiltering, internalOptions.comparisonFunction, internalOptions.samples);\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(internalTexture);\r\n\r\n // Now that the hardware texture is created, we can retrieve the GPU format and set the right type to the internal texture\r\n const gpuTextureWrapper = internalTexture._hardwareTexture as WebGPUHardwareTexture;\r\n\r\n internalTexture.type = WebGPUTextureHelper.GetTextureTypeFromFormat(gpuTextureWrapper.format);\r\n\r\n this._internalTexturesCache.push(internalTexture);\r\n\r\n return internalTexture;\r\n };\r\n\r\n ThinWebGPUEngine.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: boolean = 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 return this.createCubeTextureBase(\r\n rootUrl,\r\n scene,\r\n files,\r\n !!noMipmap,\r\n onLoad,\r\n onError,\r\n format,\r\n forcedExtension,\r\n createPolynomials,\r\n lodScale,\r\n lodOffset,\r\n fallback,\r\n null,\r\n (texture: InternalTexture, imgs: HTMLImageElement[] | ImageBitmap[]) => {\r\n const imageBitmaps = imgs as ImageBitmap[]; // we will always get an ImageBitmap array in WebGPU\r\n const width = imageBitmaps[0].width;\r\n const height = width;\r\n\r\n this._setCubeMapTextureParams(texture, !noMipmap);\r\n texture.format = format ?? -1;\r\n\r\n const gpuTextureWrapper = this._textureHelper.createGPUTextureForInternalTexture(texture, width, height);\r\n\r\n this._textureHelper.updateCubeTextures(imageBitmaps, gpuTextureWrapper.underlyingResource!, width, height, gpuTextureWrapper.format, false, false, 0, 0);\r\n\r\n if (!noMipmap) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n\r\n texture.isReady = true;\r\n\r\n texture.onLoadedObservable.notifyObservers(texture);\r\n texture.onLoadedObservable.clear();\r\n\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n },\r\n !!useSRGBBuffer,\r\n buffer\r\n );\r\n };\r\n\r\n ThinWebGPUEngine.prototype._setCubeMapTextureParams = function (texture: InternalTexture, loadMipmap: boolean, maxLevel?: number) {\r\n texture.samplingMode = loadMipmap ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n texture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n texture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n if (maxLevel) {\r\n texture._maxLodLevel = maxLevel;\r\n }\r\n };\r\n\r\n ThinWebGPUEngine.prototype.generateMipMapsForCubemap = function (texture: InternalTexture) {\r\n if (texture.generateMipMaps) {\r\n const gpuTexture = texture._hardwareTexture?.underlyingResource;\r\n\r\n if (!gpuTexture) {\r\n this._textureHelper.createGPUTextureForInternalTexture(texture);\r\n }\r\n\r\n this._generateMipmaps(texture);\r\n }\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"engine.cubeTexture.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.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 { type Nullable } from \"../../../types\";\r\nimport { Constants } from \"../../constants\";\r\nimport { type DepthTextureCreationOptions } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { type WebGPUHardwareTexture } from \"../webgpuHardwareTexture\";\r\nimport { WebGPUTextureHelper } from \"../webgpuTextureHelper\";\r\nimport { type Scene } from \"../../../scene.pure\";\r\nimport { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for enginesWebGPUExtensionsEngineCubeTexture.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterEnginesWebGPUExtensionsEngineCubeTexture(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n ThinWebGPUEngine.prototype._createDepthStencilCubeTexture = function (size: number, options: DepthTextureCreationOptions): InternalTexture {\r\n const internalTexture = new InternalTexture(this, options.generateStencil ? InternalTextureSource.DepthStencil : InternalTextureSource.Depth);\r\n\r\n internalTexture.isCube = true;\r\n internalTexture.label = options.label;\r\n\r\n const internalOptions = {\r\n bilinearFiltering: false,\r\n comparisonFunction: 0,\r\n generateStencil: false,\r\n samples: 1,\r\n depthTextureFormat: options.generateStencil ? Constants.TEXTUREFORMAT_DEPTH24_STENCIL8 : Constants.TEXTUREFORMAT_DEPTH32_FLOAT,\r\n ...options,\r\n };\r\n\r\n internalTexture.format = internalOptions.depthTextureFormat;\r\n\r\n this._setupDepthStencilTexture(internalTexture, size, internalOptions.bilinearFiltering, internalOptions.comparisonFunction, internalOptions.samples);\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(internalTexture);\r\n\r\n // Now that the hardware texture is created, we can retrieve the GPU format and set the right type to the internal texture\r\n const gpuTextureWrapper = internalTexture._hardwareTexture as WebGPUHardwareTexture;\r\n\r\n internalTexture.type = WebGPUTextureHelper.GetTextureTypeFromFormat(gpuTextureWrapper.format);\r\n\r\n this._internalTexturesCache.push(internalTexture);\r\n\r\n return internalTexture;\r\n };\r\n\r\n ThinWebGPUEngine.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: boolean = 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 return this.createCubeTextureBase(\r\n rootUrl,\r\n scene,\r\n files,\r\n !!noMipmap,\r\n onLoad,\r\n onError,\r\n format,\r\n forcedExtension,\r\n createPolynomials,\r\n lodScale,\r\n lodOffset,\r\n fallback,\r\n null,\r\n (texture: InternalTexture, imgs: HTMLImageElement[] | ImageBitmap[]) => {\r\n const imageBitmaps = imgs as ImageBitmap[]; // we will always get an ImageBitmap array in WebGPU\r\n const width = imageBitmaps[0].width;\r\n const height = width;\r\n\r\n this._setCubeMapTextureParams(texture, !noMipmap);\r\n texture.format = format ?? -1;\r\n\r\n const gpuTextureWrapper = this._textureHelper.createGPUTextureForInternalTexture(texture, width, height);\r\n\r\n this._textureHelper.updateCubeTextures(imageBitmaps, texture, width, height, gpuTextureWrapper.format, false, false, 0, 0);\r\n\r\n if (!noMipmap) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n\r\n texture.isReady = true;\r\n\r\n texture.onLoadedObservable.notifyObservers(texture);\r\n texture.onLoadedObservable.clear();\r\n\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n },\r\n !!useSRGBBuffer,\r\n buffer\r\n );\r\n };\r\n\r\n ThinWebGPUEngine.prototype._setCubeMapTextureParams = function (texture: InternalTexture, loadMipmap: boolean, maxLevel?: number) {\r\n texture.samplingMode = loadMipmap ? Constants.TEXTURE_TRILINEAR_SAMPLINGMODE : Constants.TEXTURE_BILINEAR_SAMPLINGMODE;\r\n texture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n texture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n if (maxLevel) {\r\n texture._maxLodLevel = maxLevel;\r\n }\r\n };\r\n\r\n ThinWebGPUEngine.prototype.generateMipMapsForCubemap = function (texture: InternalTexture) {\r\n if (texture.generateMipMaps) {\r\n const gpuTexture = texture._hardwareTexture?.underlyingResource;\r\n\r\n if (!gpuTexture) {\r\n this._textureHelper.createGPUTextureForInternalTexture(texture);\r\n }\r\n\r\n this._generateMipmaps(texture);\r\n }\r\n };\r\n}\r\n"]}
@@ -165,7 +165,7 @@ export function RegisterEnginesWebGPUExtensionsEngineRawTexture() {
165
165
  }
166
166
  data.push(new Uint8Array(faceData.buffer, faceData.byteOffset, faceData.byteLength));
167
167
  }
168
- this._textureHelper.updateCubeTextures(data, gpuTextureWrapper.underlyingResource, texture.width, texture.height, gpuTextureWrapper.format, invertY, false, 0, 0);
168
+ this._textureHelper.updateCubeTextures(data, texture, texture.width, texture.height, gpuTextureWrapper.format, invertY, false, 0, 0);
169
169
  if (texture.generateMipMaps) {
170
170
  this._generateMipmaps(texture, this._uploadEncoder);
171
171
  }
@@ -205,7 +205,7 @@ export function RegisterEnginesWebGPUExtensionsEngineRawTexture() {
205
205
  }
206
206
  allFaces.push(new Uint8Array(mipFaceData.buffer, mipFaceData.byteOffset, mipFaceData.byteLength));
207
207
  }
208
- this._textureHelper.updateCubeTextures(allFaces, gpuTextureWrapper.underlyingResource, mipSize, mipSize, gpuTextureWrapper.format, invertY, false, 0, 0);
208
+ this._textureHelper.updateCubeTextures(allFaces, texture, mipSize, mipSize, gpuTextureWrapper.format, invertY, false, 0, 0);
209
209
  }
210
210
  }
211
211
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"engine.rawTexture.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.rawTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { InternalTextureSource, InternalTexture } from \"../../../Materials/Textures/internalTexture\";\r\nimport { type IWebRequest } from \"../../../Misc/interfaces/iWebRequest\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { Constants } from \"../../constants\";\r\nimport { type WebGPUHardwareTexture } from \"../webgpuHardwareTexture\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { type Scene } from \"../../../scene.pure\";\r\nimport { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\r\n\r\n/**\r\n * @internal\r\n */\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for enginesWebGPUExtensionsEngineRawTexture.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterEnginesWebGPUExtensionsEngineRawTexture(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n function ConvertRGBtoRGBATextureData(rgbData: any, width: number, height: number, textureType: number): ArrayBufferView {\r\n // Create new RGBA data container.\r\n let rgbaData: any;\r\n let val1 = 1;\r\n if (textureType === Constants.TEXTURETYPE_FLOAT) {\r\n rgbaData = new Float32Array(width * height * 4);\r\n } else if (textureType === Constants.TEXTURETYPE_HALF_FLOAT) {\r\n rgbaData = new Uint16Array(width * height * 4);\r\n val1 = 15360; // 15360 is the encoding of 1 in half float\r\n } else if (textureType === Constants.TEXTURETYPE_UNSIGNED_INTEGER) {\r\n rgbaData = new Uint32Array(width * height * 4);\r\n } else {\r\n rgbaData = new Uint8Array(width * height * 4);\r\n }\r\n\r\n // Convert each pixel.\r\n for (let x = 0; x < width; x++) {\r\n for (let y = 0; y < height; y++) {\r\n const index = (y * width + x) * 3;\r\n const newIndex = (y * width + x) * 4;\r\n\r\n // Map Old Value to new value.\r\n rgbaData[newIndex + 0] = rgbData[index + 0];\r\n rgbaData[newIndex + 1] = rgbData[index + 1];\r\n rgbaData[newIndex + 2] = rgbData[index + 2];\r\n\r\n // Add fully opaque alpha channel.\r\n rgbaData[newIndex + 3] = val1;\r\n }\r\n }\r\n\r\n return rgbaData;\r\n }\r\n\r\n ThinWebGPUEngine.prototype.createRawTexture = function (\r\n data: Nullable<ArrayBufferView>,\r\n width: number,\r\n height: number,\r\n format: number,\r\n generateMipMaps: boolean,\r\n invertY: boolean,\r\n samplingMode: number,\r\n compression: Nullable<string> = null,\r\n type: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n creationFlags: number = 0,\r\n useSRGBBuffer: boolean = false,\r\n mipLevelCount?: number\r\n ): InternalTexture {\r\n const texture = new InternalTexture(this, InternalTextureSource.Raw);\r\n texture.baseWidth = width;\r\n texture.baseHeight = height;\r\n texture.width = width;\r\n texture.height = height;\r\n texture.format = format;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.samplingMode = samplingMode;\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n texture.type = type;\r\n texture._creationFlags = creationFlags;\r\n texture._useSRGBBuffer = useSRGBBuffer;\r\n\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = data;\r\n }\r\n\r\n this._textureHelper.updateMipLevelCountForInternalTexture(texture, mipLevelCount);\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, width, height, undefined, creationFlags);\r\n\r\n this.updateRawTexture(texture, data, format, invertY, compression, type, useSRGBBuffer);\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n return texture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.updateRawTexture = function (\r\n texture: Nullable<InternalTexture>,\r\n bufferView: Nullable<ArrayBufferView>,\r\n format: number,\r\n invertY: boolean,\r\n compression: Nullable<string> = null,\r\n type: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n useSRGBBuffer: boolean = false,\r\n mipLevel?: number\r\n ): void {\r\n if (!texture) {\r\n return;\r\n }\r\n\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = bufferView;\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n texture._useSRGBBuffer = useSRGBBuffer;\r\n if (mipLevel !== undefined && bufferView) {\r\n if (!texture._bufferViewArray) {\r\n texture._bufferViewArray = new Array(texture.mipLevelCount);\r\n }\r\n texture._bufferViewArray[mipLevel] = bufferView;\r\n }\r\n }\r\n\r\n if (bufferView) {\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\r\n\r\n if (needConversion) {\r\n bufferView = ConvertRGBtoRGBATextureData(bufferView, texture.width, texture.height, type);\r\n }\r\n\r\n const data = new Uint8Array(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\r\n\r\n const mipWidth = Math.max(1, texture.width >> (mipLevel ?? 0));\r\n const mipHeight = Math.max(1, texture.height >> (mipLevel ?? 0));\r\n this._textureHelper.updateTexture(data, texture, mipWidth, mipHeight, texture.depth, gpuTextureWrapper.format, 0, mipLevel ?? 0, invertY, false, 0, 0);\r\n if (texture.generateMipMaps && !mipLevel) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n }\r\n\r\n texture.isReady = true;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.createRawCubeTexture = function (\r\n data: Nullable<ArrayBufferView[]>,\r\n size: number,\r\n format: number,\r\n type: number,\r\n generateMipMaps: boolean,\r\n invertY: boolean,\r\n samplingMode: number,\r\n compression: Nullable<string> = null\r\n ): InternalTexture {\r\n const texture = new InternalTexture(this, InternalTextureSource.CubeRaw);\r\n\r\n if (type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloatLinearFiltering) {\r\n generateMipMaps = false;\r\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n Logger.Warn(\"Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\r\n } else if (type === Constants.TEXTURETYPE_HALF_FLOAT && !this._caps.textureHalfFloatLinearFiltering) {\r\n generateMipMaps = false;\r\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n Logger.Warn(\"Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\r\n } else if (type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloatRender) {\r\n generateMipMaps = false;\r\n Logger.Warn(\"Render to float textures is not supported. Mipmap generation forced to false.\");\r\n } else if (type === Constants.TEXTURETYPE_HALF_FLOAT && !this._caps.colorBufferFloat) {\r\n generateMipMaps = false;\r\n Logger.Warn(\"Render to half float textures is not supported. Mipmap generation forced to false.\");\r\n }\r\n\r\n texture.isCube = true;\r\n texture._originalFormat = format;\r\n texture.format = format === Constants.TEXTUREFORMAT_RGB ? Constants.TEXTUREFORMAT_RGBA : format;\r\n texture.type = type;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.width = size;\r\n texture.height = size;\r\n texture.samplingMode = samplingMode;\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferViewArray = data;\r\n }\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n texture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n texture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture);\r\n\r\n if (format === Constants.TEXTUREFORMAT_RGB) {\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n gpuTextureWrapper._originalFormatIsRGB = true;\r\n }\r\n\r\n if (data) {\r\n this.updateRawCubeTexture(texture, data, format, type, invertY, compression);\r\n }\r\n\r\n texture.isReady = true;\r\n\r\n return texture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.updateRawCubeTexture = function (\r\n texture: InternalTexture,\r\n bufferView: ArrayBufferView[],\r\n _format: number,\r\n type: number,\r\n invertY: boolean,\r\n compression: Nullable<string> = null\r\n ): void {\r\n texture._bufferViewArray = bufferView;\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n const needConversion = gpuTextureWrapper._originalFormatIsRGB;\r\n\r\n const faces = [0, 2, 4, 1, 3, 5];\r\n\r\n const data = [];\r\n for (let i = 0; i < bufferView.length; ++i) {\r\n let faceData = bufferView[faces[i]];\r\n if (needConversion) {\r\n faceData = ConvertRGBtoRGBATextureData(faceData, texture.width, texture.height, type);\r\n }\r\n data.push(new Uint8Array(faceData.buffer, faceData.byteOffset, faceData.byteLength));\r\n }\r\n\r\n this._textureHelper.updateCubeTextures(data, gpuTextureWrapper.underlyingResource!, texture.width, texture.height, gpuTextureWrapper.format, invertY, false, 0, 0);\r\n if (texture.generateMipMaps) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n\r\n texture.isReady = true;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.createRawCubeTextureFromUrl = function (\r\n url: string,\r\n scene: Nullable<Scene>,\r\n size: number,\r\n format: number,\r\n type: number,\r\n noMipmap: boolean,\r\n callback: (ArrayBuffer: ArrayBuffer) => Nullable<ArrayBufferView[] | Promise<ArrayBufferView[]>>,\r\n mipmapGenerator: Nullable<(faces: ArrayBufferView[]) => ArrayBufferView[][]>,\r\n onLoad: Nullable<() => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n samplingMode: number = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE,\r\n invertY: boolean = false\r\n ): InternalTexture {\r\n const texture = this.createRawCubeTexture(null, size, format, type, !noMipmap, invertY, samplingMode, null);\r\n scene?.addPendingData(texture);\r\n texture.url = url;\r\n texture.isReady = false;\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n const onerror = (request?: IWebRequest, exception?: any) => {\r\n scene?.removePendingData(texture);\r\n if (onError && request) {\r\n onError(request.status + \" \" + request.statusText, exception);\r\n }\r\n };\r\n\r\n const internalCallbackAsync = async (data: any) => {\r\n const faceDataArraysResult = callback(data);\r\n if (!faceDataArraysResult) {\r\n return;\r\n }\r\n\r\n const faceDataArrays: any = faceDataArraysResult instanceof Promise ? await faceDataArraysResult : faceDataArraysResult;\r\n const width = texture.width;\r\n\r\n if (mipmapGenerator) {\r\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\r\n const mipData = mipmapGenerator(faceDataArrays);\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n const faces = [0, 1, 2, 3, 4, 5];\r\n for (let level = 0; level < mipData.length; level++) {\r\n const mipSize = width >> level;\r\n const allFaces = [];\r\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\r\n let mipFaceData = mipData[level][faces[faceIndex]];\r\n if (needConversion) {\r\n mipFaceData = ConvertRGBtoRGBATextureData(mipFaceData, mipSize, mipSize, type);\r\n }\r\n allFaces.push(new Uint8Array(mipFaceData.buffer, mipFaceData.byteOffset, mipFaceData.byteLength));\r\n }\r\n this._textureHelper.updateCubeTextures(allFaces, gpuTextureWrapper.underlyingResource!, mipSize, mipSize, gpuTextureWrapper.format, invertY, false, 0, 0);\r\n }\r\n } else {\r\n this.updateRawCubeTexture(texture, faceDataArrays, format, type, invertY);\r\n }\r\n\r\n texture.isReady = true;\r\n scene?.removePendingData(texture);\r\n\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n };\r\n\r\n this._loadFile(\r\n url,\r\n (data) => {\r\n // eslint-disable-next-line github/no-then\r\n internalCallbackAsync(data).catch((err) => {\r\n onerror(undefined, err);\r\n });\r\n },\r\n undefined,\r\n scene?.offlineProvider,\r\n true,\r\n onerror\r\n );\r\n\r\n return texture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.createRawTexture3D = function (\r\n data: Nullable<ArrayBufferView>,\r\n width: number,\r\n height: number,\r\n depth: number,\r\n format: number,\r\n generateMipMaps: boolean,\r\n invertY: boolean,\r\n samplingMode: number,\r\n compression: Nullable<string> = null,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n creationFlags: number = 0\r\n ): InternalTexture {\r\n const source = InternalTextureSource.Raw3D;\r\n const texture = new InternalTexture(this, source);\r\n\r\n texture.baseWidth = width;\r\n texture.baseHeight = height;\r\n texture.baseDepth = depth;\r\n texture.width = width;\r\n texture.height = height;\r\n texture.depth = depth;\r\n texture.format = format;\r\n texture.type = textureType;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.samplingMode = samplingMode;\r\n texture.is3D = true;\r\n texture._creationFlags = creationFlags;\r\n\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = data;\r\n }\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, width, height, undefined, creationFlags);\r\n\r\n this.updateRawTexture3D(texture, data, format, invertY, compression, textureType);\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n return texture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.updateRawTexture3D = function (\r\n texture: InternalTexture,\r\n bufferView: Nullable<ArrayBufferView>,\r\n format: number,\r\n invertY: boolean,\r\n compression: Nullable<string> = null,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE\r\n ): void {\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = bufferView;\r\n texture.format = format;\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n }\r\n\r\n if (bufferView) {\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\r\n\r\n if (needConversion) {\r\n bufferView = ConvertRGBtoRGBATextureData(bufferView, texture.width, texture.height, textureType);\r\n }\r\n\r\n const data = new Uint8Array(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\r\n\r\n this._textureHelper.updateTexture(data, texture, texture.width, texture.height, texture.depth, gpuTextureWrapper.format, 0, 0, invertY, false, 0, 0);\r\n if (texture.generateMipMaps) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n }\r\n\r\n texture.isReady = true;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.createRawTexture2DArray = function (\r\n data: Nullable<ArrayBufferView>,\r\n width: number,\r\n height: number,\r\n depth: number,\r\n format: number,\r\n generateMipMaps: boolean,\r\n invertY: boolean,\r\n samplingMode: number,\r\n compression: Nullable<string> = null,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n creationFlags: number = 0,\r\n mipLevelCount?: number\r\n ): InternalTexture {\r\n const source = InternalTextureSource.Raw2DArray;\r\n const texture = new InternalTexture(this, source);\r\n\r\n texture.baseWidth = width;\r\n texture.baseHeight = height;\r\n texture.baseDepth = depth;\r\n texture.width = width;\r\n texture.height = height;\r\n texture.depth = depth;\r\n texture.format = format;\r\n texture.type = textureType;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.samplingMode = samplingMode;\r\n texture.is2DArray = true;\r\n texture._creationFlags = creationFlags;\r\n\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = data;\r\n }\r\n\r\n this._textureHelper.updateMipLevelCountForInternalTexture(texture, mipLevelCount);\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, width, height, depth, creationFlags);\r\n\r\n this.updateRawTexture2DArray(texture, data, format, invertY, compression, textureType);\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n return texture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.updateRawTexture2DArray = function (\r\n texture: InternalTexture,\r\n bufferView: Nullable<ArrayBufferView>,\r\n format: number,\r\n invertY: boolean,\r\n compression: Nullable<string> = null,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n mipLevel?: number\r\n ): void {\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = bufferView;\r\n texture.format = format;\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n if (mipLevel !== undefined && bufferView) {\r\n if (!texture._bufferViewArray) {\r\n texture._bufferViewArray = new Array(texture.mipLevelCount);\r\n }\r\n texture._bufferViewArray[mipLevel] = bufferView;\r\n }\r\n }\r\n\r\n if (bufferView) {\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\r\n\r\n if (needConversion) {\r\n bufferView = ConvertRGBtoRGBATextureData(bufferView, texture.width, texture.height, textureType);\r\n }\r\n\r\n const data = new Uint8Array(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\r\n\r\n const mipWidth = Math.max(1, texture.width >> (mipLevel ?? 0));\r\n const mipHeight = Math.max(1, texture.height >> (mipLevel ?? 0));\r\n this._textureHelper.updateTexture(data, texture, mipWidth, mipHeight, texture.depth, gpuTextureWrapper.format, 0, mipLevel ?? 0, invertY, false, 0, 0);\r\n if (texture.generateMipMaps && !mipLevel) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n }\r\n\r\n texture.isReady = true;\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"engine.rawTexture.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.rawTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { InternalTextureSource, InternalTexture } from \"../../../Materials/Textures/internalTexture\";\r\nimport { type IWebRequest } from \"../../../Misc/interfaces/iWebRequest\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { Constants } from \"../../constants\";\r\nimport { type WebGPUHardwareTexture } from \"../webgpuHardwareTexture\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { type Scene } from \"../../../scene.pure\";\r\nimport { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\r\n\r\n/**\r\n * @internal\r\n */\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for enginesWebGPUExtensionsEngineRawTexture.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterEnginesWebGPUExtensionsEngineRawTexture(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n function ConvertRGBtoRGBATextureData(rgbData: any, width: number, height: number, textureType: number): ArrayBufferView {\r\n // Create new RGBA data container.\r\n let rgbaData: any;\r\n let val1 = 1;\r\n if (textureType === Constants.TEXTURETYPE_FLOAT) {\r\n rgbaData = new Float32Array(width * height * 4);\r\n } else if (textureType === Constants.TEXTURETYPE_HALF_FLOAT) {\r\n rgbaData = new Uint16Array(width * height * 4);\r\n val1 = 15360; // 15360 is the encoding of 1 in half float\r\n } else if (textureType === Constants.TEXTURETYPE_UNSIGNED_INTEGER) {\r\n rgbaData = new Uint32Array(width * height * 4);\r\n } else {\r\n rgbaData = new Uint8Array(width * height * 4);\r\n }\r\n\r\n // Convert each pixel.\r\n for (let x = 0; x < width; x++) {\r\n for (let y = 0; y < height; y++) {\r\n const index = (y * width + x) * 3;\r\n const newIndex = (y * width + x) * 4;\r\n\r\n // Map Old Value to new value.\r\n rgbaData[newIndex + 0] = rgbData[index + 0];\r\n rgbaData[newIndex + 1] = rgbData[index + 1];\r\n rgbaData[newIndex + 2] = rgbData[index + 2];\r\n\r\n // Add fully opaque alpha channel.\r\n rgbaData[newIndex + 3] = val1;\r\n }\r\n }\r\n\r\n return rgbaData;\r\n }\r\n\r\n ThinWebGPUEngine.prototype.createRawTexture = function (\r\n data: Nullable<ArrayBufferView>,\r\n width: number,\r\n height: number,\r\n format: number,\r\n generateMipMaps: boolean,\r\n invertY: boolean,\r\n samplingMode: number,\r\n compression: Nullable<string> = null,\r\n type: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n creationFlags: number = 0,\r\n useSRGBBuffer: boolean = false,\r\n mipLevelCount?: number\r\n ): InternalTexture {\r\n const texture = new InternalTexture(this, InternalTextureSource.Raw);\r\n texture.baseWidth = width;\r\n texture.baseHeight = height;\r\n texture.width = width;\r\n texture.height = height;\r\n texture.format = format;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.samplingMode = samplingMode;\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n texture.type = type;\r\n texture._creationFlags = creationFlags;\r\n texture._useSRGBBuffer = useSRGBBuffer;\r\n\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = data;\r\n }\r\n\r\n this._textureHelper.updateMipLevelCountForInternalTexture(texture, mipLevelCount);\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, width, height, undefined, creationFlags);\r\n\r\n this.updateRawTexture(texture, data, format, invertY, compression, type, useSRGBBuffer);\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n return texture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.updateRawTexture = function (\r\n texture: Nullable<InternalTexture>,\r\n bufferView: Nullable<ArrayBufferView>,\r\n format: number,\r\n invertY: boolean,\r\n compression: Nullable<string> = null,\r\n type: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n useSRGBBuffer: boolean = false,\r\n mipLevel?: number\r\n ): void {\r\n if (!texture) {\r\n return;\r\n }\r\n\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = bufferView;\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n texture._useSRGBBuffer = useSRGBBuffer;\r\n if (mipLevel !== undefined && bufferView) {\r\n if (!texture._bufferViewArray) {\r\n texture._bufferViewArray = new Array(texture.mipLevelCount);\r\n }\r\n texture._bufferViewArray[mipLevel] = bufferView;\r\n }\r\n }\r\n\r\n if (bufferView) {\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\r\n\r\n if (needConversion) {\r\n bufferView = ConvertRGBtoRGBATextureData(bufferView, texture.width, texture.height, type);\r\n }\r\n\r\n const data = new Uint8Array(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\r\n\r\n const mipWidth = Math.max(1, texture.width >> (mipLevel ?? 0));\r\n const mipHeight = Math.max(1, texture.height >> (mipLevel ?? 0));\r\n this._textureHelper.updateTexture(data, texture, mipWidth, mipHeight, texture.depth, gpuTextureWrapper.format, 0, mipLevel ?? 0, invertY, false, 0, 0);\r\n if (texture.generateMipMaps && !mipLevel) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n }\r\n\r\n texture.isReady = true;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.createRawCubeTexture = function (\r\n data: Nullable<ArrayBufferView[]>,\r\n size: number,\r\n format: number,\r\n type: number,\r\n generateMipMaps: boolean,\r\n invertY: boolean,\r\n samplingMode: number,\r\n compression: Nullable<string> = null\r\n ): InternalTexture {\r\n const texture = new InternalTexture(this, InternalTextureSource.CubeRaw);\r\n\r\n if (type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloatLinearFiltering) {\r\n generateMipMaps = false;\r\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n Logger.Warn(\"Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\r\n } else if (type === Constants.TEXTURETYPE_HALF_FLOAT && !this._caps.textureHalfFloatLinearFiltering) {\r\n generateMipMaps = false;\r\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n Logger.Warn(\"Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.\");\r\n } else if (type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloatRender) {\r\n generateMipMaps = false;\r\n Logger.Warn(\"Render to float textures is not supported. Mipmap generation forced to false.\");\r\n } else if (type === Constants.TEXTURETYPE_HALF_FLOAT && !this._caps.colorBufferFloat) {\r\n generateMipMaps = false;\r\n Logger.Warn(\"Render to half float textures is not supported. Mipmap generation forced to false.\");\r\n }\r\n\r\n texture.isCube = true;\r\n texture._originalFormat = format;\r\n texture.format = format === Constants.TEXTUREFORMAT_RGB ? Constants.TEXTUREFORMAT_RGBA : format;\r\n texture.type = type;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.width = size;\r\n texture.height = size;\r\n texture.samplingMode = samplingMode;\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferViewArray = data;\r\n }\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n texture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n texture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture);\r\n\r\n if (format === Constants.TEXTUREFORMAT_RGB) {\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n gpuTextureWrapper._originalFormatIsRGB = true;\r\n }\r\n\r\n if (data) {\r\n this.updateRawCubeTexture(texture, data, format, type, invertY, compression);\r\n }\r\n\r\n texture.isReady = true;\r\n\r\n return texture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.updateRawCubeTexture = function (\r\n texture: InternalTexture,\r\n bufferView: ArrayBufferView[],\r\n _format: number,\r\n type: number,\r\n invertY: boolean,\r\n compression: Nullable<string> = null\r\n ): void {\r\n texture._bufferViewArray = bufferView;\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n const needConversion = gpuTextureWrapper._originalFormatIsRGB;\r\n\r\n const faces = [0, 2, 4, 1, 3, 5];\r\n\r\n const data = [];\r\n for (let i = 0; i < bufferView.length; ++i) {\r\n let faceData = bufferView[faces[i]];\r\n if (needConversion) {\r\n faceData = ConvertRGBtoRGBATextureData(faceData, texture.width, texture.height, type);\r\n }\r\n data.push(new Uint8Array(faceData.buffer, faceData.byteOffset, faceData.byteLength));\r\n }\r\n\r\n this._textureHelper.updateCubeTextures(data, texture, texture.width, texture.height, gpuTextureWrapper.format, invertY, false, 0, 0);\r\n if (texture.generateMipMaps) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n\r\n texture.isReady = true;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.createRawCubeTextureFromUrl = function (\r\n url: string,\r\n scene: Nullable<Scene>,\r\n size: number,\r\n format: number,\r\n type: number,\r\n noMipmap: boolean,\r\n callback: (ArrayBuffer: ArrayBuffer) => Nullable<ArrayBufferView[] | Promise<ArrayBufferView[]>>,\r\n mipmapGenerator: Nullable<(faces: ArrayBufferView[]) => ArrayBufferView[][]>,\r\n onLoad: Nullable<() => void> = null,\r\n onError: Nullable<(message?: string, exception?: any) => void> = null,\r\n samplingMode: number = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE,\r\n invertY: boolean = false\r\n ): InternalTexture {\r\n const texture = this.createRawCubeTexture(null, size, format, type, !noMipmap, invertY, samplingMode, null);\r\n scene?.addPendingData(texture);\r\n texture.url = url;\r\n texture.isReady = false;\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n const onerror = (request?: IWebRequest, exception?: any) => {\r\n scene?.removePendingData(texture);\r\n if (onError && request) {\r\n onError(request.status + \" \" + request.statusText, exception);\r\n }\r\n };\r\n\r\n const internalCallbackAsync = async (data: any) => {\r\n const faceDataArraysResult = callback(data);\r\n if (!faceDataArraysResult) {\r\n return;\r\n }\r\n\r\n const faceDataArrays: any = faceDataArraysResult instanceof Promise ? await faceDataArraysResult : faceDataArraysResult;\r\n const width = texture.width;\r\n\r\n if (mipmapGenerator) {\r\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\r\n const mipData = mipmapGenerator(faceDataArrays);\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n const faces = [0, 1, 2, 3, 4, 5];\r\n for (let level = 0; level < mipData.length; level++) {\r\n const mipSize = width >> level;\r\n const allFaces = [];\r\n for (let faceIndex = 0; faceIndex < 6; faceIndex++) {\r\n let mipFaceData = mipData[level][faces[faceIndex]];\r\n if (needConversion) {\r\n mipFaceData = ConvertRGBtoRGBATextureData(mipFaceData, mipSize, mipSize, type);\r\n }\r\n allFaces.push(new Uint8Array(mipFaceData.buffer, mipFaceData.byteOffset, mipFaceData.byteLength));\r\n }\r\n this._textureHelper.updateCubeTextures(allFaces, texture, mipSize, mipSize, gpuTextureWrapper.format, invertY, false, 0, 0);\r\n }\r\n } else {\r\n this.updateRawCubeTexture(texture, faceDataArrays, format, type, invertY);\r\n }\r\n\r\n texture.isReady = true;\r\n scene?.removePendingData(texture);\r\n\r\n if (onLoad) {\r\n onLoad();\r\n }\r\n };\r\n\r\n this._loadFile(\r\n url,\r\n (data) => {\r\n // eslint-disable-next-line github/no-then\r\n internalCallbackAsync(data).catch((err) => {\r\n onerror(undefined, err);\r\n });\r\n },\r\n undefined,\r\n scene?.offlineProvider,\r\n true,\r\n onerror\r\n );\r\n\r\n return texture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.createRawTexture3D = function (\r\n data: Nullable<ArrayBufferView>,\r\n width: number,\r\n height: number,\r\n depth: number,\r\n format: number,\r\n generateMipMaps: boolean,\r\n invertY: boolean,\r\n samplingMode: number,\r\n compression: Nullable<string> = null,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n creationFlags: number = 0\r\n ): InternalTexture {\r\n const source = InternalTextureSource.Raw3D;\r\n const texture = new InternalTexture(this, source);\r\n\r\n texture.baseWidth = width;\r\n texture.baseHeight = height;\r\n texture.baseDepth = depth;\r\n texture.width = width;\r\n texture.height = height;\r\n texture.depth = depth;\r\n texture.format = format;\r\n texture.type = textureType;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.samplingMode = samplingMode;\r\n texture.is3D = true;\r\n texture._creationFlags = creationFlags;\r\n\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = data;\r\n }\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, width, height, undefined, creationFlags);\r\n\r\n this.updateRawTexture3D(texture, data, format, invertY, compression, textureType);\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n return texture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.updateRawTexture3D = function (\r\n texture: InternalTexture,\r\n bufferView: Nullable<ArrayBufferView>,\r\n format: number,\r\n invertY: boolean,\r\n compression: Nullable<string> = null,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE\r\n ): void {\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = bufferView;\r\n texture.format = format;\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n }\r\n\r\n if (bufferView) {\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\r\n\r\n if (needConversion) {\r\n bufferView = ConvertRGBtoRGBATextureData(bufferView, texture.width, texture.height, textureType);\r\n }\r\n\r\n const data = new Uint8Array(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\r\n\r\n this._textureHelper.updateTexture(data, texture, texture.width, texture.height, texture.depth, gpuTextureWrapper.format, 0, 0, invertY, false, 0, 0);\r\n if (texture.generateMipMaps) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n }\r\n\r\n texture.isReady = true;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.createRawTexture2DArray = function (\r\n data: Nullable<ArrayBufferView>,\r\n width: number,\r\n height: number,\r\n depth: number,\r\n format: number,\r\n generateMipMaps: boolean,\r\n invertY: boolean,\r\n samplingMode: number,\r\n compression: Nullable<string> = null,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n creationFlags: number = 0,\r\n mipLevelCount?: number\r\n ): InternalTexture {\r\n const source = InternalTextureSource.Raw2DArray;\r\n const texture = new InternalTexture(this, source);\r\n\r\n texture.baseWidth = width;\r\n texture.baseHeight = height;\r\n texture.baseDepth = depth;\r\n texture.width = width;\r\n texture.height = height;\r\n texture.depth = depth;\r\n texture.format = format;\r\n texture.type = textureType;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.samplingMode = samplingMode;\r\n texture.is2DArray = true;\r\n texture._creationFlags = creationFlags;\r\n\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = data;\r\n }\r\n\r\n this._textureHelper.updateMipLevelCountForInternalTexture(texture, mipLevelCount);\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, width, height, depth, creationFlags);\r\n\r\n this.updateRawTexture2DArray(texture, data, format, invertY, compression, textureType);\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n return texture;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.updateRawTexture2DArray = function (\r\n texture: InternalTexture,\r\n bufferView: Nullable<ArrayBufferView>,\r\n format: number,\r\n invertY: boolean,\r\n compression: Nullable<string> = null,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n mipLevel?: number\r\n ): void {\r\n if (!this._doNotHandleContextLost) {\r\n texture._bufferView = bufferView;\r\n texture.format = format;\r\n texture.invertY = invertY;\r\n texture._compression = compression;\r\n if (mipLevel !== undefined && bufferView) {\r\n if (!texture._bufferViewArray) {\r\n texture._bufferViewArray = new Array(texture.mipLevelCount);\r\n }\r\n texture._bufferViewArray[mipLevel] = bufferView;\r\n }\r\n }\r\n\r\n if (bufferView) {\r\n const gpuTextureWrapper = texture._hardwareTexture as WebGPUHardwareTexture;\r\n const needConversion = format === Constants.TEXTUREFORMAT_RGB;\r\n\r\n if (needConversion) {\r\n bufferView = ConvertRGBtoRGBATextureData(bufferView, texture.width, texture.height, textureType);\r\n }\r\n\r\n const data = new Uint8Array(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);\r\n\r\n const mipWidth = Math.max(1, texture.width >> (mipLevel ?? 0));\r\n const mipHeight = Math.max(1, texture.height >> (mipLevel ?? 0));\r\n this._textureHelper.updateTexture(data, texture, mipWidth, mipHeight, texture.depth, gpuTextureWrapper.format, 0, mipLevel ?? 0, invertY, false, 0, 0);\r\n if (texture.generateMipMaps && !mipLevel) {\r\n this._generateMipmaps(texture, this._uploadEncoder);\r\n }\r\n }\r\n\r\n texture.isReady = true;\r\n };\r\n}\r\n"]}
@@ -143,6 +143,7 @@ export declare abstract class WebGPUCacheRenderPipeline {
143
143
  private _createPipelineLayout;
144
144
  private _createPipelineLayoutWithTextureStage;
145
145
  private _getVertexInputDescriptor;
146
+ private static _CanMergeVertexBuffer;
146
147
  private _buildRenderPipelineDescriptor;
147
148
  private _createRenderPipeline;
148
149
  /**
@@ -65,6 +65,8 @@ const stencilOpToIndex = {
65
65
  0x8508: 7, // DECR_WRAP
66
66
  };
67
67
  const colorStates = [0, 0, 0, 0];
68
+ // VertexBuffer.hashCode uses at most bit 23 for WebGPU's maximum 2048-byte stride.
69
+ const vertexBufferLayoutContinuation = 1 << 26;
68
70
  /** @internal */
69
71
  export class WebGPUCacheRenderPipeline {
70
72
  constructor(device, emptyVertexBuffer) {
@@ -72,7 +74,8 @@ export class WebGPUCacheRenderPipeline {
72
74
  this.mrtTextureCount = 0;
73
75
  this._device = device;
74
76
  this._useTextureStage = true; // we force usage because we must handle depth textures with "float" filtering, which can't be fixed by a caps (like "textureFloatLinearFiltering" can for float textures)
75
- this._states = new Array(30); // pre-allocate enough room so that no new allocation will take place afterwards
77
+ // Each attribute can add a format state and a non-zero descriptor offset state.
78
+ this._states = new Array(StatePosition.VertexState + 2 * (device.limits.maxVertexAttributes || 16));
76
79
  this._statesLength = 0;
77
80
  this._stateDirtyLowestIndex = 0;
78
81
  this._emptyVertexBuffer = emptyVertexBuffer;
@@ -712,14 +715,22 @@ export class WebGPUCacheRenderPipeline {
712
715
  vertexBuffer._validOffsetRange =
713
716
  (offset + formatSize <= this._kMaxVertexBufferStride && byteStride === 0) || (byteStride !== 0 && offset + formatSize <= byteStride);
714
717
  }
715
- if (!(currentGPUBuffer && currentGPUBuffer === buffer && vertexBuffer._validOffsetRange)) {
718
+ const canMergeWithCurrentBuffer = WebGPUCacheRenderPipeline._CanMergeVertexBuffer(currentGPUBuffer, buffer, vertexBuffer);
719
+ if (!canMergeWithCurrentBuffer) {
716
720
  // we can't combine the previous vertexBuffer with the current one
717
721
  this.vertexBuffers[numVertexBuffers++] = vertexBuffer;
718
722
  currentGPUBuffer = vertexBuffer._validOffsetRange ? buffer : null;
719
723
  }
720
- const vid = vertexBuffer.hashCode + (location << 7);
724
+ const vid = vertexBuffer.hashCode + (location << 7) + (canMergeWithCurrentBuffer ? vertexBufferLayoutContinuation : 0);
725
+ const descriptorOffset = vertexBuffer._validOffsetRange ? vertexBuffer.effectiveByteOffset : 0;
721
726
  this._isDirty = this._isDirty || this._states[newNumStates] !== vid;
722
727
  this._states[newNumStates++] = vid;
728
+ if (descriptorOffset !== 0) {
729
+ // Offset states are negative so they cannot collide with vertex format states.
730
+ const offsetState = -descriptorOffset;
731
+ this._isDirty = this._isDirty || this._states[newNumStates] !== offsetState;
732
+ this._states[newNumStates++] = offsetState;
733
+ }
723
734
  }
724
735
  this.vertexBuffers.length = numVertexBuffers;
725
736
  this._statesLength = newNumStates;
@@ -810,7 +821,7 @@ export class WebGPUCacheRenderPipeline {
810
821
  // We reuse the same GPUVertexBufferLayout for all attributes that use the same underlying GPU buffer (and for attributes that follow each other in the attributes array)
811
822
  let offset = vertexBuffer.effectiveByteOffset;
812
823
  const invalidOffsetRange = !vertexBuffer._validOffsetRange;
813
- if (!(currentGPUBuffer && currentGPUAttributes && currentGPUBuffer === buffer) || invalidOffsetRange) {
824
+ if (!WebGPUCacheRenderPipeline._CanMergeVertexBuffer(currentGPUBuffer, buffer, vertexBuffer)) {
814
825
  const vertexBufferDescriptor = {
815
826
  arrayStride: vertexBuffer.effectiveByteStride,
816
827
  stepMode: vertexBuffer.getIsInstanced() ? "instance" /* WebGPUConstants.VertexStepMode.Instance */ : "vertex" /* WebGPUConstants.VertexStepMode.Vertex */,
@@ -832,6 +843,9 @@ export class WebGPUCacheRenderPipeline {
832
843
  }
833
844
  return descriptors;
834
845
  }
846
+ static _CanMergeVertexBuffer(currentGPUBuffer, buffer, vertexBuffer) {
847
+ return !!currentGPUBuffer && currentGPUBuffer === buffer && vertexBuffer._validOffsetRange;
848
+ }
835
849
  _buildRenderPipelineDescriptor(effect, topology, sampleCount) {
836
850
  const webgpuPipelineContext = effect._pipelineContext;
837
851
  const inputStateDescriptor = this._getVertexInputDescriptor(effect);