@onerjs/core 8.54.2 → 8.54.4

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 (197) hide show
  1. package/Animations/animatable.core.js.map +1 -1
  2. package/AudioV2/abstractAudio/abstractSoundSource.d.ts +26 -0
  3. package/AudioV2/abstractAudio/abstractSoundSource.js.map +1 -1
  4. package/AudioV2/webAudio/webAudioEngine.js +2 -0
  5. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  6. package/AudioV2/webAudio/webAudioSoundSource.d.ts +16 -0
  7. package/AudioV2/webAudio/webAudioSoundSource.js +43 -1
  8. package/AudioV2/webAudio/webAudioSoundSource.js.map +1 -1
  9. package/Bones/skeleton.functions.js +1 -1
  10. package/Bones/skeleton.functions.js.map +1 -1
  11. package/Cameras/inputMapper.js.map +1 -1
  12. package/Debug/physicsViewer.pure.js +1 -1
  13. package/Debug/physicsViewer.pure.js.map +1 -1
  14. package/DeviceInput/webDeviceInputSystem.js +4 -0
  15. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  16. package/Engines/Extensions/engine.alphaToCoverage.d.ts +6 -0
  17. package/Engines/Extensions/engine.alphaToCoverage.js +9 -0
  18. package/Engines/Extensions/engine.alphaToCoverage.js.map +1 -0
  19. package/Engines/Extensions/engine.alphaToCoverage.pure.d.ts +6 -0
  20. package/Engines/Extensions/engine.alphaToCoverage.pure.js +54 -0
  21. package/Engines/Extensions/engine.alphaToCoverage.pure.js.map +1 -0
  22. package/Engines/Extensions/engine.alphaToCoverage.types.d.ts +21 -0
  23. package/Engines/Extensions/engine.alphaToCoverage.types.js +2 -0
  24. package/Engines/Extensions/engine.alphaToCoverage.types.js.map +1 -0
  25. package/Engines/Extensions/index.d.ts +1 -0
  26. package/Engines/Extensions/index.js +1 -0
  27. package/Engines/Extensions/index.js.map +1 -1
  28. package/Engines/Extensions/pure.d.ts +1 -0
  29. package/Engines/Extensions/pure.js +1 -0
  30. package/Engines/Extensions/pure.js.map +1 -1
  31. package/Engines/Native/nativeHelpers.js +6 -4
  32. package/Engines/Native/nativeHelpers.js.map +1 -1
  33. package/Engines/Native/nativeInterfaces.d.ts +1 -0
  34. package/Engines/Native/nativeInterfaces.js.map +1 -1
  35. package/Engines/WebGPU/Extensions/engine.alphaToCoverage.d.ts +6 -0
  36. package/Engines/WebGPU/Extensions/engine.alphaToCoverage.js +9 -0
  37. package/Engines/WebGPU/Extensions/engine.alphaToCoverage.js.map +1 -0
  38. package/Engines/WebGPU/Extensions/engine.alphaToCoverage.pure.d.ts +6 -0
  39. package/Engines/WebGPU/Extensions/engine.alphaToCoverage.pure.js +34 -0
  40. package/Engines/WebGPU/Extensions/engine.alphaToCoverage.pure.js.map +1 -0
  41. package/Engines/WebGPU/Extensions/engine.alphaToCoverage.types.d.ts +16 -0
  42. package/Engines/WebGPU/Extensions/engine.alphaToCoverage.types.js +2 -0
  43. package/Engines/WebGPU/Extensions/engine.alphaToCoverage.types.js.map +1 -0
  44. package/Engines/WebGPU/Extensions/index.d.ts +1 -0
  45. package/Engines/WebGPU/Extensions/index.js +1 -0
  46. package/Engines/WebGPU/Extensions/index.js.map +1 -1
  47. package/Engines/WebGPU/Extensions/pure.d.ts +1 -0
  48. package/Engines/WebGPU/Extensions/pure.js +1 -0
  49. package/Engines/WebGPU/Extensions/pure.js.map +1 -1
  50. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +0 -1
  51. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  52. package/Engines/abstractEngine.pure.d.ts +0 -15
  53. package/Engines/abstractEngine.pure.js +2 -23
  54. package/Engines/abstractEngine.pure.js.map +1 -1
  55. package/Engines/constants.d.ts +4 -0
  56. package/Engines/constants.js +4 -0
  57. package/Engines/constants.js.map +1 -1
  58. package/Engines/engine.d.ts +2 -2
  59. package/Engines/engine.js +1 -0
  60. package/Engines/engine.js.map +1 -1
  61. package/Engines/engine.pure.js +1 -1
  62. package/Engines/engine.pure.js.map +1 -1
  63. package/Engines/thinEngine.pure.d.ts +0 -11
  64. package/Engines/thinEngine.pure.js +0 -19
  65. package/Engines/thinEngine.pure.js.map +1 -1
  66. package/Engines/webgpuEngine.d.ts +2 -0
  67. package/Engines/webgpuEngine.js +2 -0
  68. package/Engines/webgpuEngine.js.map +1 -1
  69. package/Engines/webgpuEngine.pure.d.ts +0 -5
  70. package/Engines/webgpuEngine.pure.js +1 -10
  71. package/Engines/webgpuEngine.pure.js.map +1 -1
  72. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
  73. package/Loading/loadingScreen.pure.js +2 -0
  74. package/Loading/loadingScreen.pure.js.map +1 -1
  75. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
  76. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +3 -1
  77. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
  78. package/Materials/Textures/ktx2decoderTypes.d.ts +14 -3
  79. package/Materials/Textures/ktx2decoderTypes.js +2 -0
  80. package/Materials/Textures/ktx2decoderTypes.js.map +1 -1
  81. package/Materials/Textures/rawTexture2DArray.functions.d.ts +29 -0
  82. package/Materials/Textures/rawTexture2DArray.functions.js +71 -0
  83. package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
  84. package/Materials/material.pure.d.ts +1 -0
  85. package/Materials/material.pure.js +1 -0
  86. package/Materials/material.pure.js.map +1 -1
  87. package/Meshes/Builders/pure.d.ts +2 -2
  88. package/Meshes/Builders/pure.js +2 -2
  89. package/Meshes/Builders/pure.js.map +1 -1
  90. package/Meshes/Builders/textBuilder.js.map +1 -1
  91. package/Meshes/Builders/tiledBoxBuilder.d.ts +1 -83
  92. package/Meshes/Builders/tiledBoxBuilder.js +3 -215
  93. package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
  94. package/Meshes/Builders/tiledBoxBuilder.pure.d.ts +89 -0
  95. package/Meshes/Builders/tiledBoxBuilder.pure.js +229 -0
  96. package/Meshes/Builders/tiledBoxBuilder.pure.js.map +1 -0
  97. package/Meshes/Builders/tiledPlaneBuilder.d.ts +1 -79
  98. package/Meshes/Builders/tiledPlaneBuilder.js +3 -429
  99. package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
  100. package/Meshes/Builders/tiledPlaneBuilder.pure.d.ts +85 -0
  101. package/Meshes/Builders/tiledPlaneBuilder.pure.js +442 -0
  102. package/Meshes/Builders/tiledPlaneBuilder.pure.js.map +1 -0
  103. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +50 -11
  104. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  105. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +17 -4
  106. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -1
  107. package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
  108. package/Meshes/abstractMesh.pure.js +5 -3
  109. package/Meshes/abstractMesh.pure.js.map +1 -1
  110. package/Meshes/meshBuilder.d.ts +21 -57
  111. package/Meshes/meshBuilder.js +21 -58
  112. package/Meshes/meshBuilder.js.map +1 -1
  113. package/Meshes/meshBuilder.pure.d.ts +58 -0
  114. package/Meshes/meshBuilder.pure.js +60 -0
  115. package/Meshes/meshBuilder.pure.js.map +1 -0
  116. package/Meshes/pure.d.ts +1 -1
  117. package/Meshes/pure.js +1 -1
  118. package/Meshes/pure.js.map +1 -1
  119. package/Misc/greasedLineTools.js.map +1 -1
  120. package/Misc/khronosTextureContainer2.d.ts +10 -0
  121. package/Misc/khronosTextureContainer2.js +23 -12
  122. package/Misc/khronosTextureContainer2.js.map +1 -1
  123. package/Misc/perfCounter.d.ts +2 -0
  124. package/Misc/perfCounter.js +17 -2
  125. package/Misc/perfCounter.js.map +1 -1
  126. package/Misc/rgbdTextureTools.js +1 -1
  127. package/Misc/rgbdTextureTools.js.map +1 -1
  128. package/Misc/tools.pure.js +1 -1
  129. package/Misc/tools.pure.js.map +1 -1
  130. package/Navigation/Plugins/recastJSPlugin.js +1 -1
  131. package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
  132. package/Physics/v2/Plugins/havokPlugin.d.ts +15 -0
  133. package/Physics/v2/Plugins/havokPlugin.js +16 -6
  134. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  135. package/Physics/v2/characterController.js +2 -2
  136. package/Physics/v2/characterController.js.map +1 -1
  137. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
  138. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
  139. package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
  140. package/PostProcesses/volumetricLightScatteringPostProcess.d.ts +3 -0
  141. package/PostProcesses/volumetricLightScatteringPostProcess.js +3 -0
  142. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  143. package/PostProcesses/volumetricLightScatteringPostProcess.pure.d.ts +1 -0
  144. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +25 -6
  145. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
  146. package/Shaders/ShadersInclude/openpbrDielectricReflectance.js +6 -6
  147. package/Shaders/ShadersInclude/openpbrDielectricReflectance.js.map +1 -1
  148. package/ShadersWGSL/ShadersInclude/clusteredLightingCompute.d.ts +5 -0
  149. package/ShadersWGSL/ShadersInclude/clusteredLightingCompute.js +29 -0
  150. package/ShadersWGSL/ShadersInclude/clusteredLightingCompute.js.map +1 -0
  151. package/ShadersWGSL/ShadersInclude/depthPrePass.js +2 -0
  152. package/ShadersWGSL/ShadersInclude/depthPrePass.js.map +1 -1
  153. package/ShadersWGSL/ShadersInclude/lightFragment.js +2 -3
  154. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  155. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.d.ts +1 -0
  156. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +2 -17
  157. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  158. package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.js +7 -8
  159. package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.js.map +1 -1
  160. package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.d.ts +6 -0
  161. package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js +123 -0
  162. package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -0
  163. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.d.ts +1 -1
  164. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +2 -111
  165. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  166. package/ShadersWGSL/background.fragment.js +2 -1
  167. package/ShadersWGSL/background.fragment.js.map +1 -1
  168. package/ShadersWGSL/default.fragment.js +5 -1
  169. package/ShadersWGSL/default.fragment.js.map +1 -1
  170. package/ShadersWGSL/openpbr.fragment.js +5 -1
  171. package/ShadersWGSL/openpbr.fragment.js.map +1 -1
  172. package/ShadersWGSL/pbr.fragment.js +5 -1
  173. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  174. package/ShadersWGSL/volumetricLightScattering.fragment.d.ts +5 -0
  175. package/ShadersWGSL/volumetricLightScattering.fragment.js +20 -0
  176. package/ShadersWGSL/volumetricLightScattering.fragment.js.map +1 -0
  177. package/ShadersWGSL/volumetricLightScatteringPass.fragment.d.ts +5 -0
  178. package/ShadersWGSL/volumetricLightScatteringPass.fragment.js +24 -0
  179. package/ShadersWGSL/volumetricLightScatteringPass.fragment.js.map +1 -0
  180. package/ShadersWGSL/volumetricLightScatteringPass.vertex.d.ts +5 -0
  181. package/ShadersWGSL/volumetricLightScatteringPass.vertex.js +67 -0
  182. package/ShadersWGSL/volumetricLightScatteringPass.vertex.js.map +1 -0
  183. package/SmartAssets/smartAssetManager.pure.js +9 -1
  184. package/SmartAssets/smartAssetManager.pure.js.map +1 -1
  185. package/States/alphaCullingState.d.ts +0 -9
  186. package/States/alphaCullingState.js +4 -31
  187. package/States/alphaCullingState.js.map +1 -1
  188. package/XR/features/WebXRLayers.pure.js +4 -4
  189. package/XR/features/WebXRLayers.pure.js.map +1 -1
  190. package/node.d.ts +18 -1
  191. package/node.js +52 -1
  192. package/node.js.map +1 -1
  193. package/package.json +1 -1
  194. package/scene.pure.d.ts +7 -0
  195. package/scene.pure.js +8 -0
  196. package/scene.pure.js.map +1 -1
  197. package/types.js.map +1 -1
