@rings-webgpu/core 1.0.12 → 1.0.13

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.
@@ -7,6 +7,7 @@ import { PassType } from "../../gfx/renderJob/passRenderer/state/PassType";
7
7
  import { GaussianSplatAsset } from "../../loader/parser/3dgs/GaussianSplatAsset";
8
8
  import { Uint8ArrayTexture } from "../../textures/Uint8ArrayTexture";
9
9
  import { Uint32ArrayTexture } from "../../textures/Uint32ArrayTexture";
10
+ import { R32UintTexture } from "../../textures/R32UintTexture";
10
11
  import { Float16ArrayTexture } from "../../textures/Float16ArrayTexture";
11
12
  import { Vector2 } from "../../math/Vector2";
12
13
  /**
@@ -22,7 +23,7 @@ export declare class GSplatRenderer extends RenderNode {
22
23
  transformA: Uint32ArrayTexture;
23
24
  transformB: Float16ArrayTexture;
24
25
  texParams: Float32Array;
25
- splatOrder: Uint32ArrayTexture;
26
+ splatOrder: R32UintTexture;
26
27
  gsplatMaterial: GSplatMaterial;
27
28
  private _positions;
28
29
  get positions(): Float32Array;
@@ -35,6 +36,8 @@ export declare class GSplatRenderer extends RenderNode {
35
36
  private _lastViewMatrixHash;
36
37
  private _lastCameraSpeed;
37
38
  private _adaptiveSorting;
39
+ private _lastPixelCullParams;
40
+ private _texturesInitialized;
38
41
  private _lodEnabled;
39
42
  private _lodDistances;
40
43
  private _lodRatios;
@@ -45,6 +48,8 @@ export declare class GSplatRenderer extends RenderNode {
45
48
  private _mapping;
46
49
  private _fullCount;
47
50
  get fullCount(): number;
51
+ private _batchSize;
52
+ instanceCount: number;
48
53
  constructor();
49
54
  /**
50
55
  * Initialize from Gaussian Splat asset
@@ -108,6 +113,16 @@ export declare class GSplatRenderer extends RenderNode {
108
113
  maxEnabled: boolean;
109
114
  distanceEnabled: boolean;
110
115
  };
116
+ /**
117
+ * Get batching statistics
118
+ */
119
+ getBatchingStats(): {
120
+ enabled: boolean;
121
+ batchSize: number;
122
+ instanceCount: number;
123
+ splatCount: number;
124
+ reduction: number;
125
+ };
111
126
  /**
112
127
  * Calculate texture size for given splat count
113
128
  */
