@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.
- package/Animations/animatable.core.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSoundSource.d.ts +26 -0
- package/AudioV2/abstractAudio/abstractSoundSource.js.map +1 -1
- package/AudioV2/webAudio/webAudioEngine.js +2 -0
- package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
- package/AudioV2/webAudio/webAudioSoundSource.d.ts +16 -0
- package/AudioV2/webAudio/webAudioSoundSource.js +43 -1
- package/AudioV2/webAudio/webAudioSoundSource.js.map +1 -1
- package/Bones/skeleton.functions.js +1 -1
- package/Bones/skeleton.functions.js.map +1 -1
- package/Cameras/inputMapper.js.map +1 -1
- package/Debug/physicsViewer.pure.js +1 -1
- package/Debug/physicsViewer.pure.js.map +1 -1
- package/DeviceInput/webDeviceInputSystem.js +4 -0
- package/DeviceInput/webDeviceInputSystem.js.map +1 -1
- package/Engines/Extensions/engine.alphaToCoverage.d.ts +6 -0
- package/Engines/Extensions/engine.alphaToCoverage.js +9 -0
- package/Engines/Extensions/engine.alphaToCoverage.js.map +1 -0
- package/Engines/Extensions/engine.alphaToCoverage.pure.d.ts +6 -0
- package/Engines/Extensions/engine.alphaToCoverage.pure.js +54 -0
- package/Engines/Extensions/engine.alphaToCoverage.pure.js.map +1 -0
- package/Engines/Extensions/engine.alphaToCoverage.types.d.ts +21 -0
- package/Engines/Extensions/engine.alphaToCoverage.types.js +2 -0
- package/Engines/Extensions/engine.alphaToCoverage.types.js.map +1 -0
- package/Engines/Extensions/index.d.ts +1 -0
- package/Engines/Extensions/index.js +1 -0
- package/Engines/Extensions/index.js.map +1 -1
- package/Engines/Extensions/pure.d.ts +1 -0
- package/Engines/Extensions/pure.js +1 -0
- package/Engines/Extensions/pure.js.map +1 -1
- package/Engines/Native/nativeHelpers.js +6 -4
- package/Engines/Native/nativeHelpers.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +1 -0
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.d.ts +6 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.js +9 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.js.map +1 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.pure.d.ts +6 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.pure.js +34 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.pure.js.map +1 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.types.d.ts +16 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.types.js +2 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.types.js.map +1 -0
- package/Engines/WebGPU/Extensions/index.d.ts +1 -0
- package/Engines/WebGPU/Extensions/index.js +1 -0
- package/Engines/WebGPU/Extensions/index.js.map +1 -1
- package/Engines/WebGPU/Extensions/pure.d.ts +1 -0
- package/Engines/WebGPU/Extensions/pure.js +1 -0
- package/Engines/WebGPU/Extensions/pure.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +0 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +0 -15
- package/Engines/abstractEngine.pure.js +2 -23
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/constants.d.ts +4 -0
- package/Engines/constants.js +4 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/engine.d.ts +2 -2
- package/Engines/engine.js +1 -0
- package/Engines/engine.js.map +1 -1
- package/Engines/engine.pure.js +1 -1
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +0 -11
- package/Engines/thinEngine.pure.js +0 -19
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +2 -0
- package/Engines/webgpuEngine.js +2 -0
- package/Engines/webgpuEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +0 -5
- package/Engines/webgpuEngine.pure.js +1 -10
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
- package/Loading/loadingScreen.pure.js +2 -0
- package/Loading/loadingScreen.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +3 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
- package/Materials/Textures/ktx2decoderTypes.d.ts +14 -3
- package/Materials/Textures/ktx2decoderTypes.js +2 -0
- package/Materials/Textures/ktx2decoderTypes.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.functions.d.ts +29 -0
- package/Materials/Textures/rawTexture2DArray.functions.js +71 -0
- package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
- package/Materials/material.pure.d.ts +1 -0
- package/Materials/material.pure.js +1 -0
- package/Materials/material.pure.js.map +1 -1
- package/Meshes/Builders/pure.d.ts +2 -2
- package/Meshes/Builders/pure.js +2 -2
- package/Meshes/Builders/pure.js.map +1 -1
- package/Meshes/Builders/textBuilder.js.map +1 -1
- package/Meshes/Builders/tiledBoxBuilder.d.ts +1 -83
- package/Meshes/Builders/tiledBoxBuilder.js +3 -215
- package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
- package/Meshes/Builders/tiledBoxBuilder.pure.d.ts +89 -0
- package/Meshes/Builders/tiledBoxBuilder.pure.js +229 -0
- package/Meshes/Builders/tiledBoxBuilder.pure.js.map +1 -0
- package/Meshes/Builders/tiledPlaneBuilder.d.ts +1 -79
- package/Meshes/Builders/tiledPlaneBuilder.js +3 -429
- package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.pure.d.ts +85 -0
- package/Meshes/Builders/tiledPlaneBuilder.pure.js +442 -0
- package/Meshes/Builders/tiledPlaneBuilder.pure.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +50 -11
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +17 -4
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -1
- package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
- package/Meshes/abstractMesh.pure.js +5 -3
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/meshBuilder.d.ts +21 -57
- package/Meshes/meshBuilder.js +21 -58
- package/Meshes/meshBuilder.js.map +1 -1
- package/Meshes/meshBuilder.pure.d.ts +58 -0
- package/Meshes/meshBuilder.pure.js +60 -0
- package/Meshes/meshBuilder.pure.js.map +1 -0
- package/Meshes/pure.d.ts +1 -1
- package/Meshes/pure.js +1 -1
- package/Meshes/pure.js.map +1 -1
- package/Misc/greasedLineTools.js.map +1 -1
- package/Misc/khronosTextureContainer2.d.ts +10 -0
- package/Misc/khronosTextureContainer2.js +23 -12
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/perfCounter.d.ts +2 -0
- package/Misc/perfCounter.js +17 -2
- package/Misc/perfCounter.js.map +1 -1
- package/Misc/rgbdTextureTools.js +1 -1
- package/Misc/rgbdTextureTools.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Navigation/Plugins/recastJSPlugin.js +1 -1
- package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.d.ts +15 -0
- package/Physics/v2/Plugins/havokPlugin.js +16 -6
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/characterController.js +2 -2
- package/Physics/v2/characterController.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.d.ts +3 -0
- package/PostProcesses/volumetricLightScatteringPostProcess.js +3 -0
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.d.ts +1 -0
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +25 -6
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrDielectricReflectance.js +6 -6
- package/Shaders/ShadersInclude/openpbrDielectricReflectance.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/clusteredLightingCompute.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/clusteredLightingCompute.js +29 -0
- package/ShadersWGSL/ShadersInclude/clusteredLightingCompute.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/depthPrePass.js +2 -0
- package/ShadersWGSL/ShadersInclude/depthPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/lightFragment.js +2 -3
- package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +2 -17
- package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.js +7 -8
- package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.d.ts +6 -0
- package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js +123 -0
- package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +2 -111
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/ShadersWGSL/background.fragment.js +2 -1
- package/ShadersWGSL/background.fragment.js.map +1 -1
- package/ShadersWGSL/default.fragment.js +5 -1
- package/ShadersWGSL/default.fragment.js.map +1 -1
- package/ShadersWGSL/openpbr.fragment.js +5 -1
- package/ShadersWGSL/openpbr.fragment.js.map +1 -1
- package/ShadersWGSL/pbr.fragment.js +5 -1
- package/ShadersWGSL/pbr.fragment.js.map +1 -1
- package/ShadersWGSL/volumetricLightScattering.fragment.d.ts +5 -0
- package/ShadersWGSL/volumetricLightScattering.fragment.js +20 -0
- package/ShadersWGSL/volumetricLightScattering.fragment.js.map +1 -0
- package/ShadersWGSL/volumetricLightScatteringPass.fragment.d.ts +5 -0
- package/ShadersWGSL/volumetricLightScatteringPass.fragment.js +24 -0
- package/ShadersWGSL/volumetricLightScatteringPass.fragment.js.map +1 -0
- package/ShadersWGSL/volumetricLightScatteringPass.vertex.d.ts +5 -0
- package/ShadersWGSL/volumetricLightScatteringPass.vertex.js +67 -0
- package/ShadersWGSL/volumetricLightScatteringPass.vertex.js.map +1 -0
- package/SmartAssets/smartAssetManager.pure.js +9 -1
- package/SmartAssets/smartAssetManager.pure.js.map +1 -1
- package/States/alphaCullingState.d.ts +0 -9
- package/States/alphaCullingState.js +4 -31
- package/States/alphaCullingState.js.map +1 -1
- package/XR/features/WebXRLayers.pure.js +4 -4
- package/XR/features/WebXRLayers.pure.js.map +1 -1
- package/node.d.ts +18 -1
- package/node.js +52 -1
- package/node.js.map +1 -1
- package/package.json +1 -1
- package/scene.pure.d.ts +7 -0
- package/scene.pure.js +8 -0
- package/scene.pure.js.map +1 -1
- 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
|
-
|
|
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
|
-
|
|
1102
|
-
|
|
1103
|
-
cameraViewInfos.
|
|
1104
|
-
|
|
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] =
|
|
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
|
-
|
|
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);
|