@@ -1044,7 +1044,11 @@ export class GaussianSplattingMeshBase extends Mesh {
1044
1044
  }
1045
1045
  return a.frameIdLastUpdate - b.frameIdLastUpdate;
1046
1046
  });
1047
- const hasSortFunction = this._worker || Native?.sortSplats || this._disableDepthSort;
1047
+ // The native sort writes into _splatPositions/_splatIndex: both must be allocated (they still are
1048
+ // null before any splat data has been committed) or the native binding throws on the conversion.
1049
+ const hasNativeSort = !!Native?.sortSplats && !!this._splatPositions && !!this._splatIndex;
1050
+ // When depth sort is disabled, no sort function must run: fall through to the no-sort path below.
1051
+ const hasSortFunction = !this._disableDepthSort && (this._worker || hasNativeSort);
1048
1052
  if ((forced || outdated) && hasSortFunction && (this._scene.activeCameras?.length || this._scene.activeCamera) && this._canPostToWorker) {
1049
1053
  const worldMatrix = this.computeWorldMatrix(true);
1050
1054
  // view infos sorted by least recent updated frame id
@@ -1098,14 +1102,16 @@ export class GaussianSplattingMeshBase extends Mesh {
1098
1102
  });
1099
1103
  }
1100
1104
  else if (this._disableDepthSort) {
1101
- activeViewInfos.forEach((cameraViewInfos) => {
1102
- if (!cameraViewInfos.splatIndexBufferSet) {
1103
- cameraViewInfos.mesh.thinInstanceSetBuffer("splatIndex", this._splatIndex, 16, false);
1104
- cameraViewInfos.splatIndexBufferSet = true;
1105
- }
1106
- });
1105
+ if (this._splatIndex) {
1106
+ activeViewInfos.forEach((cameraViewInfos) => {
1107
+ if (!cameraViewInfos.splatIndexBufferSet) {
1108
+ cameraViewInfos.mesh.thinInstanceSetBuffer("splatIndex", this._splatIndex, 16, false);
1109
+ cameraViewInfos.splatIndexBufferSet = true;
1110
+ }
1111
+ });
1112
+ this._readyToDisplay = true;
1113
+ }
1107
1114
  this._canPostToWorker = true;
1108
- this._readyToDisplay = true;
1109
1115
  }
