@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.
- package/dist/rings.es.js +241 -255
- package/dist/rings.es.js.map +3 -3
- package/dist/rings.es.max.js +356 -249
- package/dist/rings.umd.js +235 -249
- package/dist/rings.umd.js.map +3 -3
- package/dist/rings.umd.max.js +357 -248
- package/dist/types/components/renderer/GSplatRenderer.d.ts +16 -5
- package/dist/types/gfx/renderJob/jobs/RendererJob.d.ts +2 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/materials/GSplatMaterial.d.ts +4 -2
- package/dist/types/shape/GSplatGeometry.d.ts +13 -0
- package/dist/types/textures/R32UintTexture.d.ts +11 -0
- package/package.json +1 -1
package/dist/rings.es.max.js
CHANGED
|
@@ -22678,61 +22678,35 @@ const GSplat_VS = (
|
|
|
22678
22678
|
/* wgsl */
|
|
22679
22679
|
`
|
|
22680
22680
|
#include "GlobalUniform"
|
|
22681
|
-
|
|
22682
|
-
struct VSOut {
|
|
22683
|
-
@location(auto) vColor : vec4f,
|
|
22684
|
-
@location(auto) vTexCoord : vec2f,
|
|
22685
|
-
@builtin(position) member : vec4f
|
|
22686
|
-
};
|
|
22687
|
-
|
|
22688
|
-
// ===== SPLAT CORE VS (from PlayCanvas shader-generator-gsplat.js) =====
|
|
22689
|
-
|
|
22690
|
-
// Uniforms (mapped to WebGPU bindings)
|
|
22691
|
-
// matrix_model, matrix_view, matrix_projection -> GlobalUniform + MaterialUniform
|
|
22692
|
-
// viewport -> calculated from globalUniform.windowWidth/Height
|
|
22693
|
-
// tex_params -> materialUniform.tex_params
|
|
22694
|
-
|
|
22695
|
-
@group(1) @binding(0) var splatColor : texture_2d<f32>;
|
|
22696
|
-
@group(1) @binding(1) var transformA : texture_2d<u32>;
|
|
22697
|
-
@group(1) @binding(2) var transformB : texture_2d<f32>;
|
|
22698
|
-
@group(1) @binding(4) var splatOrder : texture_2d<u32>;
|
|
22699
22681
|
|
|
22700
22682
|
struct MaterialUniform {
|
|
22701
|
-
tex_params: vec4f, // numSplats, textureWidth, validCount, visBoost
|
|
22702
22683
|
modelMatrix: mat4x4<f32>,
|
|
22703
|
-
|
|
22684
|
+
tex_params: vec4<f32>, // [numSplats, texWidth, validCount, visBoost]
|
|
22685
|
+
pixelCull: vec4<f32>, // [minPixels, maxPixels, maxPixelCullDistance, batchSize]
|
|
22704
22686
|
};
|
|
22705
|
-
@group(1) @binding(
|
|
22687
|
+
@group(1) @binding(0) var<uniform> materialUniform: MaterialUniform;
|
|
22706
22688
|
|
|
22707
|
-
|
|
22708
|
-
|
|
22709
|
-
|
|
22689
|
+
struct VSOut {
|
|
22690
|
+
@builtin(position) member: vec4<f32>,
|
|
22691
|
+
@location(0) vColor: vec4<f32>,
|
|
22692
|
+
@location(1) vTexCoord: vec2<f32>,
|
|
22693
|
+
};
|
|
22694
|
+
|
|
22695
|
+
// Textures (like PlayCanvas)
|
|
22696
|
+
@group(1) @binding(1) var splatColor: texture_2d<f32>;
|
|
22697
|
+
@group(1) @binding(2) var transformA: texture_2d<u32>;
|
|
22698
|
+
@group(1) @binding(3) var transformB: texture_2d<f32>;
|
|
22699
|
+
@group(1) @binding(4) var splatOrder: texture_2d<u32>;
|
|
22700
|
+
|
|
22701
|
+
// Global variables for texture lookups
|
|
22710
22702
|
var<private> splatUV: vec2<i32>;
|
|
22703
|
+
var<private> splatId: u32;
|
|
22711
22704
|
var<private> tA: vec4<u32>;
|
|
22712
22705
|
|
|
22713
|
-
// Helper: decode 16-bit half float
|
|
22714
|
-
fn unpackHalf(h: u32) -> f32 {
|
|
22715
|
-
let s = (h >> 15u) & 0x1u;
|
|
22716
|
-
let e = (h >> 10u) & 0x1fu;
|
|
22717
|
-
let m = h & 0x3ffu;
|
|
22718
|
-
let sign = select(1.0, -1.0, s == 1u);
|
|
22719
|
-
if (e == 0u) {
|
|
22720
|
-
if (m == 0u) { return 0.0; }
|
|
22721
|
-
return sign * (f32(m) * exp2(-24.0));
|
|
22722
|
-
} else if (e == 31u) {
|
|
22723
|
-
return sign * 65504.0;
|
|
22724
|
-
} else {
|
|
22725
|
-
return sign * (1.0 + f32(m) / 1024.0) * exp2(f32(i32(e) - 15));
|
|
22726
|
-
}
|
|
22727
|
-
}
|
|
22728
|
-
|
|
22729
22706
|
// === calcSplatUV() - returns bool ===
|
|
22730
|
-
fn calcSplatUV(
|
|
22731
|
-
let numSplats = u32(materialUniform.tex_params.x);
|
|
22707
|
+
fn calcSplatUV(orderId: u32) -> bool {
|
|
22732
22708
|
let textureWidth = u32(materialUniform.tex_params.y);
|
|
22733
|
-
|
|
22734
|
-
// calculate splat index
|
|
22735
|
-
orderId = instance_id;
|
|
22709
|
+
let numSplats = u32(materialUniform.tex_params.x);
|
|
22736
22710
|
|
|
22737
22711
|
if (orderId >= numSplats) {
|
|
22738
22712
|
return false;
|
|
@@ -22779,6 +22753,19 @@ const GSplat_VS = (
|
|
|
22779
22753
|
return result;
|
|
22780
22754
|
}
|
|
22781
22755
|
|
|
22756
|
+
// === getRotationMatrix() - returns mat3x3 ===
|
|
22757
|
+
fn getRotationMatrix() -> mat3x3f {
|
|
22758
|
+
let cov_data = getCovariance();
|
|
22759
|
+
let covA = cov_data.covA;
|
|
22760
|
+
let covB = cov_data.covB;
|
|
22761
|
+
|
|
22762
|
+
return mat3x3f(
|
|
22763
|
+
vec3f(1.0 - 2.0 * (covA.z * covA.z + covB.x * covB.x), 2.0 * (covA.y * covA.z + covB.y * covB.x), 2.0 * (covA.y * covB.x - covB.y * covA.z)),
|
|
22764
|
+
vec3f(2.0 * (covA.y * covA.z - covB.y * covB.x), 1.0 - 2.0 * (covA.y * covA.y + covB.x * covB.x), 2.0 * (covA.z * covB.x + covA.y * covB.y)),
|
|
22765
|
+
vec3f(2.0 * (covA.y * covB.x + covB.y * covA.z), 2.0 * (covA.z * covB.x - covA.y * covB.y), 1.0 - 2.0 * (covA.y * covA.y + covA.z * covA.z))
|
|
22766
|
+
);
|
|
22767
|
+
}
|
|
22768
|
+
|
|
22782
22769
|
// === calcV1V2() - returns vec4 ===
|
|
22783
22770
|
fn calcV1V2(splat_cam: vec3f, covA: vec3f, covB: vec3f, W: mat3x3f, viewport: vec2f, projMat: mat4x4f) -> vec4f {
|
|
22784
22771
|
let Vrk = mat3x3f(
|
|
@@ -22822,22 +22809,25 @@ const GSplat_VS = (
|
|
|
22822
22809
|
@vertex
|
|
22823
22810
|
fn VertMain(
|
|
22824
22811
|
@builtin(vertex_index) vid : u32,
|
|
22825
|
-
@builtin(instance_index) iid : u32
|
|
22812
|
+
@builtin(instance_index) iid : u32,
|
|
22813
|
+
@location(0) position: vec3<f32> // vertex_position from mesh (x, y, local_index)
|
|
22826
22814
|
) -> VSOut {
|
|
22827
22815
|
var o: VSOut;
|
|
22828
22816
|
let discardVec = vec4f(0.0, 0.0, 2.0, 1.0);
|
|
22829
22817
|
|
|
22830
|
-
//
|
|
22831
|
-
|
|
22832
|
-
|
|
22833
|
-
|
|
22834
|
-
|
|
22835
|
-
|
|
22836
|
-
|
|
22837
|
-
|
|
22818
|
+
// Calculate splat ID
|
|
22819
|
+
// orderId = vertex_id_attrib + uint(vertex_position.z)
|
|
22820
|
+
// In our case: vertex_id_attrib = iid * batchSize
|
|
22821
|
+
let batchSize = u32(materialUniform.pixelCull.w);
|
|
22822
|
+
let base_splat_index = iid * batchSize;
|
|
22823
|
+
let local_splat_index = u32(position.z);
|
|
22824
|
+
let orderId = base_splat_index + local_splat_index;
|
|
22825
|
+
|
|
22826
|
+
// Use vertex position from mesh
|
|
22827
|
+
let vertex_pos = position.xy;
|
|
22838
22828
|
|
|
22839
22829
|
// calculate splat uv
|
|
22840
|
-
if (!calcSplatUV(
|
|
22830
|
+
if (!calcSplatUV(orderId)) {
|
|
22841
22831
|
o.member = discardVec;
|
|
22842
22832
|
o.vColor = vec4f(0.0);
|
|
22843
22833
|
o.vTexCoord = vec2f(0.0);
|
|
@@ -22865,9 +22855,8 @@ const GSplat_VS = (
|
|
|
22865
22855
|
}
|
|
22866
22856
|
|
|
22867
22857
|
// Frustum culling: cull splats outside screen bounds
|
|
22868
|
-
// Add margin for splat radius (conservative: ~2x max splat size)
|
|
22869
22858
|
let ndc = splat_proj.xyz / splat_proj.w;
|
|
22870
|
-
let margin = 0.
|
|
22859
|
+
let margin = 0.0;
|
|
22871
22860
|
if (ndc.x < -1.0 - margin || ndc.x > 1.0 + margin ||
|
|
22872
22861
|
ndc.y < -1.0 - margin || ndc.y > 1.0 + margin ||
|
|
22873
22862
|
ndc.z < 0.0 || ndc.z > 1.0) {
|
|
@@ -22885,6 +22874,12 @@ const GSplat_VS = (
|
|
|
22885
22874
|
|
|
22886
22875
|
// get color
|
|
22887
22876
|
let color = textureLoad(splatColor, splatUV, 0);
|
|
22877
|
+
if (color.a < 1.0 / 255.0) {
|
|
22878
|
+
o.member = discardVec;
|
|
22879
|
+
o.vColor = vec4f(0.0);
|
|
22880
|
+
o.vTexCoord = vec2f(0.0);
|
|
22881
|
+
return o;
|
|
22882
|
+
}
|
|
22888
22883
|
|
|
22889
22884
|
// calculate scale based on alpha
|
|
22890
22885
|
let scale = min(1.0, sqrt(-log(1.0 / 255.0 / color.a)) / 2.0);
|
|
@@ -22893,7 +22888,7 @@ const GSplat_VS = (
|
|
|
22893
22888
|
let visBoost = materialUniform.tex_params.w;
|
|
22894
22889
|
var v1v2_scaled = v1v2 * scale * visBoost;
|
|
22895
22890
|
|
|
22896
|
-
// Pixel coverage culling
|
|
22891
|
+
// Pixel coverage culling
|
|
22897
22892
|
let v1_len_sq = dot(v1v2_scaled.xy, v1v2_scaled.xy);
|
|
22898
22893
|
let v2_len_sq = dot(v1v2_scaled.zw, v1v2_scaled.zw);
|
|
22899
22894
|
|
|
@@ -22901,7 +22896,7 @@ const GSplat_VS = (
|
|
|
22901
22896
|
let maxPixels = materialUniform.pixelCull.y;
|
|
22902
22897
|
let maxPixelCullDistance = materialUniform.pixelCull.z;
|
|
22903
22898
|
|
|
22904
|
-
// Early out tiny splats
|
|
22899
|
+
// Early out tiny splats
|
|
22905
22900
|
if (v1_len_sq < minPixels && v2_len_sq < minPixels) {
|
|
22906
22901
|
o.member = discardVec;
|
|
22907
22902
|
o.vColor = vec4f(0.0);
|
|
@@ -22909,13 +22904,9 @@ const GSplat_VS = (
|
|
|
22909
22904
|
return o;
|
|
22910
22905
|
}
|
|
22911
22906
|
|
|
22912
|
-
// Cull oversized splats
|
|
22913
|
-
// Only apply to splats close to camera (distance-based condition)
|
|
22907
|
+
// Cull oversized splats
|
|
22914
22908
|
if (maxPixels > 0.0) {
|
|
22915
|
-
// Calculate distance from splat to camera
|
|
22916
22909
|
let splatDistance = length(splat_cam.xyz);
|
|
22917
|
-
|
|
22918
|
-
// Only cull oversized splats if they are close to camera
|
|
22919
22910
|
if (maxPixelCullDistance <= 0.0 || splatDistance < maxPixelCullDistance) {
|
|
22920
22911
|
let maxAxisSq = maxPixels * maxPixels;
|
|
22921
22912
|
if (v1_len_sq > maxAxisSq || v2_len_sq > maxAxisSq) {
|
|
@@ -22927,12 +22918,9 @@ const GSplat_VS = (
|
|
|
22927
22918
|
}
|
|
22928
22919
|
}
|
|
22929
22920
|
|
|
22930
|
-
//
|
|
22921
|
+
// Final position
|
|
22931
22922
|
o.member = splat_proj + vec4f((vertex_pos.x * v1v2_scaled.xy + vertex_pos.y * v1v2_scaled.zw) / viewport * splat_proj.w, 0.0, 0.0);
|
|
22932
|
-
|
|
22933
|
-
// texCoord = vertex_position.xy * scale / 2.0;
|
|
22934
22923
|
o.vTexCoord = vertex_pos * scale / 2.0;
|
|
22935
|
-
|
|
22936
22924
|
o.vColor = color;
|
|
22937
22925
|
|
|
22938
22926
|
return o;
|
|
@@ -22947,27 +22935,25 @@ const GSplat_FS = (
|
|
|
22947
22935
|
// === evalSplat() - like PlayCanvas splatCoreFS ===
|
|
22948
22936
|
fn evalSplat(texCoord: vec2f, color: vec4f) -> vec4f {
|
|
22949
22937
|
let A = dot(texCoord, texCoord);
|
|
22938
|
+
var B = exp(-A * 4.0) * color.a;
|
|
22950
22939
|
if (A > 1.0) {
|
|
22951
|
-
|
|
22940
|
+
B = 0.0;
|
|
22952
22941
|
}
|
|
22953
22942
|
|
|
22954
|
-
let B = exp(-A * 4.0) * color.a;
|
|
22955
22943
|
if (B < 1.0 / 255.0) {
|
|
22956
|
-
|
|
22944
|
+
B = 0.0;
|
|
22957
22945
|
}
|
|
22958
22946
|
|
|
22959
|
-
// TONEMAP_ENABLED branch not implemented (would call toneMap() and gammaCorrectOutput())
|
|
22960
22947
|
return vec4f(color.rgb, B);
|
|
22961
22948
|
}
|
|
22962
|
-
|
|
22963
|
-
// === main() - like PlayCanvas splatMainFS ===
|
|
22949
|
+
|
|
22964
22950
|
@fragment
|
|
22965
|
-
fn FragMain(
|
|
22966
|
-
|
|
22967
|
-
|
|
22951
|
+
fn FragMain(
|
|
22952
|
+
@location(0) vColor: vec4<f32>,
|
|
22953
|
+
@location(1) vTexCoord: vec2<f32>
|
|
22954
|
+
) -> FragmentOutput {
|
|
22968
22955
|
var o: FragmentOutput;
|
|
22969
|
-
o.color =
|
|
22970
|
-
o.gBuffer = vec4f(0.0);
|
|
22956
|
+
o.color = evalSplat(vTexCoord, vColor);
|
|
22971
22957
|
return o;
|
|
22972
22958
|
}
|
|
22973
22959
|
`
|
|
@@ -23192,9 +23178,9 @@ let GSplatShader = class extends Shader {
|
|
|
23192
23178
|
const pass = new RenderShaderPass("gsplat_vs_dc", "gsplat_fs_dc");
|
|
23193
23179
|
pass.passType = PassType.COLOR;
|
|
23194
23180
|
pass.setShaderEntry("VertMain", "FragMain");
|
|
23195
|
-
pass.topology = GPUPrimitiveTopology.
|
|
23181
|
+
pass.topology = GPUPrimitiveTopology.triangle_list;
|
|
23196
23182
|
pass.depthWriteEnabled = false;
|
|
23197
|
-
pass.cullMode =
|
|
23183
|
+
pass.cullMode = GPUCullMode.none;
|
|
23198
23184
|
pass.shaderState.transparent = true;
|
|
23199
23185
|
pass.shaderState.blendMode = BlendMode.NORMAL;
|
|
23200
23186
|
pass.shaderState.writeMasks = [15, 15];
|
|
@@ -23216,6 +23202,7 @@ GSplatShader = __decorateClass$k([
|
|
|
23216
23202
|
], GSplatShader);
|
|
23217
23203
|
|
|
23218
23204
|
class GSplatMaterial extends Material {
|
|
23205
|
+
_pixelCullArray = new Float32Array(4);
|
|
23219
23206
|
constructor() {
|
|
23220
23207
|
super();
|
|
23221
23208
|
ShaderLib.register("gsplat_vs_dc", GSplat_VS);
|
|
@@ -23231,6 +23218,7 @@ class GSplatMaterial extends Material {
|
|
|
23231
23218
|
if (splatOrder) {
|
|
23232
23219
|
pass.setTexture("splatOrder", splatOrder);
|
|
23233
23220
|
}
|
|
23221
|
+
pass.shaderState.depthCompare = GPUCompareFunction.less;
|
|
23234
23222
|
}
|
|
23235
23223
|
/**
|
|
23236
23224
|
* Set the model matrix for transforming splats to world space
|
|
@@ -23245,9 +23233,13 @@ class GSplatMaterial extends Material {
|
|
|
23245
23233
|
* @param maxPixels Maximum pixel coverage (cull oversized splats), default: 0 (disabled)
|
|
23246
23234
|
* @param maxPixelCullDistance Only cull oversized splats within this distance, 0 = always cull
|
|
23247
23235
|
*/
|
|
23248
|
-
setPixelCulling(minPixels, maxPixels, maxPixelCullDistance = 0) {
|
|
23236
|
+
setPixelCulling(minPixels, maxPixels, maxPixelCullDistance = 0, batchSize = 128) {
|
|
23237
|
+
this._pixelCullArray[0] = minPixels;
|
|
23238
|
+
this._pixelCullArray[1] = maxPixels;
|
|
23239
|
+
this._pixelCullArray[2] = maxPixelCullDistance;
|
|
23240
|
+
this._pixelCullArray[3] = batchSize;
|
|
23249
23241
|
const pass = this.shader.getDefaultColorShader();
|
|
23250
|
-
pass.setUniform("pixelCull",
|
|
23242
|
+
pass.setUniform("pixelCull", this._pixelCullArray);
|
|
23251
23243
|
}
|
|
23252
23244
|
}
|
|
23253
23245
|
|
|
@@ -23905,108 +23897,47 @@ class GeometryBase {
|
|
|
23905
23897
|
}
|
|
23906
23898
|
}
|
|
23907
23899
|
|
|
23908
|
-
class
|
|
23909
|
-
|
|
23910
|
-
|
|
23911
|
-
segmentW;
|
|
23912
|
-
segmentH;
|
|
23913
|
-
up;
|
|
23914
|
-
constructor(width, height, segmentW = 1, segmentH = 1, up = Vector3.Y_AXIS) {
|
|
23900
|
+
class GSplatGeometry extends GeometryBase {
|
|
23901
|
+
batchSize;
|
|
23902
|
+
constructor(batchSize = 128) {
|
|
23915
23903
|
super();
|
|
23916
|
-
this.
|
|
23917
|
-
|
|
23918
|
-
|
|
23919
|
-
|
|
23920
|
-
|
|
23921
|
-
|
|
23922
|
-
|
|
23923
|
-
|
|
23924
|
-
|
|
23925
|
-
|
|
23926
|
-
|
|
23927
|
-
|
|
23928
|
-
|
|
23929
|
-
|
|
23930
|
-
|
|
23931
|
-
|
|
23932
|
-
|
|
23933
|
-
|
|
23934
|
-
|
|
23935
|
-
let
|
|
23936
|
-
|
|
23937
|
-
|
|
23938
|
-
|
|
23939
|
-
|
|
23940
|
-
|
|
23941
|
-
|
|
23942
|
-
|
|
23943
|
-
|
|
23944
|
-
|
|
23945
|
-
|
|
23946
|
-
|
|
23947
|
-
|
|
23948
|
-
var indexU = 0;
|
|
23949
|
-
for (var yi = 0; yi <= this.segmentH; ++yi) {
|
|
23950
|
-
for (var xi = 0; xi <= this.segmentW; ++xi) {
|
|
23951
|
-
x = (xi / this.segmentW - 0.5) * this.width;
|
|
23952
|
-
y = (yi / this.segmentH - 0.5) * this.height;
|
|
23953
|
-
switch (axis) {
|
|
23954
|
-
case Vector3.Y_AXIS:
|
|
23955
|
-
position_arr[indexP++] = x;
|
|
23956
|
-
position_arr[indexP++] = 0;
|
|
23957
|
-
position_arr[indexP++] = y;
|
|
23958
|
-
normal_arr[indexN++] = 0;
|
|
23959
|
-
normal_arr[indexN++] = 1;
|
|
23960
|
-
normal_arr[indexN++] = 0;
|
|
23961
|
-
break;
|
|
23962
|
-
case Vector3.Z_AXIS:
|
|
23963
|
-
position_arr[indexP++] = x;
|
|
23964
|
-
position_arr[indexP++] = -y;
|
|
23965
|
-
position_arr[indexP++] = 0;
|
|
23966
|
-
normal_arr[indexN++] = 0;
|
|
23967
|
-
normal_arr[indexN++] = 0;
|
|
23968
|
-
normal_arr[indexN++] = 1;
|
|
23969
|
-
break;
|
|
23970
|
-
case Vector3.X_AXIS:
|
|
23971
|
-
position_arr[indexP++] = 0;
|
|
23972
|
-
position_arr[indexP++] = x;
|
|
23973
|
-
position_arr[indexP++] = y;
|
|
23974
|
-
normal_arr[indexN++] = 1;
|
|
23975
|
-
normal_arr[indexN++] = 0;
|
|
23976
|
-
normal_arr[indexN++] = 0;
|
|
23977
|
-
break;
|
|
23978
|
-
default:
|
|
23979
|
-
position_arr[indexP++] = x;
|
|
23980
|
-
position_arr[indexP++] = 0;
|
|
23981
|
-
position_arr[indexP++] = y;
|
|
23982
|
-
normal_arr[indexN++] = 0;
|
|
23983
|
-
normal_arr[indexN++] = 1;
|
|
23984
|
-
normal_arr[indexN++] = 0;
|
|
23985
|
-
break;
|
|
23986
|
-
}
|
|
23987
|
-
uv_arr[indexU++] = xi / this.segmentW;
|
|
23988
|
-
uv_arr[indexU++] = yi / this.segmentH;
|
|
23989
|
-
if (xi != this.segmentW && yi != this.segmentH) {
|
|
23990
|
-
base = xi + yi * tw;
|
|
23991
|
-
indices_arr[numIndices++] = base + 1;
|
|
23992
|
-
indices_arr[numIndices++] = base;
|
|
23993
|
-
indices_arr[numIndices++] = base + tw;
|
|
23994
|
-
indices_arr[numIndices++] = base + 1;
|
|
23995
|
-
indices_arr[numIndices++] = base + tw;
|
|
23996
|
-
indices_arr[numIndices++] = base + tw + 1;
|
|
23997
|
-
}
|
|
23998
|
-
}
|
|
23999
|
-
}
|
|
24000
|
-
this.setIndices(indices_arr);
|
|
24001
|
-
this.setAttribute(VertexAttributeName.position, position_arr);
|
|
24002
|
-
this.setAttribute(VertexAttributeName.normal, normal_arr);
|
|
24003
|
-
this.setAttribute(VertexAttributeName.uv, uv_arr);
|
|
24004
|
-
this.setAttribute(VertexAttributeName.TEXCOORD_1, uv_arr);
|
|
23904
|
+
this.batchSize = batchSize;
|
|
23905
|
+
const meshPositions = new Float32Array(12 * batchSize);
|
|
23906
|
+
for (let i = 0; i < batchSize; ++i) {
|
|
23907
|
+
meshPositions.set([
|
|
23908
|
+
-2,
|
|
23909
|
+
-2,
|
|
23910
|
+
i,
|
|
23911
|
+
2,
|
|
23912
|
+
-2,
|
|
23913
|
+
i,
|
|
23914
|
+
2,
|
|
23915
|
+
2,
|
|
23916
|
+
i,
|
|
23917
|
+
-2,
|
|
23918
|
+
2,
|
|
23919
|
+
i
|
|
23920
|
+
], i * 12);
|
|
23921
|
+
}
|
|
23922
|
+
const meshIndices = new Uint32Array(6 * batchSize);
|
|
23923
|
+
for (let i = 0; i < batchSize; ++i) {
|
|
23924
|
+
const b = i * 4;
|
|
23925
|
+
meshIndices.set([
|
|
23926
|
+
0 + b,
|
|
23927
|
+
1 + b,
|
|
23928
|
+
2 + b,
|
|
23929
|
+
0 + b,
|
|
23930
|
+
2 + b,
|
|
23931
|
+
3 + b
|
|
23932
|
+
], i * 6);
|
|
23933
|
+
}
|
|
23934
|
+
this.setAttribute(VertexAttributeName.position, meshPositions);
|
|
23935
|
+
this.setIndices(meshIndices);
|
|
24005
23936
|
this.addSubGeometry({
|
|
24006
23937
|
indexStart: 0,
|
|
24007
|
-
indexCount:
|
|
23938
|
+
indexCount: meshIndices.length,
|
|
24008
23939
|
vertexStart: 0,
|
|
24009
|
-
vertexCount:
|
|
23940
|
+
vertexCount: meshPositions.length / 3,
|
|
24010
23941
|
firstStart: 0,
|
|
24011
23942
|
index: 0,
|
|
24012
23943
|
topology: 0
|
|
@@ -24110,18 +24041,49 @@ class Uint32ArrayTexture extends Texture {
|
|
|
24110
24041
|
updateTexture(width, height, data) {
|
|
24111
24042
|
let device = webGPUContext.device;
|
|
24112
24043
|
const bytesPerRow = width * 4 * 4;
|
|
24113
|
-
|
|
24044
|
+
device.queue.writeTexture(
|
|
24045
|
+
{ texture: this.getGPUTexture() },
|
|
24046
|
+
data.buffer,
|
|
24047
|
+
{ bytesPerRow },
|
|
24048
|
+
{ width, height, depthOrArrayLayers: 1 }
|
|
24049
|
+
);
|
|
24050
|
+
}
|
|
24051
|
+
}
|
|
24052
|
+
|
|
24053
|
+
class R32UintTexture extends Texture {
|
|
24054
|
+
_dataBuffer;
|
|
24055
|
+
create(width, height, data) {
|
|
24056
|
+
let device = webGPUContext.device;
|
|
24057
|
+
const bytesPerRow = width * 4;
|
|
24058
|
+
this.format = GPUTextureFormat.r32uint;
|
|
24059
|
+
const mipmapCount = 1;
|
|
24060
|
+
this.createTextureDescriptor(width, height, mipmapCount, this.format);
|
|
24061
|
+
const textureDataBuffer = this._dataBuffer = device.createBuffer({
|
|
24114
24062
|
size: data.byteLength,
|
|
24115
24063
|
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC
|
|
24116
24064
|
});
|
|
24117
|
-
device.queue.writeBuffer(
|
|
24065
|
+
device.queue.writeBuffer(textureDataBuffer, 0, data.buffer);
|
|
24118
24066
|
const encoder = device.createCommandEncoder();
|
|
24119
24067
|
encoder.copyBufferToTexture(
|
|
24120
|
-
{ buffer:
|
|
24068
|
+
{ buffer: textureDataBuffer, bytesPerRow },
|
|
24121
24069
|
{ texture: this.getGPUTexture() },
|
|
24122
24070
|
{ width, height, depthOrArrayLayers: 1 }
|
|
24123
24071
|
);
|
|
24124
24072
|
device.queue.submit([encoder.finish()]);
|
|
24073
|
+
this.samplerBindingLayout.type = `non-filtering`;
|
|
24074
|
+
this.textureBindingLayout.sampleType = `uint`;
|
|
24075
|
+
this.gpuSampler = device.createSampler({});
|
|
24076
|
+
return this;
|
|
24077
|
+
}
|
|
24078
|
+
updateTexture(width, height, data) {
|
|
24079
|
+
let device = webGPUContext.device;
|
|
24080
|
+
const bytesPerRow = width * 4;
|
|
24081
|
+
device.queue.writeTexture(
|
|
24082
|
+
{ texture: this.getGPUTexture() },
|
|
24083
|
+
data.buffer,
|
|
24084
|
+
{ bytesPerRow },
|
|
24085
|
+
{ width, height, depthOrArrayLayers: 1 }
|
|
24086
|
+
);
|
|
24125
24087
|
}
|
|
24126
24088
|
}
|
|
24127
24089
|
|
|
@@ -24263,14 +24225,15 @@ let GSplatRenderer = class extends RenderNode {
|
|
|
24263
24225
|
// Web Worker for sorting
|
|
24264
24226
|
_sortWorker;
|
|
24265
24227
|
_lastSentTime = 0;
|
|
24266
|
-
_minIntervalMs =
|
|
24267
|
-
// No throttle for immediate sorting
|
|
24228
|
+
_minIntervalMs = 16;
|
|
24268
24229
|
_centersSent = false;
|
|
24269
24230
|
_lastViewMatrixHash = 0;
|
|
24270
24231
|
// Adaptive sorting optimization
|
|
24271
24232
|
_lastCameraSpeed = 0;
|
|
24272
24233
|
_adaptiveSorting = true;
|
|
24273
24234
|
// Enable adaptive sorting by default
|
|
24235
|
+
_lastPixelCullParams = "";
|
|
24236
|
+
_texturesInitialized = false;
|
|
24274
24237
|
// LOD (Level of Detail) system
|
|
24275
24238
|
_lodEnabled = false;
|
|
24276
24239
|
_lodDistances = [5, 10, 20, 40];
|
|
@@ -24292,6 +24255,11 @@ let GSplatRenderer = class extends RenderNode {
|
|
|
24292
24255
|
get fullCount() {
|
|
24293
24256
|
return this._fullCount;
|
|
24294
24257
|
}
|
|
24258
|
+
// Batched rendering
|
|
24259
|
+
_batchSize = 128;
|
|
24260
|
+
// Splats per draw call
|
|
24261
|
+
instanceCount = 0;
|
|
24262
|
+
// For InstanceDrawComponent compatibility
|
|
24295
24263
|
constructor() {
|
|
24296
24264
|
super();
|
|
24297
24265
|
}
|
|
@@ -24307,24 +24275,20 @@ let GSplatRenderer = class extends RenderNode {
|
|
|
24307
24275
|
this.texParams = new Float32Array([this.count, this.size.x, this.count, 1]);
|
|
24308
24276
|
this._positions = asset.position;
|
|
24309
24277
|
const total = this.size.x * this.size.y;
|
|
24310
|
-
this._orderData = new Uint32Array(total
|
|
24278
|
+
this._orderData = new Uint32Array(total);
|
|
24311
24279
|
for (let i = 0; i < total; i++) {
|
|
24312
|
-
|
|
24313
|
-
|
|
24314
|
-
|
|
24315
|
-
this._orderData[base + 1] = 0;
|
|
24316
|
-
this._orderData[base + 2] = 0;
|
|
24317
|
-
this._orderData[base + 3] = 0;
|
|
24318
|
-
}
|
|
24319
|
-
this.splatOrder = new Uint32ArrayTexture().create(this.size.x, this.size.y, this._orderData);
|
|
24280
|
+
this._orderData[i] = i < this.count ? i : this.count > 0 ? this.count - 1 : 0;
|
|
24281
|
+
}
|
|
24282
|
+
this.splatOrder = new R32UintTexture().create(this.size.x, this.size.y, this._orderData);
|
|
24320
24283
|
this.splatOrder.name = "splatOrder";
|
|
24321
24284
|
this.splatOrder.minFilter = "nearest";
|
|
24322
24285
|
this.splatOrder.magFilter = "nearest";
|
|
24323
24286
|
this.splatOrder.addressModeU = "clamp-to-edge";
|
|
24324
24287
|
this.splatOrder.addressModeV = "clamp-to-edge";
|
|
24325
24288
|
this.gsplatMaterial = new GSplatMaterial();
|
|
24326
|
-
this.geometry = new
|
|
24289
|
+
this.geometry = new GSplatGeometry(this._batchSize);
|
|
24327
24290
|
this.materials = [this.gsplatMaterial];
|
|
24291
|
+
this.instanceCount = 0;
|
|
24328
24292
|
}
|
|
24329
24293
|
/**
|
|
24330
24294
|
* Update splat sorting before rendering
|
|
@@ -24401,12 +24365,7 @@ let GSplatRenderer = class extends RenderNode {
|
|
|
24401
24365
|
this.texParams[2] = Math.min(this.texParams[0], this.count);
|
|
24402
24366
|
const total = this.size.x * this.size.y;
|
|
24403
24367
|
for (let i = 0; i < total; i++) {
|
|
24404
|
-
|
|
24405
|
-
const base = i * 4;
|
|
24406
|
-
this._orderData[base + 0] = src;
|
|
24407
|
-
this._orderData[base + 1] = 0;
|
|
24408
|
-
this._orderData[base + 2] = 0;
|
|
24409
|
-
this._orderData[base + 3] = 0;
|
|
24368
|
+
this._orderData[i] = i < this.count ? i : this.count > 0 ? this.count - 1 : 0;
|
|
24410
24369
|
}
|
|
24411
24370
|
this.splatOrder.updateTexture(this.size.x, this.size.y, this._orderData);
|
|
24412
24371
|
if (this._sortWorker) {
|
|
@@ -24433,6 +24392,7 @@ let GSplatRenderer = class extends RenderNode {
|
|
|
24433
24392
|
} else {
|
|
24434
24393
|
this._centersSent = false;
|
|
24435
24394
|
}
|
|
24395
|
+
this.instanceCount = 0;
|
|
24436
24396
|
}
|
|
24437
24397
|
/**
|
|
24438
24398
|
* Set visibility boost factor (material uniform tex_params.w)
|
|
@@ -24496,6 +24456,18 @@ let GSplatRenderer = class extends RenderNode {
|
|
|
24496
24456
|
distanceEnabled: this._maxPixelCullDistance > 0
|
|
24497
24457
|
};
|
|
24498
24458
|
}
|
|
24459
|
+
/**
|
|
24460
|
+
* Get batching statistics
|
|
24461
|
+
*/
|
|
24462
|
+
getBatchingStats() {
|
|
24463
|
+
return {
|
|
24464
|
+
enabled: true,
|
|
24465
|
+
batchSize: this._batchSize,
|
|
24466
|
+
instanceCount: this.instanceCount,
|
|
24467
|
+
splatCount: this.count,
|
|
24468
|
+
reduction: this.count > 0 ? (1 - this.instanceCount / this.count) * 100 : 0
|
|
24469
|
+
};
|
|
24470
|
+
}
|
|
24499
24471
|
/**
|
|
24500
24472
|
* Calculate texture size for given splat count
|
|
24501
24473
|
*/
|
|
@@ -24718,18 +24690,20 @@ let GSplatRenderer = class extends RenderNode {
|
|
|
24718
24690
|
const indices = new Uint32Array(newOrder);
|
|
24719
24691
|
const total = this.size.x * this.size.y;
|
|
24720
24692
|
const count = this.count;
|
|
24721
|
-
this._orderData
|
|
24722
|
-
|
|
24723
|
-
|
|
24724
|
-
|
|
24725
|
-
|
|
24726
|
-
|
|
24727
|
-
|
|
24728
|
-
this._orderData
|
|
24693
|
+
if (!this._orderData || this._orderData.length !== total) {
|
|
24694
|
+
this._orderData = new Uint32Array(total);
|
|
24695
|
+
}
|
|
24696
|
+
const validCount = Math.min(count, indices.length);
|
|
24697
|
+
this._orderData.set(indices.subarray(0, validCount), 0);
|
|
24698
|
+
if (validCount < total) {
|
|
24699
|
+
const lastIndex = count > 0 ? count - 1 : 0;
|
|
24700
|
+
this._orderData.fill(lastIndex, validCount, total);
|
|
24729
24701
|
}
|
|
24730
24702
|
this.splatOrder.updateTexture(this.size.x, this.size.y, this._orderData);
|
|
24731
24703
|
const valid = Math.max(0, Math.min(this.count, ev.data.count | 0));
|
|
24732
24704
|
this.texParams[2] = valid;
|
|
24705
|
+
const newInstanceCount = Math.ceil(valid / this._batchSize);
|
|
24706
|
+
this.instanceCount = newInstanceCount;
|
|
24733
24707
|
};
|
|
24734
24708
|
const worldPos = this._worldPositions || this._positions;
|
|
24735
24709
|
const centers = this._mapping ? new Float32Array(this._mapping.length * 3) : new Float32Array(worldPos);
|
|
@@ -24932,30 +24906,22 @@ let GSplatRenderer = class extends RenderNode {
|
|
|
24932
24906
|
nodeUpdate(view, passType, renderPassState, clusterLightingBuffer) {
|
|
24933
24907
|
const worldMatrix = this.object3D.transform.worldMatrix;
|
|
24934
24908
|
this.gsplatMaterial.setTransformMatrix(worldMatrix);
|
|
24935
|
-
this.
|
|
24936
|
-
this.
|
|
24937
|
-
this.
|
|
24938
|
-
this.
|
|
24939
|
-
|
|
24940
|
-
|
|
24941
|
-
this.
|
|
24942
|
-
|
|
24943
|
-
|
|
24944
|
-
|
|
24945
|
-
|
|
24946
|
-
|
|
24947
|
-
|
|
24948
|
-
|
|
24949
|
-
for (let mat of this.materials) {
|
|
24950
|
-
const passes = mat.getPass(passType);
|
|
24951
|
-
if (!passes || passes.length === 0) continue;
|
|
24952
|
-
for (const pass of passes) {
|
|
24953
|
-
if (!pass.pipeline) continue;
|
|
24954
|
-
pass.apply(this.geometry, rendererPassState);
|
|
24955
|
-
GPUContext.bindPipeline(encoder, pass);
|
|
24956
|
-
GPUContext.draw(encoder, 4, this.count, 0, 0);
|
|
24957
|
-
}
|
|
24909
|
+
const currentParams = `${this._minPixelCoverage},${this._maxPixelCoverage},${this._maxPixelCullDistance},${this._batchSize}`;
|
|
24910
|
+
if (currentParams !== this._lastPixelCullParams) {
|
|
24911
|
+
this.gsplatMaterial.setPixelCulling(this._minPixelCoverage, this._maxPixelCoverage, this._maxPixelCullDistance, this._batchSize);
|
|
24912
|
+
this._lastPixelCullParams = currentParams;
|
|
24913
|
+
}
|
|
24914
|
+
if (!this._texturesInitialized) {
|
|
24915
|
+
this.gsplatMaterial.setSplatTextures(
|
|
24916
|
+
this.splatColor,
|
|
24917
|
+
this.transformA,
|
|
24918
|
+
this.transformB,
|
|
24919
|
+
this.texParams,
|
|
24920
|
+
this.splatOrder
|
|
24921
|
+
);
|
|
24922
|
+
this._texturesInitialized = true;
|
|
24958
24923
|
}
|
|
24924
|
+
super.nodeUpdate(view, passType, renderPassState, clusterLightingBuffer);
|
|
24959
24925
|
}
|
|
24960
24926
|
/**
|
|
24961
24927
|
* Render pass (fallback)
|
|
@@ -24969,7 +24935,28 @@ let GSplatRenderer = class extends RenderNode {
|
|
|
24969
24935
|
if (!pass.pipeline) continue;
|
|
24970
24936
|
pass.apply(this.geometry, renderContext.rendererPassState || renderContext);
|
|
24971
24937
|
GPUContext.bindPipeline(encoder, pass);
|
|
24972
|
-
GPUContext.
|
|
24938
|
+
GPUContext.bindGeometryBuffer(encoder, this.geometry);
|
|
24939
|
+
const subGeometry = this.geometry.subGeometries[0];
|
|
24940
|
+
const lodInfo = subGeometry.lodLevels[0];
|
|
24941
|
+
if (this.instanceCount > 0) {
|
|
24942
|
+
GPUContext.drawIndexed(
|
|
24943
|
+
encoder,
|
|
24944
|
+
lodInfo.indexCount,
|
|
24945
|
+
this.instanceCount,
|
|
24946
|
+
lodInfo.indexStart,
|
|
24947
|
+
0,
|
|
24948
|
+
0
|
|
24949
|
+
);
|
|
24950
|
+
} else {
|
|
24951
|
+
GPUContext.drawIndexed(
|
|
24952
|
+
encoder,
|
|
24953
|
+
lodInfo.indexCount,
|
|
24954
|
+
1,
|
|
24955
|
+
lodInfo.indexStart,
|
|
24956
|
+
0,
|
|
24957
|
+
0
|
|
24958
|
+
);
|
|
24959
|
+
}
|
|
24973
24960
|
}
|
|
24974
24961
|
}
|
|
24975
24962
|
}
|
|
@@ -27505,6 +27492,115 @@ class WebGPUDescriptorCreator {
|
|
|
27505
27492
|
}
|
|
27506
27493
|
}
|
|
27507
27494
|
|
|
27495
|
+
class PlaneGeometry extends GeometryBase {
|
|
27496
|
+
width;
|
|
27497
|
+
height;
|
|
27498
|
+
segmentW;
|
|
27499
|
+
segmentH;
|
|
27500
|
+
up;
|
|
27501
|
+
constructor(width, height, segmentW = 1, segmentH = 1, up = Vector3.Y_AXIS) {
|
|
27502
|
+
super();
|
|
27503
|
+
this.width = width;
|
|
27504
|
+
this.height = height;
|
|
27505
|
+
this.segmentW = segmentW;
|
|
27506
|
+
this.segmentH = segmentH;
|
|
27507
|
+
this.up = up;
|
|
27508
|
+
this.buildGeometry(this.up);
|
|
27509
|
+
}
|
|
27510
|
+
buildGeometry(axis) {
|
|
27511
|
+
var x, y;
|
|
27512
|
+
var numIndices;
|
|
27513
|
+
var base;
|
|
27514
|
+
var tw = this.segmentW + 1;
|
|
27515
|
+
(this.segmentH + 1) * tw;
|
|
27516
|
+
this.bounds = new BoundingBox(
|
|
27517
|
+
Vector3.ZERO.clone(),
|
|
27518
|
+
new Vector3(this.width, 1, this.height)
|
|
27519
|
+
);
|
|
27520
|
+
numIndices = this.segmentH * this.segmentW * 6;
|
|
27521
|
+
let vertexCount = (this.segmentW + 1) * (this.segmentH + 1);
|
|
27522
|
+
let position_arr = new Float32Array(vertexCount * 3);
|
|
27523
|
+
let normal_arr = new Float32Array(vertexCount * 3);
|
|
27524
|
+
let uv_arr = new Float32Array(vertexCount * 2);
|
|
27525
|
+
let indices_arr;
|
|
27526
|
+
let totalIndexCount = this.segmentW * this.segmentH * 2 * 3;
|
|
27527
|
+
if (totalIndexCount >= Uint16Array.length) {
|
|
27528
|
+
indices_arr = new Uint32Array(this.segmentW * this.segmentH * 2 * 3);
|
|
27529
|
+
} else {
|
|
27530
|
+
indices_arr = new Uint16Array(this.segmentW * this.segmentH * 2 * 3);
|
|
27531
|
+
}
|
|
27532
|
+
numIndices = 0;
|
|
27533
|
+
var indexP = 0;
|
|
27534
|
+
var indexN = 0;
|
|
27535
|
+
var indexU = 0;
|
|
27536
|
+
for (var yi = 0; yi <= this.segmentH; ++yi) {
|
|
27537
|
+
for (var xi = 0; xi <= this.segmentW; ++xi) {
|
|
27538
|
+
x = (xi / this.segmentW - 0.5) * this.width;
|
|
27539
|
+
y = (yi / this.segmentH - 0.5) * this.height;
|
|
27540
|
+
switch (axis) {
|
|
27541
|
+
case Vector3.Y_AXIS:
|
|
27542
|
+
position_arr[indexP++] = x;
|
|
27543
|
+
position_arr[indexP++] = 0;
|
|
27544
|
+
position_arr[indexP++] = y;
|
|
27545
|
+
normal_arr[indexN++] = 0;
|
|
27546
|
+
normal_arr[indexN++] = 1;
|
|
27547
|
+
normal_arr[indexN++] = 0;
|
|
27548
|
+
break;
|
|
27549
|
+
case Vector3.Z_AXIS:
|
|
27550
|
+
position_arr[indexP++] = x;
|
|
27551
|
+
position_arr[indexP++] = -y;
|
|
27552
|
+
position_arr[indexP++] = 0;
|
|
27553
|
+
normal_arr[indexN++] = 0;
|
|
27554
|
+
normal_arr[indexN++] = 0;
|
|
27555
|
+
normal_arr[indexN++] = 1;
|
|
27556
|
+
break;
|
|
27557
|
+
case Vector3.X_AXIS:
|
|
27558
|
+
position_arr[indexP++] = 0;
|
|
27559
|
+
position_arr[indexP++] = x;
|
|
27560
|
+
position_arr[indexP++] = y;
|
|
27561
|
+
normal_arr[indexN++] = 1;
|
|
27562
|
+
normal_arr[indexN++] = 0;
|
|
27563
|
+
normal_arr[indexN++] = 0;
|
|
27564
|
+
break;
|
|
27565
|
+
default:
|
|
27566
|
+
position_arr[indexP++] = x;
|
|
27567
|
+
position_arr[indexP++] = 0;
|
|
27568
|
+
position_arr[indexP++] = y;
|
|
27569
|
+
normal_arr[indexN++] = 0;
|
|
27570
|
+
normal_arr[indexN++] = 1;
|
|
27571
|
+
normal_arr[indexN++] = 0;
|
|
27572
|
+
break;
|
|
27573
|
+
}
|
|
27574
|
+
uv_arr[indexU++] = xi / this.segmentW;
|
|
27575
|
+
uv_arr[indexU++] = yi / this.segmentH;
|
|
27576
|
+
if (xi != this.segmentW && yi != this.segmentH) {
|
|
27577
|
+
base = xi + yi * tw;
|
|
27578
|
+
indices_arr[numIndices++] = base + 1;
|
|
27579
|
+
indices_arr[numIndices++] = base;
|
|
27580
|
+
indices_arr[numIndices++] = base + tw;
|
|
27581
|
+
indices_arr[numIndices++] = base + 1;
|
|
27582
|
+
indices_arr[numIndices++] = base + tw;
|
|
27583
|
+
indices_arr[numIndices++] = base + tw + 1;
|
|
27584
|
+
}
|
|
27585
|
+
}
|
|
27586
|
+
}
|
|
27587
|
+
this.setIndices(indices_arr);
|
|
27588
|
+
this.setAttribute(VertexAttributeName.position, position_arr);
|
|
27589
|
+
this.setAttribute(VertexAttributeName.normal, normal_arr);
|
|
27590
|
+
this.setAttribute(VertexAttributeName.uv, uv_arr);
|
|
27591
|
+
this.setAttribute(VertexAttributeName.TEXCOORD_1, uv_arr);
|
|
27592
|
+
this.addSubGeometry({
|
|
27593
|
+
indexStart: 0,
|
|
27594
|
+
indexCount: indices_arr.length,
|
|
27595
|
+
vertexStart: 0,
|
|
27596
|
+
vertexCount: 0,
|
|
27597
|
+
firstStart: 0,
|
|
27598
|
+
index: 0,
|
|
27599
|
+
topology: 0
|
|
27600
|
+
});
|
|
27601
|
+
}
|
|
27602
|
+
}
|
|
27603
|
+
|
|
27508
27604
|
var __getOwnPropDesc$g = Object.getOwnPropertyDescriptor;
|
|
27509
27605
|
var __decorateClass$g = (decorators, target, key, kind) => {
|
|
27510
27606
|
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$g(target, key) : target;
|
|
@@ -30479,7 +30575,15 @@ class RendererJob {
|
|
|
30479
30575
|
shadowMapPassRenderer;
|
|
30480
30576
|
pointLightShadowRenderer;
|
|
30481
30577
|
ddgiProbeRenderer;
|
|
30482
|
-
|
|
30578
|
+
_postRenderer;
|
|
30579
|
+
get postRenderer() {
|
|
30580
|
+
if (!this._postRenderer) {
|
|
30581
|
+
let gbufferFrame = GBufferFrame.getGBufferFrame("ColorPassGBuffer");
|
|
30582
|
+
this._postRenderer = this.addRenderer(PostRenderer);
|
|
30583
|
+
this._postRenderer.setRenderStates(gbufferFrame);
|
|
30584
|
+
}
|
|
30585
|
+
return this._postRenderer;
|
|
30586
|
+
}
|
|
30483
30587
|
clusterLightingRender;
|
|
30484
30588
|
reflectionRenderer;
|
|
30485
30589
|
occlusionSystem;
|
|
@@ -30503,7 +30607,9 @@ class RendererJob {
|
|
|
30503
30607
|
}
|
|
30504
30608
|
this.shadowMapPassRenderer = new ShadowMapPassRenderer();
|
|
30505
30609
|
this.pointLightShadowRenderer = new PointLightShadowRenderer();
|
|
30506
|
-
|
|
30610
|
+
if (Engine3D.setting.render.postProcessing.fxaa.enable) {
|
|
30611
|
+
this.addPost(new FXAAPost());
|
|
30612
|
+
}
|
|
30507
30613
|
}
|
|
30508
30614
|
addRenderer(c, param) {
|
|
30509
30615
|
let renderer;
|
|
@@ -30533,11 +30639,6 @@ class RendererJob {
|
|
|
30533
30639
|
this.pauseRender = false;
|
|
30534
30640
|
}
|
|
30535
30641
|
addPost(post) {
|
|
30536
|
-
if (!this.postRenderer) {
|
|
30537
|
-
let gbufferFrame = GBufferFrame.getGBufferFrame("ColorPassGBuffer");
|
|
30538
|
-
this.postRenderer = this.addRenderer(PostRenderer);
|
|
30539
|
-
this.postRenderer.setRenderStates(gbufferFrame);
|
|
30540
|
-
}
|
|
30541
30642
|
if (post instanceof PostBase) {
|
|
30542
30643
|
this.postRenderer.attachPost(this.view, post);
|
|
30543
30644
|
}
|
|
@@ -30555,15 +30656,21 @@ class RendererJob {
|
|
|
30555
30656
|
renderFrame() {
|
|
30556
30657
|
let view = this._view;
|
|
30557
30658
|
ProfilerUtil.startView(view);
|
|
30558
|
-
|
|
30559
|
-
|
|
30560
|
-
|
|
30561
|
-
|
|
30562
|
-
if (this.
|
|
30659
|
+
if (this.clusterLightingRender) {
|
|
30660
|
+
GlobalBindGroup.getLightEntries(view.scene).update(view);
|
|
30661
|
+
GlobalBindGroup.getReflectionEntries(view.scene).update(view);
|
|
30662
|
+
}
|
|
30663
|
+
if (Engine3D.setting.occlusionQuery.enable && this.occlusionSystem) {
|
|
30664
|
+
this.occlusionSystem.update(view.camera, view.scene);
|
|
30665
|
+
}
|
|
30666
|
+
if (this.clusterLightingRender) {
|
|
30667
|
+
this.clusterLightingRender.render(view, this.occlusionSystem);
|
|
30668
|
+
}
|
|
30669
|
+
if (Engine3D.setting.shadow.enable && this.shadowMapPassRenderer) {
|
|
30563
30670
|
ShadowLightsCollect.update(view);
|
|
30564
30671
|
this.shadowMapPassRenderer.render(view, this.occlusionSystem);
|
|
30565
30672
|
}
|
|
30566
|
-
if (this.pointLightShadowRenderer) {
|
|
30673
|
+
if (Engine3D.setting.shadow.enable && this.pointLightShadowRenderer) {
|
|
30567
30674
|
this.pointLightShadowRenderer.render(view, this.occlusionSystem);
|
|
30568
30675
|
}
|
|
30569
30676
|
if (this.depthPassRenderer) {
|
|
@@ -40784,7 +40891,7 @@ class PostProcessingComponent extends ComponentBase {
|
|
|
40784
40891
|
}
|
|
40785
40892
|
}
|
|
40786
40893
|
|
|
40787
|
-
const version = "1.0.
|
|
40894
|
+
const version = "1.0.13";
|
|
40788
40895
|
|
|
40789
40896
|
class Engine3D {
|
|
40790
40897
|
/**
|
|
@@ -66370,4 +66477,4 @@ const __viteBrowserExternal = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.def
|
|
|
66370
66477
|
__proto__: null
|
|
66371
66478
|
}, Symbol.toStringTag, { value: 'Module' }));
|
|
66372
66479
|
|
|
66373
|
-
export { AccelerateDecelerateInterpolator, AccelerateInterpolator, AnimationCurve, AnimationCurveT, AnimationMonitor, AnimatorComponent, AnimatorEventKeyframe, AnticipateInterpolator, AnticipateOvershootInterpolator, ArrayHas, ArrayItemIndex, AtlasParser, AtmosphericComponent, AtmosphericScatteringSky, AtmosphericScatteringSkySetting, AtmosphericScatteringSky_shader, AttributeAnimCurve, AxisObject, B3DMLoader, B3DMLoaderBase, B3DMParseUtil, B3DMParser, BRDFLUT, BRDFLUTGenerate, BRDF_frag, BatchTable, BiMap, BillboardComponent, BillboardType, BitUtil, BitmapTexture2D, BitmapTexture2DArray, BitmapTextureCube, Blend, BlendFactor, BlendMode, BlendShapeData, BlendShapePropertyData, BloomPost, BlurEffectCreatorBlur_cs, BlurEffectCreatorSample_cs, BlurTexture2DBufferCreator, BounceInterpolator, BoundUtil, BoundingBox, BoundingSphere, BoxColliderShape, BoxGeometry, BrdfLut_frag, BsDF_frag, BxDF_frag, BxdfDebug_frag, BytesArray, CEvent, CEventDispatcher, CEventListener, CResizeEvent, CSM, Camera3D, CameraControllerBase, CameraType, CameraUtil, CapsuleColliderShape, CastPointShadowMaterialPass, CastShadowMaterialPass, Clearcoat_frag, ClusterBoundsSource_cs, ClusterConfig, ClusterDebug_frag, ClusterLight, ClusterLightingBuffer, ClusterLightingRender, ClusterLighting_cs, CollectInfo, ColliderComponent, ColliderShape, ColliderShapeType, Color, ColorGradient, ColorLitMaterial, ColorLitShader, ColorPassFragmentOutput, ColorPassRenderer, ColorUtil, ComData, Combine_cs, Common_frag, Common_vert, ComponentBase, ComponentCollect, ComputeGPUBuffer, ComputeShader, Context3D, CubeCamera, CubeMapFaceEnum, CubeSky_Shader, CubicBezierCurve, CubicBezierPath, CubicBezierType, CycleInterpolator, CylinderGeometry, DDGIIrradianceComputePass, DDGIIrradianceGPUBufferReader, DDGIIrradianceVolume, DDGIIrradiance_shader, DDGILightingPass, DDGILighting_shader, DDGIMultiBouncePass, DDGIProbeRenderer, DEGREES_TO_RADIANS, DecelerateInterpolator, Denoising_cs, Depth2DTextureArray, DepthCubeArrayTexture, DepthMaterialPass, DepthOfFieldPost, DepthOfView_cs, DirectLight, DoubleArray, EditorInspector, Engine3D, Entity, EntityBatchCollect, EntityCollect, EnvMap_frag, ErpImage2CubeMap, ErpImage2CubeMapCreateCube_cs, ErpImage2CubeMapRgbe2rgba_cs, ExtrudeGeometry, FASTFLOOR, FXAAPost, FXAAShader, FastMathShader, FatLineGeometry, FatLineMaterial, FatLineRenderer, FatLineShader, FatLine_FS, FatLine_VS, FeatureTable, FileLoader, FirstPersonCameraController, Float16ArrayTexture, Float32ArrayTexture, FlyCameraController, FontChar, FontInfo, FontPage, FontParser, ForwardRenderJob, FragmentOutput, FragmentVarying, FrameCache, Frustum, FrustumCSM, FrustumCulling_cs, FullQuad_vert_wgsl, GBufferFrame, GBufferPass, GBufferPost, GBufferStand, GBuffer_pass, GILighting, GIProbeMaterial, GIProbeMaterialType, GIProbeShader, GIRenderCompleteEvent, GIRenderStartEvent, GLBChunk, GLBHeader, GLBParser, GLSLLexer, GLSLLexerToken, GLSLPreprocessor, GLSLSyntax, GLTFBinaryExtension, GLTFMaterial, GLTFParser, GLTFSubParser, GLTFSubParserCamera, GLTFSubParserConverter, GLTFSubParserMaterial, GLTFSubParserMesh, GLTFSubParserSkeleton, GLTFSubParserSkin, GLTFType, GLTF_Accessors, GLTF_Info, GLTF_Light, GLTF_Mesh, GLTF_Node, GLTF_Primitives, GLTF_Scene, GPUAddressMode, GPUBlendFactor, GPUBufferBase, GPUBufferType, GPUCompareFunction, GPUContext, GPUCullMode, GPUFilterMode, GPUPrimitiveTopology, GPUTextureFormat, GPUVertexFormat, GPUVertexStepMode, GSplatFormat, GSplatMaterial, GSplatRenderer, GSplatShader, GSplat_FS, GSplat_VS, GTAOPost, GTAO_cs, GUIAtlasTexture, GUICanvas, GUIConfig, GUIGeometry, GUIGeometryRebuild, GUIMaterial, GUIPassRenderer, GUIPick, GUIPickHelper, GUIQuad, GUIQuadAttrEnum, GUIRenderer, GUIShader, GUISpace, GUISprite, GUITexture, GaussianSplatParser, GenerayRandomDir, GeoJsonParser, GeoJsonUtil, GeoType, GeometryBase, GeometryIndicesBuffer, GeometryUtil, GeometryVertexBuffer, GeometryVertexType, GetComponentClass, GetCountInstanceID, GetRepeat, GetShader, GlassShader, GlobalBindGroup, GlobalBindGroupLayout, GlobalFog, GlobalFog_shader, GlobalIlluminationComponent, GlobalUniform, GlobalUniformGroup, GodRayPost, GodRay_cs, GridObject, HDRTexture, HDRTextureCube, Hair_frag, Hair_shader_op, Hair_shader_tr, HaltonSeq, Horizontal, HoverCameraController, I3DMLoader, I3DMLoaderBase, I3DMParser, IBLEnvMapCreator, IBLEnvMapCreator_cs, IESProfiles, IESProfiles_frag, IKDTreeUserData, ImageType, IndicesGPUBuffer, Inline_vert, InputSystem, InstanceDrawComponent, InstanceUniform, InstancedMesh, Interpolator, InterpolatorEnum, IrradianceDataReaderCompleteEvent, IrradianceVolumeData_frag, Irradiance_frag, IsEditorInspector, IsNonSerialize, Joint, JointPose, JumperInterpolator, KDTreeEntity, KDTreeNode, KDTreeRange, KDTreeSpace, KDTreeUUID, KHR_draco_mesh_compression, KHR_lights_punctual, KHR_materials_clearcoat, KHR_materials_emissive_strength, KHR_materials_ior, KHR_materials_unlit, KMZParser, KV, KelvinUtil, KeyCode, KeyEvent, Keyframe, KeyframeT, LDRTextureCube, LambertMaterial, Lambert_shader, Light, LightBase, LightData, LightEntries, LightType, LightingFunction_frag, Line, LineClassification, LinearInterpolator, LitMaterial, LitSSSShader, LitShader, Lit_shader, LoaderBase, LoaderEvent, LoaderManager, MAX_VALUE, MIN_VALUE, Material, MaterialDataUniformGPUBuffer, MaterialUtilities, MathShader, MathUtil, Matrix3, Matrix4, MatrixBindGroup, MatrixGPUBuffer, MatrixShader, MemoryDO, MemoryInfo, MergeRGBACreator, MergeRGBA_cs, MeshColliderShape, MeshFilter, MeshRenderer, MinMaxAnimationCurves, MinMaxCurve, MinMaxCurveState, MinMaxPolyCurves, MorePassParser, MorePassShader, MorphTargetBlender, MorphTargetData, MorphTargetFrame, MorphTargetTransformKey, MorphTarget_shader, MouseCode, MultiBouncePass_cs, Navi3DAstar, Navi3DConst, Navi3DEdge, Navi3DFunnel, Navi3DMaskType, Navi3DMesh, Navi3DPoint, Navi3DPoint2D, Navi3DPointFat, Navi3DRouter, Navi3DTriangle, NonSerialize, NormalMap_frag, OAnimationEvent, OBJParser, Object3D, Object3DEvent, Object3DTransformTools, Object3DUtil, ObjectAnimClip, OcclusionSystem, Octree, OctreeEntity, OrbitController, OrderMap, Orientation3D, OutLineBlendColor_cs, OutlineCalcOutline_cs, OutlinePass, OutlinePost, OutlinePostData, OutlinePostManager, OutlinePostSlot, Outline_cs, OvershootInterpolator, PBRLItShader, PBRLitSSSShader, ParserBase, ParserFormat, ParticleSystemCurveEvalMode, ParticleSystemRandomnessIds, PassGenerate, PassShader, PassType, PhysicMaterialUniform_frag, PickCompute, PickFire, PickGUIEvent3D, PickResult, Picker_cs, PingPong, PipelinePool, Plane3D, PlaneClassification, PlaneGeometry, PointClassification, PointLight, PointLightShadowRenderer, PointShadowCubeCamera, PointerEvent3D, Polynomial, PolynomialCurve, Polynomials, PoolNode, PostBase, PostProcessingComponent, PostRenderer, PreDepthPassRenderer, PreFilteredEnvironment_cs, PreFilteredEnvironment_cs2, PreIntegratedLut, PreIntegratedLutCompute, PrefabAvatarData, PrefabAvatarParser, PrefabBoneData, PrefabMaterialParser, PrefabMeshData, PrefabMeshParser, PrefabNode, PrefabParser, PrefabStringUtil, PrefabTextureData, PrefabTextureParser, Preprocessor, Probe, ProbeEntries, ProbeGBufferFrame, ProfilerUtil, PropertyAnimClip, PropertyAnimTag, PropertyAnimation, PropertyAnimationClip, PropertyAnimationClipState, PropertyAnimationEvent, PropertyHelp, QuadAABB, QuadGlsl_fs, QuadGlsl_vs, QuadRoot, QuadShader, QuadTree, QuadTreeCell, Quad_depth2dArray_frag_wgsl, Quad_depth2d_frag_wgsl, Quad_depthCube_frag_wgsl, Quad_frag_wgsl, Quad_vert_wgsl, Quaternion, RADIANS_TO_DEGREES, RGBEErrorCode, RGBEHeader, RGBEParser, RTDescriptor, RTFrame, RTResourceConfig, RTResourceMap, Rand, RandomSeed, Ray, RayCastMeshDetail, Reader, Rect, Reference, Reflection, ReflectionCG, ReflectionEntries, ReflectionMaterial, ReflectionRenderer, ReflectionShader, ReflectionShader_shader, RegisterComponent, RegisterShader, RenderContext, RenderLayer, RenderLayerUtil, RenderNode, RenderShaderCollect, RenderShaderCompute, RenderShaderPass, RenderTexture, RendererBase, RendererJob, RendererMap, RendererMask, RendererMaskUtil, RendererPassState, RepeatSE, Res, RotationControlComponents, SHCommon_frag, SN_ArrayConstant, SN_BinaryOperation, SN_Break, SN_CodeBlock, SN_Constant, SN_Continue, SN_Declaration, SN_Discard, SN_DoWhileLoop, SN_Expression, SN_ForLoop, SN_Function, SN_FunctionArgs, SN_FunctionCall, SN_IFBranch, SN_Identifier, SN_IndexOperation, SN_Layout, SN_ParenExpression, SN_Precision, SN_Return, SN_SelectOperation, SN_Struct, SN_TernaryOperation, SN_UnaryOperation, SN_WhileLoop, SSAO_cs, SSGI2_cs, SSGIPost, SSRPost, SSR_BlendColor_cs, SSR_IS_Kernel, SSR_IS_cs, SSR_RayTrace_cs, ScaleControlComponents, Scene3D, Shader, ShaderAttributeInfo, ShaderConverter, ShaderConverterResult, ShaderLib, ShaderPassBase, ShaderReflection, ShaderStage, ShaderState, ShaderUniformInfo, ShaderUtil, ShadingInput, ShadowLightsCollect, ShadowMapPassRenderer, ShadowMapping_frag, Skeleton, SkeletonAnimationClip, SkeletonAnimationClipState, SkeletonAnimationComponent, SkeletonAnimationCompute, SkeletonAnimation_shader, SkeletonBlendComputeArgs, SkeletonPose, SkeletonTransformComputeArgs, SkinnedMeshRenderer, SkinnedMeshRenderer2, SkyGBufferPass, SkyGBuffer_pass, SkyMaterial, SkyRenderer, SkyShader, SolidColorSky, SphereColliderShape, SphereGeometry, SphereReflection, SpotLight, StandShader, StatementNode, StorageGPUBuffer, StringUtil, Struct, StructStorageGPUBuffer, SubGeometry, TAACopyTex_cs, TAAPost, TAASharpTex_cs, TAA_cs, TestComputeLoadBuffer, TextAnchor, TextFieldLayout, TextFieldLine, Texture, TextureCube, TextureCubeFaceData, TextureCubeStdCreator, TextureCubeUtils, TextureMipmapCompute, TextureMipmapGenerator, TextureScaleCompute, ThirdPersonCameraController, TileSet, TileSetChild, TileSetChildContent, TileSetChildContentMetaData, TileSetRoot, TilesRenderer, Time, TokenType, TorusGeometry, TouchData, TrailGeometry, Transform, TransformAxisEnum, TransformControllerBaseComponent, TransformMode, TransformSpaceMode, TranslationControlComponents, TranslatorContext, TriGeometry, Triangle, UIButton, UIButtonTransition, UIComponentBase, UIEvent, UIImage, UIImageGroup, UIInteractive, UIInteractiveStyle, UIPanel, UIRenderAble, UIShadow, UITextField, UITransform, UUID, UV, Uint32ArrayTexture, Uint8ArrayTexture, UnLit, UnLitMaterial, UnLitMaterialUniform_frag, UnLitShader, UnLitTexArrayMaterial, UnLitTexArrayShader, UnLitTextureArray, UnLit_frag, UniformGPUBuffer, UniformNode, UniformType, ValueEnumType, ValueOp, ValueParser, ValueSpread, Vector2, Vector3, Vector3Ex, Vector4, VertexAttribute, VertexAttributeIndexShader, VertexAttributeName, VertexAttributeSize, VertexAttributeStride, VertexAttributes_vert, VertexBufferLayout, VertexFormat, VertexGPUBuffer, Vertical, VideoUniform_frag, View3D, ViewPanel, ViewQuad, VirtualTexture, WGSLTranslator, WayLines3D, WayPoint3D, WebGPUDescriptorCreator, WorldMatrixUniform, WorldPanel, WrapMode, WrapTimeMode, ZCullingCompute, ZPassShader_cs, ZPassShader_fs, ZPassShader_vs, ZSorterUtil, append, arrayToString, blendComponent, buildCurves, byteSizeOfType, calculateCurveRangesValue, calculateMinMax, castPointShadowMap_vert, clamp, clampRepeat, computeAABBFromPositions, cos, crossProduct, cubicPolynomialRoot, cubicPolynomialRootsGeneric, curvesSupportProcedural, deg2Rad, detectGSplatFormat, directionShadowCastMap_frag, dot, doubleIntegrateSegment, downSample, fastInvSqrt, floorfToIntPos, fonts, generateRandom, generateRandom3, getFloatFromInt, getGLTypeFromTypedArray, getGLTypeFromTypedArrayType, getGlobalRandomSeed, getTypedArray, getTypedArrayTypeFromGLType, grad1, grad2, grad3, grad4, inferSHOrder, integrateSegment, irradianceDataReader, kPI, lerp, lerpByte, lerpColor, lerpVector3, magnitude, makeAloneSprite, makeGUISprite, makeMatrix44, matrixMultiply, matrixRotate, matrixRotateY, mergeFunctions, multiplyMatrices4x4REF, normal_distribution, normalizeFast, normalizeSafe, normalizedToByte, normalizedToWord, outlinePostData, outlinePostManager, parsePlyGaussianSplat, parsePlyHeader, perm, post, quadraticPolynomialRootsGeneric, rad2Deg, random01, randomBarycentricCoord, randomPointBetweenEllipsoid, randomPointBetweenSphere, randomPointInsideCube, randomPointInsideEllipsoid, randomPointInsideUnitCircle, randomPointInsideUnitSphere, randomQuaternion, randomQuaternionUniformDistribution, randomSeed, randomUnitVector, randomUnitVector2, rangedRandomFloat, rangedRandomInt, readByType, readMagicBytes, registerMaterial, repeat, rotMatrix, rotateVectorByQuat, roundfToIntPos, scale, shadowCastMap_frag, shadowCastMap_vert, simplex, sin, snoise1, snoise2, snoise3, snoise4, sqrMagnitude, sqrtImpl, stencilStateFace, swap, textureCompress, threshold, toHalfFloat, tw, uniform_real_distribution, uniform_real_distribution2, upSample$1 as upSample, webGPUContext, zSorterUtil };
|
|
66480
|
+
export { AccelerateDecelerateInterpolator, AccelerateInterpolator, AnimationCurve, AnimationCurveT, AnimationMonitor, AnimatorComponent, AnimatorEventKeyframe, AnticipateInterpolator, AnticipateOvershootInterpolator, ArrayHas, ArrayItemIndex, AtlasParser, AtmosphericComponent, AtmosphericScatteringSky, AtmosphericScatteringSkySetting, AtmosphericScatteringSky_shader, AttributeAnimCurve, AxisObject, B3DMLoader, B3DMLoaderBase, B3DMParseUtil, B3DMParser, BRDFLUT, BRDFLUTGenerate, BRDF_frag, BatchTable, BiMap, BillboardComponent, BillboardType, BitUtil, BitmapTexture2D, BitmapTexture2DArray, BitmapTextureCube, Blend, BlendFactor, BlendMode, BlendShapeData, BlendShapePropertyData, BloomPost, BlurEffectCreatorBlur_cs, BlurEffectCreatorSample_cs, BlurTexture2DBufferCreator, BounceInterpolator, BoundUtil, BoundingBox, BoundingSphere, BoxColliderShape, BoxGeometry, BrdfLut_frag, BsDF_frag, BxDF_frag, BxdfDebug_frag, BytesArray, CEvent, CEventDispatcher, CEventListener, CResizeEvent, CSM, Camera3D, CameraControllerBase, CameraType, CameraUtil, CapsuleColliderShape, CastPointShadowMaterialPass, CastShadowMaterialPass, Clearcoat_frag, ClusterBoundsSource_cs, ClusterConfig, ClusterDebug_frag, ClusterLight, ClusterLightingBuffer, ClusterLightingRender, ClusterLighting_cs, CollectInfo, ColliderComponent, ColliderShape, ColliderShapeType, Color, ColorGradient, ColorLitMaterial, ColorLitShader, ColorPassFragmentOutput, ColorPassRenderer, ColorUtil, ComData, Combine_cs, Common_frag, Common_vert, ComponentBase, ComponentCollect, ComputeGPUBuffer, ComputeShader, Context3D, CubeCamera, CubeMapFaceEnum, CubeSky_Shader, CubicBezierCurve, CubicBezierPath, CubicBezierType, CycleInterpolator, CylinderGeometry, DDGIIrradianceComputePass, DDGIIrradianceGPUBufferReader, DDGIIrradianceVolume, DDGIIrradiance_shader, DDGILightingPass, DDGILighting_shader, DDGIMultiBouncePass, DDGIProbeRenderer, DEGREES_TO_RADIANS, DecelerateInterpolator, Denoising_cs, Depth2DTextureArray, DepthCubeArrayTexture, DepthMaterialPass, DepthOfFieldPost, DepthOfView_cs, DirectLight, DoubleArray, EditorInspector, Engine3D, Entity, EntityBatchCollect, EntityCollect, EnvMap_frag, ErpImage2CubeMap, ErpImage2CubeMapCreateCube_cs, ErpImage2CubeMapRgbe2rgba_cs, ExtrudeGeometry, FASTFLOOR, FXAAPost, FXAAShader, FastMathShader, FatLineGeometry, FatLineMaterial, FatLineRenderer, FatLineShader, FatLine_FS, FatLine_VS, FeatureTable, FileLoader, FirstPersonCameraController, Float16ArrayTexture, Float32ArrayTexture, FlyCameraController, FontChar, FontInfo, FontPage, FontParser, ForwardRenderJob, FragmentOutput, FragmentVarying, FrameCache, Frustum, FrustumCSM, FrustumCulling_cs, FullQuad_vert_wgsl, GBufferFrame, GBufferPass, GBufferPost, GBufferStand, GBuffer_pass, GILighting, GIProbeMaterial, GIProbeMaterialType, GIProbeShader, GIRenderCompleteEvent, GIRenderStartEvent, GLBChunk, GLBHeader, GLBParser, GLSLLexer, GLSLLexerToken, GLSLPreprocessor, GLSLSyntax, GLTFBinaryExtension, GLTFMaterial, GLTFParser, GLTFSubParser, GLTFSubParserCamera, GLTFSubParserConverter, GLTFSubParserMaterial, GLTFSubParserMesh, GLTFSubParserSkeleton, GLTFSubParserSkin, GLTFType, GLTF_Accessors, GLTF_Info, GLTF_Light, GLTF_Mesh, GLTF_Node, GLTF_Primitives, GLTF_Scene, GPUAddressMode, GPUBlendFactor, GPUBufferBase, GPUBufferType, GPUCompareFunction, GPUContext, GPUCullMode, GPUFilterMode, GPUPrimitiveTopology, GPUTextureFormat, GPUVertexFormat, GPUVertexStepMode, GSplatFormat, GSplatGeometry, GSplatMaterial, GSplatRenderer, GSplatShader, GSplat_FS, GSplat_VS, GTAOPost, GTAO_cs, GUIAtlasTexture, GUICanvas, GUIConfig, GUIGeometry, GUIGeometryRebuild, GUIMaterial, GUIPassRenderer, GUIPick, GUIPickHelper, GUIQuad, GUIQuadAttrEnum, GUIRenderer, GUIShader, GUISpace, GUISprite, GUITexture, GaussianSplatParser, GenerayRandomDir, GeoJsonParser, GeoJsonUtil, GeoType, GeometryBase, GeometryIndicesBuffer, GeometryUtil, GeometryVertexBuffer, GeometryVertexType, GetComponentClass, GetCountInstanceID, GetRepeat, GetShader, GlassShader, GlobalBindGroup, GlobalBindGroupLayout, GlobalFog, GlobalFog_shader, GlobalIlluminationComponent, GlobalUniform, GlobalUniformGroup, GodRayPost, GodRay_cs, GridObject, HDRTexture, HDRTextureCube, Hair_frag, Hair_shader_op, Hair_shader_tr, HaltonSeq, Horizontal, HoverCameraController, I3DMLoader, I3DMLoaderBase, I3DMParser, IBLEnvMapCreator, IBLEnvMapCreator_cs, IESProfiles, IESProfiles_frag, IKDTreeUserData, ImageType, IndicesGPUBuffer, Inline_vert, InputSystem, InstanceDrawComponent, InstanceUniform, InstancedMesh, Interpolator, InterpolatorEnum, IrradianceDataReaderCompleteEvent, IrradianceVolumeData_frag, Irradiance_frag, IsEditorInspector, IsNonSerialize, Joint, JointPose, JumperInterpolator, KDTreeEntity, KDTreeNode, KDTreeRange, KDTreeSpace, KDTreeUUID, KHR_draco_mesh_compression, KHR_lights_punctual, KHR_materials_clearcoat, KHR_materials_emissive_strength, KHR_materials_ior, KHR_materials_unlit, KMZParser, KV, KelvinUtil, KeyCode, KeyEvent, Keyframe, KeyframeT, LDRTextureCube, LambertMaterial, Lambert_shader, Light, LightBase, LightData, LightEntries, LightType, LightingFunction_frag, Line, LineClassification, LinearInterpolator, LitMaterial, LitSSSShader, LitShader, Lit_shader, LoaderBase, LoaderEvent, LoaderManager, MAX_VALUE, MIN_VALUE, Material, MaterialDataUniformGPUBuffer, MaterialUtilities, MathShader, MathUtil, Matrix3, Matrix4, MatrixBindGroup, MatrixGPUBuffer, MatrixShader, MemoryDO, MemoryInfo, MergeRGBACreator, MergeRGBA_cs, MeshColliderShape, MeshFilter, MeshRenderer, MinMaxAnimationCurves, MinMaxCurve, MinMaxCurveState, MinMaxPolyCurves, MorePassParser, MorePassShader, MorphTargetBlender, MorphTargetData, MorphTargetFrame, MorphTargetTransformKey, MorphTarget_shader, MouseCode, MultiBouncePass_cs, Navi3DAstar, Navi3DConst, Navi3DEdge, Navi3DFunnel, Navi3DMaskType, Navi3DMesh, Navi3DPoint, Navi3DPoint2D, Navi3DPointFat, Navi3DRouter, Navi3DTriangle, NonSerialize, NormalMap_frag, OAnimationEvent, OBJParser, Object3D, Object3DEvent, Object3DTransformTools, Object3DUtil, ObjectAnimClip, OcclusionSystem, Octree, OctreeEntity, OrbitController, OrderMap, Orientation3D, OutLineBlendColor_cs, OutlineCalcOutline_cs, OutlinePass, OutlinePost, OutlinePostData, OutlinePostManager, OutlinePostSlot, Outline_cs, OvershootInterpolator, PBRLItShader, PBRLitSSSShader, ParserBase, ParserFormat, ParticleSystemCurveEvalMode, ParticleSystemRandomnessIds, PassGenerate, PassShader, PassType, PhysicMaterialUniform_frag, PickCompute, PickFire, PickGUIEvent3D, PickResult, Picker_cs, PingPong, PipelinePool, Plane3D, PlaneClassification, PlaneGeometry, PointClassification, PointLight, PointLightShadowRenderer, PointShadowCubeCamera, PointerEvent3D, Polynomial, PolynomialCurve, Polynomials, PoolNode, PostBase, PostProcessingComponent, PostRenderer, PreDepthPassRenderer, PreFilteredEnvironment_cs, PreFilteredEnvironment_cs2, PreIntegratedLut, PreIntegratedLutCompute, PrefabAvatarData, PrefabAvatarParser, PrefabBoneData, PrefabMaterialParser, PrefabMeshData, PrefabMeshParser, PrefabNode, PrefabParser, PrefabStringUtil, PrefabTextureData, PrefabTextureParser, Preprocessor, Probe, ProbeEntries, ProbeGBufferFrame, ProfilerUtil, PropertyAnimClip, PropertyAnimTag, PropertyAnimation, PropertyAnimationClip, PropertyAnimationClipState, PropertyAnimationEvent, PropertyHelp, QuadAABB, QuadGlsl_fs, QuadGlsl_vs, QuadRoot, QuadShader, QuadTree, QuadTreeCell, Quad_depth2dArray_frag_wgsl, Quad_depth2d_frag_wgsl, Quad_depthCube_frag_wgsl, Quad_frag_wgsl, Quad_vert_wgsl, Quaternion, R32UintTexture, RADIANS_TO_DEGREES, RGBEErrorCode, RGBEHeader, RGBEParser, RTDescriptor, RTFrame, RTResourceConfig, RTResourceMap, Rand, RandomSeed, Ray, RayCastMeshDetail, Reader, Rect, Reference, Reflection, ReflectionCG, ReflectionEntries, ReflectionMaterial, ReflectionRenderer, ReflectionShader, ReflectionShader_shader, RegisterComponent, RegisterShader, RenderContext, RenderLayer, RenderLayerUtil, RenderNode, RenderShaderCollect, RenderShaderCompute, RenderShaderPass, RenderTexture, RendererBase, RendererJob, RendererMap, RendererMask, RendererMaskUtil, RendererPassState, RepeatSE, Res, RotationControlComponents, SHCommon_frag, SN_ArrayConstant, SN_BinaryOperation, SN_Break, SN_CodeBlock, SN_Constant, SN_Continue, SN_Declaration, SN_Discard, SN_DoWhileLoop, SN_Expression, SN_ForLoop, SN_Function, SN_FunctionArgs, SN_FunctionCall, SN_IFBranch, SN_Identifier, SN_IndexOperation, SN_Layout, SN_ParenExpression, SN_Precision, SN_Return, SN_SelectOperation, SN_Struct, SN_TernaryOperation, SN_UnaryOperation, SN_WhileLoop, SSAO_cs, SSGI2_cs, SSGIPost, SSRPost, SSR_BlendColor_cs, SSR_IS_Kernel, SSR_IS_cs, SSR_RayTrace_cs, ScaleControlComponents, Scene3D, Shader, ShaderAttributeInfo, ShaderConverter, ShaderConverterResult, ShaderLib, ShaderPassBase, ShaderReflection, ShaderStage, ShaderState, ShaderUniformInfo, ShaderUtil, ShadingInput, ShadowLightsCollect, ShadowMapPassRenderer, ShadowMapping_frag, Skeleton, SkeletonAnimationClip, SkeletonAnimationClipState, SkeletonAnimationComponent, SkeletonAnimationCompute, SkeletonAnimation_shader, SkeletonBlendComputeArgs, SkeletonPose, SkeletonTransformComputeArgs, SkinnedMeshRenderer, SkinnedMeshRenderer2, SkyGBufferPass, SkyGBuffer_pass, SkyMaterial, SkyRenderer, SkyShader, SolidColorSky, SphereColliderShape, SphereGeometry, SphereReflection, SpotLight, StandShader, StatementNode, StorageGPUBuffer, StringUtil, Struct, StructStorageGPUBuffer, SubGeometry, TAACopyTex_cs, TAAPost, TAASharpTex_cs, TAA_cs, TestComputeLoadBuffer, TextAnchor, TextFieldLayout, TextFieldLine, Texture, TextureCube, TextureCubeFaceData, TextureCubeStdCreator, TextureCubeUtils, TextureMipmapCompute, TextureMipmapGenerator, TextureScaleCompute, ThirdPersonCameraController, TileSet, TileSetChild, TileSetChildContent, TileSetChildContentMetaData, TileSetRoot, TilesRenderer, Time, TokenType, TorusGeometry, TouchData, TrailGeometry, Transform, TransformAxisEnum, TransformControllerBaseComponent, TransformMode, TransformSpaceMode, TranslationControlComponents, TranslatorContext, TriGeometry, Triangle, UIButton, UIButtonTransition, UIComponentBase, UIEvent, UIImage, UIImageGroup, UIInteractive, UIInteractiveStyle, UIPanel, UIRenderAble, UIShadow, UITextField, UITransform, UUID, UV, Uint32ArrayTexture, Uint8ArrayTexture, UnLit, UnLitMaterial, UnLitMaterialUniform_frag, UnLitShader, UnLitTexArrayMaterial, UnLitTexArrayShader, UnLitTextureArray, UnLit_frag, UniformGPUBuffer, UniformNode, UniformType, ValueEnumType, ValueOp, ValueParser, ValueSpread, Vector2, Vector3, Vector3Ex, Vector4, VertexAttribute, VertexAttributeIndexShader, VertexAttributeName, VertexAttributeSize, VertexAttributeStride, VertexAttributes_vert, VertexBufferLayout, VertexFormat, VertexGPUBuffer, Vertical, VideoUniform_frag, View3D, ViewPanel, ViewQuad, VirtualTexture, WGSLTranslator, WayLines3D, WayPoint3D, WebGPUDescriptorCreator, WorldMatrixUniform, WorldPanel, WrapMode, WrapTimeMode, ZCullingCompute, ZPassShader_cs, ZPassShader_fs, ZPassShader_vs, ZSorterUtil, append, arrayToString, blendComponent, buildCurves, byteSizeOfType, calculateCurveRangesValue, calculateMinMax, castPointShadowMap_vert, clamp, clampRepeat, computeAABBFromPositions, cos, crossProduct, cubicPolynomialRoot, cubicPolynomialRootsGeneric, curvesSupportProcedural, deg2Rad, detectGSplatFormat, directionShadowCastMap_frag, dot, doubleIntegrateSegment, downSample, fastInvSqrt, floorfToIntPos, fonts, generateRandom, generateRandom3, getFloatFromInt, getGLTypeFromTypedArray, getGLTypeFromTypedArrayType, getGlobalRandomSeed, getTypedArray, getTypedArrayTypeFromGLType, grad1, grad2, grad3, grad4, inferSHOrder, integrateSegment, irradianceDataReader, kPI, lerp, lerpByte, lerpColor, lerpVector3, magnitude, makeAloneSprite, makeGUISprite, makeMatrix44, matrixMultiply, matrixRotate, matrixRotateY, mergeFunctions, multiplyMatrices4x4REF, normal_distribution, normalizeFast, normalizeSafe, normalizedToByte, normalizedToWord, outlinePostData, outlinePostManager, parsePlyGaussianSplat, parsePlyHeader, perm, post, quadraticPolynomialRootsGeneric, rad2Deg, random01, randomBarycentricCoord, randomPointBetweenEllipsoid, randomPointBetweenSphere, randomPointInsideCube, randomPointInsideEllipsoid, randomPointInsideUnitCircle, randomPointInsideUnitSphere, randomQuaternion, randomQuaternionUniformDistribution, randomSeed, randomUnitVector, randomUnitVector2, rangedRandomFloat, rangedRandomInt, readByType, readMagicBytes, registerMaterial, repeat, rotMatrix, rotateVectorByQuat, roundfToIntPos, scale, shadowCastMap_frag, shadowCastMap_vert, simplex, sin, snoise1, snoise2, snoise3, snoise4, sqrMagnitude, sqrtImpl, stencilStateFace, swap, textureCompress, threshold, toHalfFloat, tw, uniform_real_distribution, uniform_real_distribution2, upSample$1 as upSample, webGPUContext, zSorterUtil };
|