@@ -136,10 +151,6 @@ export declare class GSplatRenderer extends RenderNode {
136
151
  * Update node before rendering
137
152
  */
138
153
  nodeUpdate(view: View3D, passType: PassType, renderPassState: RendererPassState, clusterLightingBuffer?: ClusterLightingBuffer): void;
139
- /**
140
- * Render pass
141
- */
142
- renderPass2(view: View3D, passType: PassType, rendererPassState: RendererPassState, clusterLightingBuffer: ClusterLightingBuffer, encoder: GPURenderPassEncoder, useBundle?: boolean): void;
143
154
  /**
144
155
  * Render pass (fallback)
145
156
  */
@@ -18,7 +18,8 @@ export declare class RendererJob {
18
18
  shadowMapPassRenderer: ShadowMapPassRenderer;
19
19
  pointLightShadowRenderer: PointLightShadowRenderer;
20
20
  ddgiProbeRenderer: DDGIProbeRenderer;
21
- postRenderer: PostRenderer;
21
+ _postRenderer: PostRenderer;
22
+ get postRenderer(): PostRenderer;
22
23
  clusterLightingRender: ClusterLightingRender;
23
24
  reflectionRenderer: ReflectionRenderer;
24
25
  occlusionSystem: OcclusionSystem;
@@ -545,6 +545,7 @@ export * from "./setting/post/SSRSetting";
545
545
  export * from "./setting/post/TAASetting";
546
546
  export * from "./shape/BoxGeometry";
547
547
  export * from "./shape/CylinderGeometry";
548
+ export * from "./shape/GSplatGeometry";
548
549
  export * from "./shape/PlaneGeometry";
549
550
  export * from "./shape/SphereGeometry";
550
551
  export * from "./shape/TorusGeometry";
@@ -561,6 +562,7 @@ export * from "./textures/Float32ArrayTexture";
561
562
  export * from "./textures/HDRTexture";
562
563
  export * from "./textures/HDRTextureCube";
563
564
  export * from "./textures/LDRTextureCube";
565
+ export * from "./textures/R32UintTexture";
564
566
  export * from "./textures/RenderTexture";
565
567
  export * from "./textures/SolidColorSky";
566
568
  export * from "./textures/TextureCubeFaceData";
@@ -2,6 +2,7 @@ import { Material } from "./Material";
2
2
  import { Float16ArrayTexture } from "../textures/Float16ArrayTexture";
3
3
  import { Uint8ArrayTexture } from "../textures/Uint8ArrayTexture";
4
4
  import { Uint32ArrayTexture } from "../textures/Uint32ArrayTexture";
5
+ import { R32UintTexture } from "../textures/R32UintTexture";
5
6
  import { Matrix4 } from "../math/Matrix4";
6
7
  /**
7
8
  * GSplat Material
@@ -9,8 +10,9 @@ import { Matrix4 } from "../math/Matrix4";
9
10
  * @group Material
10
11
  */
11
12
  export declare class GSplatMaterial extends Material {
13
+ private _pixelCullArray;
12
14
  constructor();
13
- setSplatTextures(splatColor: Uint8ArrayTexture, transformA: Uint32ArrayTexture, transformB: Float16ArrayTexture, texParams: Float32Array, splatOrder?: Uint32ArrayTexture): void;
15
+ setSplatTextures(splatColor: Uint8ArrayTexture, transformA: Uint32ArrayTexture, transformB: Float16ArrayTexture, texParams: Float32Array, splatOrder?: R32UintTexture): void;
14
16
  /**
15
17
  * Set the model matrix for transforming splats to world space
16
18
  */
@@ -21,5 +23,5 @@ export declare class GSplatMaterial extends Material {
21
23
  * @param maxPixels Maximum pixel coverage (cull oversized splats), default: 0 (disabled)
22
24
  * @param maxPixelCullDistance Only cull oversized splats within this distance, 0 = always cull
23
25
  */
24
- setPixelCulling(minPixels: number, maxPixels: number, maxPixelCullDistance?: number): void;
26
+ setPixelCulling(minPixels: number, maxPixels: number, maxPixelCullDistance?: number, batchSize?: number): void;
25
27
  }
@@ -0,0 +1,13 @@
1
+ import { GeometryBase } from "../core/geometry/GeometryBase";
2
+ /**
3
+ * GSplat Geometry (PlayCanvas Style)
4
+ *
5
+ * Exactly like PlayCanvas gsplat-instance.js:
6
+ * - batchSize splats per draw call (default 128)
7
+ * - Each splat = 4 vertices (x, y, local_index)
8
+ * - Each splat = 6 indices (2 triangles)
9
+ */
10
+ export declare class GSplatGeometry extends GeometryBase {
11
+ batchSize: number;
12
+ constructor(batchSize?: number);
13
+ }
@@ -0,0 +1,11 @@
1
+ import { Texture } from "../gfx/graphics/webGpu/core/texture/Texture";
2
+ /**
3
+ * @internal
4
+ * R32Uint texture backed by Uint32Array
5
+ * @group Texture
6
+ */
7
+ export declare class R32UintTexture extends Texture {
8
+ private _dataBuffer;
9
+ create(width: number, height: number, data: Uint32Array): this;
10
+ updateTexture(width: number, height: number, data: Uint32Array): void;
11
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rings-webgpu/core",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "description": "Rings webgpu Engine",
5
5
  "main": "index.js",
6
6
  "exports": {