1110
1116
  }
1111
1117
  /**
@@ -2161,6 +2167,18 @@ export class GaussianSplattingMeshBase extends Mesh {
2161
2167
  this._postToWorker(true);
2162
2168
  }
2163
2169
  else {
2170
+ // Full rebuild: the texture size changed (or this is a size-changing reload), so the existing
2171
+ // GPU textures cannot be reused. Dispose them before recreating to avoid leaking the old ones.
2172
+ this._covariancesATexture?.dispose();
2173
+ this._covariancesBTexture?.dispose();
2174
+ this._centersTexture?.dispose();
2175
+ this._colorsTexture?.dispose();
2176
+ if (this._shTextures) {
2177
+ for (const shTexture of this._shTextures) {
2178
+ shTexture.dispose();
2179
+ }
2180
+ this._shTextures = null;
2181
+ }
2164
2182
  this._textureSize = textureSize;
2165
2183
  this._covariancesATexture = createTextureFromDataF16(covA, textureSize.x, textureSize.y, 5);
2166
2184
  this._covariancesBTexture = createTextureFromDataF16(covB, textureSize.x, textureSize.y, this._useRGBACovariants ? 5 : 7);
@@ -2458,8 +2476,10 @@ export class GaussianSplattingMeshBase extends Mesh {
2458
2476
  splatIndex[index++] = sourceIndex;
2459
2477
  }
2460
2478
  }
2479
+ // Pad with `vertexCount` itself, not 0: splat 0 is real data, not a reserved empty slot, and
2480
+ // range filtering can leave it fully visible — see gaussianSplattingSortWorker.ts.
2461
2481
  for (; index < paddedVertexCount; index++) {
2462
- splatIndex[index] = 0;
2482
+ splatIndex[index] = vertexCount;
2463
2483
  }
2464
2484
  }
2465
2485
  else {
@@ -2550,10 +2570,12 @@ export class GaussianSplattingMeshBase extends Mesh {
2550
2570
  if (!this._vertexCount) {
2551
2571
  return;
2552
2572
  }
2573
+ // The identity index buffer must exist even when no sort worker is needed: every render path
2574
+ // (including the Native one) reads it, and a null buffer breaks the Native bindings.
2575
+ this._updateSplatIndexBuffer(this._vertexCount);
2553
2576
  if (this._disableDepthSort) {
2554
2577
  return;
2555
2578
  }
2556
- this._updateSplatIndexBuffer(this._vertexCount);
2557
2579
  // no worker in native
2558
2580
  if (IsNative) {
2559
2581
  return;
@@ -2568,7 +2590,8 @@ export class GaussianSplattingMeshBase extends Mesh {
2568
2590
  type: "application/javascript",
2569
2591
  })));
2570
2592
  const positions = Float32Array.from(this._splatPositions);
2571
- this._worker.postMessage({ command: GaussianSplattingSortWorkerCommand.POSITIONS, positions }, [positions.buffer]);
2593
+ const vertexCount = this._vertexCount;
2594
+ this._worker.postMessage({ command: GaussianSplattingSortWorkerCommand.POSITIONS, positions, vertexCount }, [positions.buffer]);
2572
2595
  // The main thread owns the active interval set: send it explicitly (covering all indices when
2573
2596
  // no LOD filter is active) rather than letting the worker assume the full source set.
2574
2597
  this._postIntervalsToWorker();
@@ -2652,9 +2675,25 @@ export class GaussianSplattingMeshBase extends Mesh {
2652
2675
  while (width * height < length) {
2653
2676
  height *= 2;
2654
2677
  }
2678
+ // See the WebGL2/WebGPU branch below for why this guarantees an extra row when `length`
2679
+ // exactly fills every row. A power-of-2 height has to double to add any slack at all.
2680
+ // Usually this is a no-op since it is rare that the asset exactly contains a power-of-2
2681
+ // number of splats.
2682
+ if (length > 0 && width * height === length) {
2683
+ height *= 2;
2684
+ }
2655
2685
  }
2656
2686
  else {
2657
2687
  height = Math.ceil(length / width);
2688
+ // When `length` exactly fills every row, force one extra (fully zeroed) row so the atlas
2689
+ // always has at least one genuinely-empty splat slot past the real data, at index `length`.
2690
+ // The sort worker (gaussianSplattingSortWorker.ts) relies on that slot always existing to
2691
+ // safely pad the 16-aligned draw order — without it, the only "spare" index would be the
2692
+ // last real splat, which range-filtering (setSplatIndexRanges/opacity/size culling) can
2693
+ // leave fully visible and opaque, reproducing the same "stuck in front" bug on that splat.
2694
+ if (length > 0 && height * width === length) {
2695
+ height += 1;
2696
+ }
2658
2697
  }
2659
2698
  if (height > width) {
2660
2699
  Logger.Error("GaussianSplatting texture size: (" + width + ", " + height + "), maxTextureSize: " + width);