@rings-webgpu/core 1.0.10 → 1.0.12

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.
@@ -2113,7 +2113,7 @@ function GetShader(name) {
2113
2113
  }
2114
2114
 
2115
2115
  var __defProp$2 = Object.defineProperty;
2116
- var __decorateClass$j = (decorators, target, key, kind) => {
2116
+ var __decorateClass$m = (decorators, target, key, kind) => {
2117
2117
  var result = void 0 ;
2118
2118
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
2119
2119
  if (decorator = decorators[i])
@@ -2216,10 +2216,10 @@ const _Struct = class _Struct {
2216
2216
  return struct.__size;
2217
2217
  }
2218
2218
  };
2219
- __decorateClass$j([
2219
+ __decorateClass$m([
2220
2220
  NonSerialize
2221
2221
  ], _Struct.prototype, "__refection");
2222
- __decorateClass$j([
2222
+ __decorateClass$m([
2223
2223
  NonSerialize
2224
2224
  ], _Struct.prototype, "__size");
2225
2225
  let Struct = _Struct;
@@ -5025,18 +5025,20 @@ class SkeletonAnimation_shader {
5025
5025
  }
5026
5026
  }
5027
5027
 
5028
- let VertexAttributes_vert = `
5028
+ let VertexAttributes_vert = (
5029
+ /*wgsl*/
5030
+ `
5029
5031
  var<private> PI: f32 = 3.14159265359;
5030
5032
  #if USE_METAHUMAN
5031
5033
  ${MorphTarget_shader.getMorphTargetShaderBinding(3, 0)}
5032
- ${SkeletonAnimation_shader.groupBindingAndFunctions(3, 2)}
5034
+ ${SkeletonAnimation_shader.groupBindingAndFunctions(3, 2)}
5033
5035
  #else
5034
5036
  #if USE_MORPHTARGETS
5035
5037
  ${MorphTarget_shader.getMorphTargetShaderBinding(3, 0)}
5036
5038
  #endif
5037
5039
 
5038
5040
  #if USE_SKELETON
5039
- ${SkeletonAnimation_shader.groupBindingAndFunctions(3, 0)}
5041
+ ${SkeletonAnimation_shader.groupBindingAndFunctions(3, 0)}
5040
5042
  #endif
5041
5043
  #endif
5042
5044
 
@@ -5071,6 +5073,10 @@ let VertexAttributes_vert = `
5071
5073
  #endif
5072
5074
  #endif
5073
5075
  #else
5076
+ #if USE_TANGENT
5077
+ @location(auto) TANGENT: vec4<f32>,
5078
+ #endif
5079
+
5074
5080
  #if USE_SKELETON
5075
5081
  #if USE_TANGENT
5076
5082
  @location(auto) joints0: vec4<f32>,
@@ -5117,6 +5123,7 @@ let VertexAttributes_vert = `
5117
5123
  #if USE_TANGENT
5118
5124
  @location(auto) varying_Tangent: vec4<f32>,
5119
5125
  #endif
5126
+
5120
5127
 
5121
5128
  @builtin(position) member: vec4<f32>
5122
5129
  };
@@ -5166,23 +5173,24 @@ let VertexAttributes_vert = `
5166
5173
  clipPosition.z = log2Depth(clipPosition.w, globalUniform.near, globalUniform.far);
5167
5174
  #endif
5168
5175
 
5169
- ORI_CameraWorldDir = normalize(ORI_CAMERAMATRIX[3].xyz - worldPos.xyz);
5176
+ ORI_CameraWorldDir = normalize(ORI_CAMERAMATRIX[3].xyz - worldPos.xyz) ;
5170
5177
 
5171
- ORI_VertexOut.index = f32(vertex.index);
5178
+ ORI_VertexOut.index = f32(vertex.index) ;
5172
5179
 
5173
- ORI_VertexOut.varying_UV0 = vertex.uv.xy;
5180
+ ORI_VertexOut.varying_UV0 = vertex.uv.xy ;
5174
5181
 
5175
5182
  ORI_VertexOut.varying_UV1 = vertex.TEXCOORD_1.xy;
5176
5183
 
5177
- ORI_VertexOut.varying_ViewPos = viewPosition;
5178
- ORI_VertexOut.varying_Clip = clipPosition;
5179
- ORI_VertexOut.varying_WPos = worldPos;
5184
+ ORI_VertexOut.varying_ViewPos = viewPosition ;
5185
+ ORI_VertexOut.varying_Clip = clipPosition ;
5186
+ ORI_VertexOut.varying_WPos = worldPos ;
5180
5187
  ORI_VertexOut.varying_WPos.w = f32(vertex.index);
5181
- ORI_VertexOut.varying_WNormal = normalize(ORI_NORMALMATRIX * vertexNormal.xyz);
5188
+ ORI_VertexOut.varying_WNormal = normalize(ORI_NORMALMATRIX * vertexNormal.xyz) ;
5182
5189
 
5183
- ORI_VertexOut.member = clipPosition;
5190
+ ORI_VertexOut.member = clipPosition ;
5184
5191
  }
5185
- `;
5192
+ `
5193
+ );
5186
5194
 
5187
5195
  let VideoUniform_frag = `
5188
5196
  struct MaterialUniform {
@@ -5301,68 +5309,90 @@ let Inline_vert = (
5301
5309
  `
5302
5310
  );
5303
5311
 
5304
- let Common_frag = `
5305
- #include "GlobalUniform"
5306
- #include "FragmentVarying"
5307
- #include "FragmentOutput"
5308
- #include "ShadingInput"
5309
- #include "ColorUtil_frag"
5310
- #include "BitUtil"
5311
-
5312
- var<private> ORI_FragmentOutput: FragmentOutput;
5313
- var<private> ORI_VertexVarying: FragmentVarying;
5314
- var<private> ORI_ShadingInput: ShadingInput;
5315
- var<private> viewDir:vec3<f32>;
5316
- var<private> modelIndex:u32;
5312
+ let Common_frag = (
5313
+ /*wgsl*/
5314
+ `
5315
+ #include "GlobalUniform"
5316
+ #include "FragmentVarying"
5317
+ #include "FragmentOutput"
5318
+ #include "ShadingInput"
5319
+ #include "ColorUtil_frag"
5320
+ #include "BitUtil"
5317
5321
 
5318
- @fragment
5319
- fn FragMain( vertex_varying:FragmentVarying ) -> FragmentOutput {
5320
- modelIndex = u32(round(vertex_varying.index));
5321
- ORI_VertexVarying = vertex_varying;
5322
- ORI_VertexVarying.vWorldNormal = normalize(vertex_varying.vWorldNormal);
5322
+ var<private> ORI_FragmentOutput: FragmentOutput;
5323
+ var<private> ORI_VertexVarying: FragmentVarying;
5324
+ var<private> ORI_ShadingInput: ShadingInput;
5325
+ var<private> viewDir:vec3<f32>;
5326
+ var<private> modelIndex:u32;
5327
+
5328
+ @fragment
5329
+ fn FragMain( vertex_varying:FragmentVarying ) -> FragmentOutput {
5323
5330
  ORI_FragmentOutput.color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
5324
- viewDir = normalize(globalUniform.CameraPos.xyz - ORI_VertexVarying.vWorldPos.xyz);
5325
- frag();
5331
+ ORI_VertexVarying = vertex_varying;
5332
+ ORI_VertexVarying.vWorldNormal = normalize(vertex_varying.vWorldNormal);
5333
+ ORI_FragmentOutput.color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
5334
+ viewDir = normalize(globalUniform.CameraPos.xyz - ORI_VertexVarying.vWorldPos.xyz) ;
5326
5335
 
5327
- #if USE_DEBUG
5328
- debugFragmentOut();
5329
- #endif
5336
+ frag();
5337
+
5338
+ #if USE_DEBUG
5339
+ debugFragmentOut();
5340
+ #endif
5330
5341
 
5331
- #if USE_OUTDEPTH
5332
- #if USE_LOGDEPTH
5333
- ORI_FragmentOutput.out_depth = log2DepthFixPersp(ORI_VertexVarying.fragPosition.w, globalUniform.near, globalUniform.far);
5334
- #else
5335
- ORI_FragmentOutput.out_depth = ORI_ShadingInput.FragDepth;
5336
- #endif
5337
- #endif
5342
+ #if USE_DEFAULTFRAGOUT
5343
+ // let finalMatrix = globalUniform.projMat * globalUniform.viewMat ;
5344
+ // let nMat = mat3x3<f32>(finalMatrix[0].xyz,finalMatrix[1].xyz,finalMatrix[2].xyz) ;
5345
+ // let ORI_NORMALMATRIX = transpose(inverse( nMat ));
5346
+ // var vNormal = normalize(ORI_NORMALMATRIX * (ORI_VertexVarying.vWorldNormal));
5347
+
5348
+ // let gBuffer = packNHMDGBuffer(
5349
+ // ORI_VertexVarying.fragCoord.z,
5350
+ // ORI_ShadingInput.BaseColor.rgb,
5351
+ // ORI_ShadingInput.BaseColor.rgb,
5352
+ // vec3f(ORI_ShadingInput.Roughness,ORI_ShadingInput.Metallic,ORI_ShadingInput.AmbientOcclusion),
5353
+ // ORI_ShadingInput.Normal,
5354
+ // ORI_ShadingInput.Opacity
5355
+ // ) ;
5356
+ #endif
5338
5357
 
5339
- return ORI_FragmentOutput;
5340
- }
5358
+ #if USE_OUTDEPTH
5359
+ #if USE_LOGDEPTH
5360
+ ORI_FragmentOutput.out_depth = log2DepthFixPersp(ORI_VertexVarying.fragPosition.w, globalUniform.near, globalUniform.far);
5361
+ #else
5362
+ ORI_FragmentOutput.out_depth = ORI_ShadingInput.FragDepth ;
5363
+ #endif
5364
+ #endif
5341
5365
 
5342
- fn packNHMDGBuffer(depth:f32, albedo:vec3f,hdrLighting:vec3f,rmao:vec3f,normal:vec3f,alpha:f32) -> vec4f {
5343
- var gBuffer : vec4f;
5344
- var octUVNormal = (octEncode(normalize( (normal) )) + 1.0) * 0.5;
5345
- var yc = f32(r11g11b9_to_float(vec3f(octUVNormal,rmao.r)));
5346
- #if USE_CASTREFLECTION
5347
- var rgbm = EncodeRGBM(hdrLighting);
5348
- var zc = f32(pack4x8unorm(vec4f(rgbm.rgb,0.0))) ;
5349
- var wc = f32(pack4x8unorm(vec4f(rmao.rg,rgbm.a,0.0)));
5350
- #else
5351
- var zc = f32(vec4fToFloat_7bits(vec4f(albedo.rgb,alpha)));
5352
- var wc = f32(r22g8_to_float(vec2f(f32(modelIndex)/f_r22g8.r,rmao.g)));
5353
- #endif
5366
+ return ORI_FragmentOutput ;
5367
+ }
5354
5368
 
5355
- gBuffer.x = depth ;
5356
- gBuffer.y = yc;
5357
- gBuffer.z = zc;
5358
- gBuffer.w = wc;
5359
- return gBuffer;
5360
- }
5361
5369
 
5362
- fn transformUV( uv:vec2f , offsetScale:vec4f ) -> vec2f{
5363
- return uv * offsetScale.zw + offsetScale.xy;
5364
- }
5365
- `;
5370
+ fn packNHMDGBuffer(depth:f32, albedo:vec3f,hdrLighting:vec3f,rmao:vec3f,normal:vec3f,alpha:f32) -> vec4f {
5371
+ var gBuffer : vec4f ;
5372
+ var octUVNormal = (octEncode(normalize( (normal) )) + 1.0) * 0.5 ;
5373
+ var yc = f32(r11g11b9_to_float(vec3f(octUVNormal,rmao.r))) ;
5374
+ #if USE_CASTREFLECTION
5375
+ var rgbm = EncodeRGBM(hdrLighting);
5376
+ var zc = f32(pack4x8unorm(vec4f(rgbm.rgb,0.0))) ;
5377
+ var wc = f32(pack4x8unorm(vec4f(rmao.rg,rgbm.a,0.0)));
5378
+ #else
5379
+ var zc = f32(vec4fToFloat_7bits(vec4f(albedo.rgb,alpha)));
5380
+ var wc = f32(r22g8_to_float(vec2f(f32(modelIndex)/f_r22g8.r,rmao.g)));
5381
+ #endif
5382
+
5383
+ gBuffer.x = depth ;
5384
+ gBuffer.y = yc ;
5385
+ gBuffer.z = zc ;
5386
+ gBuffer.w = wc ;
5387
+ return gBuffer ;
5388
+ }
5389
+
5390
+ fn transformUV( uv:vec2f , offsetScale:vec4f ) -> vec2f{
5391
+ return uv * offsetScale.zw + offsetScale.xy ;
5392
+ }
5393
+
5394
+ `
5395
+ );
5366
5396
 
5367
5397
  let Common_vert = (
5368
5398
  /*wgsl*/
@@ -5732,6 +5762,7 @@ let FragmentVarying = `
5732
5762
  let FragmentOutput = `
5733
5763
  #if USE_CASTREFLECTION
5734
5764
  struct FragmentOutput {
5765
+ @location(auto) color: vec4<f32>,
5735
5766
  @location(auto) gBuffer: vec4<f32>,
5736
5767
  #if USE_OUTDEPTH
5737
5768
  @builtin(frag_depth) out_depth: f32
@@ -5804,202 +5835,219 @@ let IESProfiles_frag = `
5804
5835
  }
5805
5836
  `;
5806
5837
 
5807
- let ShadowMapping_frag = `
5808
- @group(1) @binding(auto) var shadowMapSampler: sampler;
5838
+ let ShadowMapping_frag = (
5839
+ /*wgsl*/
5840
+ `
5841
+ @group(1) @binding(auto) var shadowMapSampler: sampler_comparison;
5809
5842
  @group(1) @binding(auto) var shadowMap: texture_depth_2d_array;
5810
- @group(1) @binding(auto) var pointShadowMapSampler: sampler;
5843
+ @group(1) @binding(auto) var pointShadowMapSampler: sampler_comparison;
5811
5844
  @group(1) @binding(auto) var pointShadowMap: texture_depth_cube_array;
5812
5845
 
5813
5846
  var<private> directShadowVisibility: array<f32, 8>;
5814
5847
  var<private> pointShadows: array<f32, 8>;
5815
- var<private> shadowWeight: f32 = 1.0;
5848
+ var<private> shadowWeight: f32 = 1.0 ;
5816
5849
 
5817
5850
  fn useShadow(){
5818
- directShadowVisibility = array<f32, 8>(1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0);
5851
+ directShadowVisibility = array<f32, 8>( 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0) ;
5819
5852
  pointShadows = array<f32, 8>(1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0) ;
5820
5853
  directShadowMaping(globalUniform.shadowBias);
5821
5854
  pointShadowMapCompare(globalUniform.pointShadowBias);
5822
5855
  }
5823
5856
 
5824
5857
  fn calcBasicBias(shadowWorldSize:f32, shadowDepthTexSize:f32, near:f32, far:f32) -> f32{
5825
- var bias = shadowWorldSize / shadowDepthTexSize;
5826
- bias = bias / (far - near);
5827
- return bias * 2.0;
5858
+ var bias = shadowWorldSize / shadowDepthTexSize;
5859
+ bias = bias / (far - near);
5860
+ return bias * 2.0;
5828
5861
  }
5829
5862
 
5830
- const dirCount:i32 = 8;
5831
- const pointCount:i32 = 8;
5832
- const csmCount:i32 = ${CSM.Cascades};
5863
+ const dirCount:i32 = 8 ;
5864
+ const pointCount:i32 = 8 ;
5865
+ const csmCount:i32 = ${CSM.Cascades} ;
5833
5866
  var<private> csmLevel:i32 = -1;
5867
+ fn directShadowMaping(shadowBias: f32) {
5834
5868
 
5835
- fn directShadowMaping(shadowBias: f32) {
5836
5869
  let enableCSM:bool = globalUniform.enableCSM > 0.5;
5837
- for(var i:i32 = 0; i < dirCount; i = i+1){
5838
- if(i >= globalUniform.nDirShadowStart && i < globalUniform.nDirShadowEnd){
5839
- let ldx = globalUniform.shadowLights[u32(i) / 4u][u32(i) % 4u];
5840
- let light = lightBuffer[u32(ldx)] ;
5841
- var shadowIndex = i32(light.castShadow);
5842
- var visibility = 1.0;
5843
- var shadowMatrix:mat4x4<f32>;
5844
- #if USE_CSM
5845
- if(enableCSM && shadowIndex == 0){
5846
- var totalWeight = 0.0;
5847
- visibility = 0.0;
5848
- var validCount = 0;
5849
- for(var csm:i32 = 0; csm < csmCount; csm ++){
5850
- var csmShadowBias = globalUniform.csmShadowBias[csm] * shadowBias;
5851
- shadowMatrix = globalUniform.csmMatrix[csm];
5852
- let csmShadowResult = directShadowMapingIndex(light, shadowMatrix, csm, csmShadowBias);
5853
- if(csmShadowResult.y < 0.5){
5854
- validCount ++;
5855
- var uv = 2.0 * csmShadowResult.zw - vec2<f32>(1.0);
5856
- uv = saturate(vec2<f32>(1.0) - abs(uv));
5857
- uv /= clamp(globalUniform.csmMargin, 0.01, 0.5);
5858
- var weight:f32 = min(uv.x, 1.0);
5859
- weight = min(weight, uv.y);
5860
-
5861
- if(validCount == 1 && csm == csmCount - 1){
5862
- visibility = 1.0 - weight + csmShadowResult.x * weight;
5863
- totalWeight = 1.0;
5864
- }else{
5865
- weight *= 1.0 - totalWeight;
5866
- visibility += csmShadowResult.x * weight;
5867
- totalWeight += weight;
5868
- };
5869
-
5870
- if(validCount >= 2 || totalWeight >= 0.99){
5871
- csmLevel = csm;
5872
- break;
5873
- };
5874
- }
5875
- }
5876
-
5877
- totalWeight += 0.0001;
5878
- if(validCount == 0){
5879
- visibility = 1.0;
5880
- }else{
5881
- visibility = visibility / totalWeight ;
5882
- };
5883
- } else {
5884
- shadowMatrix = globalUniform.shadowMatrix[shadowIndex];
5885
- if(enableCSM) {
5886
- shadowIndex += csmCount - 1;
5887
- }
5888
- visibility = directShadowMapingIndex(light, shadowMatrix, shadowIndex, shadowBias).x;
5870
+ for (var i: i32 = 0; i < dirCount ; i = i + 1) {
5871
+ if( i >= globalUniform.nDirShadowStart && i < globalUniform.nDirShadowEnd ){
5872
+ let ldx = globalUniform.shadowLights[u32(i) / 4u][u32(i) % 4u];
5873
+ let light = lightBuffer[u32(ldx)] ;
5874
+ var shadowIndex = i32(light.castShadow);
5875
+ var visibility = 1.0;
5876
+ var shadowMatrix:mat4x4<f32>;
5877
+ #if USE_CSM
5878
+ if(enableCSM && shadowIndex == 0){
5879
+ var totalWeight = 0.0;
5880
+ visibility = 0.0;
5881
+ var validCount = 0;
5882
+ for(var csm:i32 = 0; csm < csmCount; csm ++){
5883
+ var csmShadowBias = globalUniform.csmShadowBias[csm] * shadowBias;
5884
+ shadowMatrix = globalUniform.csmMatrix[csm];
5885
+ let csmShadowResult = directShadowMapingIndex(light, shadowMatrix, csm, csmShadowBias);
5886
+ if(csmShadowResult.y < 0.5){
5887
+ validCount ++;
5888
+
5889
+ var uv = 2.0 * csmShadowResult.zw - vec2<f32>(1.0);
5890
+ uv = saturate(vec2<f32>(1.0) - abs(uv));
5891
+ uv /= clamp(globalUniform.csmMargin, 0.01, 0.5);
5892
+ var weight:f32 = min(uv.x, 1.0);
5893
+ weight = min(weight, uv.y);
5894
+
5895
+ if(validCount == 1 && csm == csmCount - 1){
5896
+ visibility = 1.0 - weight + csmShadowResult.x * weight;
5897
+ totalWeight = 1.0;
5898
+ }else{
5899
+ weight *= 1.0 - totalWeight;
5900
+ visibility += csmShadowResult.x * weight;
5901
+ totalWeight += weight;
5889
5902
  }
5890
- #else
5891
- shadowMatrix = globalUniform.shadowMatrix[shadowIndex];
5892
- visibility = directShadowMapingIndex(light, shadowMatrix, shadowIndex, shadowBias).x;
5893
- #endif
5894
- directShadowVisibility[i] = visibility;
5895
- }
5903
+ // if(weight < 1.0){
5904
+ // visibility += 0.1;
5905
+ // }
5906
+ if(validCount >= 2 || totalWeight >= 0.99){
5907
+ csmLevel = csm;
5908
+ break;
5909
+ }
5910
+ }
5911
+ }
5912
+ totalWeight += 0.0001;
5913
+ if(validCount == 0){
5914
+ visibility = 1.0;
5915
+ }else{
5916
+ visibility = visibility / totalWeight ;
5917
+ }
5918
+ }else{
5919
+ shadowMatrix = globalUniform.shadowMatrix[shadowIndex];
5920
+ if(enableCSM) {
5921
+ shadowIndex += csmCount - 1;
5922
+ }
5923
+ visibility = directShadowMapingIndex(light, shadowMatrix, shadowIndex, shadowBias).x;
5924
+ }
5925
+ #else
5926
+ shadowMatrix = globalUniform.shadowMatrix[shadowIndex];
5927
+ visibility = directShadowMapingIndex(light, shadowMatrix, shadowIndex, shadowBias).x;
5928
+ #endif
5929
+ directShadowVisibility[i] = visibility;
5930
+ }
5896
5931
  }
5932
+
5897
5933
  }
5898
5934
 
5899
- fn directShadowMapingIndex(light:LightData, matrix:mat4x4<f32>, depthTexIndex:i32, shadowBias:f32) -> vec4<f32> {
5900
- var visibility = 1.0;
5901
- var isOutSideArea:f32 = 1.0;
5902
- var varying_shadowUV:vec2<f32> = vec2<f32>(0.0);
5903
- #if USE_SHADOWMAPING
5904
- var shadowPosTmp = matrix * vec4<f32>(ORI_VertexVarying.vWorldPos.xyz, 1.0);
5905
- var shadowPos = shadowPosTmp.xyz / shadowPosTmp.w;
5906
- varying_shadowUV = shadowPos.xy * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5, 0.5);
5907
- if (varying_shadowUV.x <= 1.0
5908
- && varying_shadowUV.x >= 0.0
5909
- && varying_shadowUV.y <= 1.0
5910
- && varying_shadowUV.y >= 0.0
5911
- && shadowPosTmp.z <= 1.0
5912
- && shadowPosTmp.z >= 0.0){
5913
- visibility = 0.0;
5914
- isOutSideArea = 0.0;
5915
- var uvOnePixel = 1.0 / vec2<f32>(globalUniform.shadowMapSize) ;
5916
- var totalWeight = 0.0;
5917
- var bias = -0.005 * max(dot(fragData.N, -light.direction) , 0.0 );
5918
- bias = clamp(bias, 0, 0.01) + -shadowBias;
5919
- let bound = 1;
5920
- for (var y = -bound; y <= bound; y++) {
5921
- for(var x = -bound; x <= bound; x++) {
5922
- var offset = vec2<f32>(f32(x), f32(y)) ;
5923
- var offsetUV = offset * uvOnePixel ;
5924
- var weight = min(length(offset),1.0) ;
5925
- var depth = textureSampleLevel(shadowMap, shadowMapSampler, varying_shadowUV + offsetUV , depthTexIndex, 0);
5926
- if ((shadowPos.z - bias ) < depth) {
5927
- visibility += weight ;
5928
- totalWeight += weight;
5929
- }else{
5930
- totalWeight += 1.0;
5931
- };
5932
- }
5935
+ fn directShadowMapingIndex(light:LightData, matrix:mat4x4<f32>, depthTexIndex:i32, shadowBias:f32) -> vec4<f32>
5936
+ {
5937
+ var visibility = 1.0;
5938
+ var isOutSideArea:f32 = 1.0;
5939
+ var varying_shadowUV:vec2<f32> = vec2<f32>(0.0);
5940
+ #if USE_SHADOWMAPING
5941
+ var shadowPosTmp = matrix * vec4<f32>(ORI_VertexVarying.vWorldPos.xyz, 1.0);
5942
+ var shadowPos = shadowPosTmp.xyz / shadowPosTmp.w;
5943
+ varying_shadowUV = shadowPos.xy * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5, 0.5);
5944
+ if (varying_shadowUV.x <= 1.0
5945
+ && varying_shadowUV.x >= 0.0
5946
+ && varying_shadowUV.y <= 1.0
5947
+ && varying_shadowUV.y >= 0.0
5948
+ && shadowPosTmp.z <= 1.0
5949
+ && shadowPosTmp.z >= 0.0)
5950
+ {
5951
+ visibility = 0.0;
5952
+ isOutSideArea = 0.0;
5953
+ var uvOnePixel = 1.0 / vec2<f32>(globalUniform.shadowMapSize) ;
5954
+ var totalWeight = 0.0;
5955
+ // var NoL = (dot(normalize(ORI_VertexVarying.vWorldNormal), normalize(-light.direction)));
5956
+ // let v = max(NoL, 0.0) ;
5957
+ // var bias = max(0.05 * (dot(normalize(fragData.N), normalize(-light.direction)) ), -shadowBias);
5958
+ var bias = -0.005 * max(dot(fragData.N, -light.direction) , 0.0 );
5959
+ bias = clamp(bias, 0, 0.01) + -shadowBias;
5960
+
5961
+ // var bias = shadowBias / v;
5962
+ let bound = 1 ;
5963
+ for (var y = -bound; y <= bound; y++) {
5964
+ for (var x = -bound; x <= bound; x++) {
5965
+ var offset = vec2<f32>(f32(x), f32(y)) ;
5966
+ var offsetUV = offset * uvOnePixel ;
5967
+ var weight = min(length(offset),1.0) ;
5968
+ var depth = textureSampleCompareLevel(shadowMap, shadowMapSampler, varying_shadowUV + offsetUV , depthTexIndex, shadowPos.z - bias);
5969
+ if (depth < 0.5) {
5970
+ totalWeight += 1.0;
5971
+ }else{
5972
+ visibility += weight;
5973
+ totalWeight += weight;
5933
5974
  }
5934
- visibility /= totalWeight;
5935
5975
  }
5936
- #endif
5937
- return vec4<f32>(visibility, isOutSideArea, varying_shadowUV);
5938
- }
5939
-
5940
- fn pointShadowMapCompare(shadowBias: f32) {
5941
- let worldPos = ORI_VertexVarying.vWorldPos.xyz;
5942
- let offset = 0.1;
5943
- for(var i: i32 = 0; i < pointCount ; i = i + 1){
5944
- if( i >= globalUniform.nPointShadowStart && i < globalUniform.nPointShadowEnd ){
5945
- let ldx = globalUniform.shadowLights[u32(i) / 4u][u32(i) % 4u];
5946
- let light = lightBuffer[u32(ldx)];
5947
-
5948
- #if USE_SHADOWMAPING
5949
- let lightPos = light.position.xyz;
5950
- var shadow = 0.0;
5951
- let frgToLight = worldPos - lightPos.xyz;
5952
- var dir: vec3<f32> = normalize(frgToLight);
5953
- var len = length(frgToLight);
5954
- var bias = max(shadowBias * globalUniform.far * (1.0 - dot(ORI_ShadingInput.Normal, dir)), 0.005);
5955
-
5956
- #if USE_PCF_SHADOW
5957
- let samples = 4.0;
5958
- let sampleOffset = offset / (samples * 0.5);
5959
- for (var x: f32 = -offset; x < offset; x += sampleOffset) {
5960
- for (var y: f32 = -offset; y < offset; y += sampleOffset) {
5961
- for (var z: f32 = -offset; z < offset; z += sampleOffset) {
5962
- let offsetDir = normalize(dir.xyz + vec3<f32>(x, y, z));
5963
- var depth = textureSampleLevel(pointShadowMap, pointShadowMapSampler, offsetDir, light.castShadow, 0);
5964
- depth *= globalUniform.far;
5965
- if ((len - bias) > depth) {
5966
- shadow += 1.0 * dot(offsetDir, dir.xyz);
5967
- }
5968
- }
5969
- }
5970
- }
5971
- shadow = min(max(shadow / (samples * samples * samples), 0.0), 1.0);
5972
- #endif
5976
+ }
5977
+ visibility /= totalWeight;
5978
+ }
5979
+ #endif
5980
+ return vec4<f32>(visibility, isOutSideArea, varying_shadowUV);
5981
+ }
5982
+
5983
+ fn pointShadowMapCompare(shadowBias: f32){
5984
+ let worldPos = ORI_VertexVarying.vWorldPos.xyz;
5985
+ let offset = 0.1;
5973
5986
 
5974
- #if USE_SOFT_SHADOW
5975
- let vDis = length(globalUniform.CameraPos.xyz - worldPos.xyz);
5976
- let sampleRadies = globalUniform.shadowSoft;
5977
- let samples = 20;
5978
- for (var j:i32 = 0; j < samples; j += 1) {
5979
- let offsetDir = normalize(dir.xyz + sampleOffsetDir[j] * sampleRadies);
5980
- var depth = textureSampleLevel(pointShadowMap, pointShadowMapSampler, offsetDir, light.castShadow, 0);
5981
- depth *= globalUniform.far;
5982
- if ((len - bias) > depth) {
5983
- shadow += 1.0 * dot(offsetDir, dir.xyz);
5987
+ for (var i: i32 = 0; i < pointCount ; i = i + 1) {
5988
+ if( i >= globalUniform.nPointShadowStart && i < globalUniform.nPointShadowEnd ){
5989
+ let ldx = globalUniform.shadowLights[u32(i) / 4u][u32(i) % 4u];
5990
+ let light = lightBuffer[u32(ldx)] ;
5991
+
5992
+ #if USE_SHADOWMAPING
5993
+ let lightPos = light.position.xyz;
5994
+ var shadow = 0.0;
5995
+ let frgToLight = worldPos - lightPos.xyz;
5996
+ var dir: vec3<f32> = normalize(frgToLight);
5997
+ var len = length(frgToLight);
5998
+ var bias = max(shadowBias * globalUniform.far * (1.0 - dot(ORI_ShadingInput.Normal, dir)), 0.005);
5999
+
6000
+ #if USE_PCF_SHADOW
6001
+ let samples = 4.0;
6002
+ let sampleOffset = offset / (samples * 0.5);
6003
+ for (var x: f32 = -offset; x < offset; x += sampleOffset) {
6004
+ for (var y: f32 = -offset; y < offset; y += sampleOffset) {
6005
+ for (var z: f32 = -offset; z < offset; z += sampleOffset) {
6006
+ let compareZ = (len - bias) / globalUniform.far;
6007
+ var depth = textureSampleCompareLevel(pointShadowMap, pointShadowMapSampler, dir.xyz, light.castShadow, compareZ);
6008
+ if (depth < 0.5) {
6009
+ shadow = 1.0;
6010
+ }
6011
+ for (var j = 0; j < pointCount ; j+=1 ){
6012
+ if(i32(light.castShadow) == j){
6013
+ pointShadows[j] = 1.0 - shadow;
6014
+ }
5984
6015
  }
6016
+ }
5985
6017
  }
5986
- shadow = min(max(shadow / f32(samples), 0.0), 1.0);
6018
+ }
6019
+ shadow = min(max(shadow / (samples * samples * samples), 0.0), 1.0);
5987
6020
  #endif
5988
-
5989
- #if USE_HARD_SHADOW
5990
- var depth = textureSampleLevel(pointShadowMap, pointShadowMapSampler, dir.xyz, light.castShadow, 0);
6021
+
6022
+ #if USE_SOFT_SHADOW
6023
+ let vDis = length(globalUniform.CameraPos.xyz - worldPos.xyz);
6024
+ let sampleRadies = globalUniform.shadowSoft;
6025
+ let samples = 20;
6026
+ for (var j: i32 = 0; j < samples; j += 1) {
6027
+ let offsetDir = normalize(dir.xyz + sampleOffsetDir[j] * sampleRadies);
6028
+ var depth = textureSampleCompareLevel(pointShadowMap, pointShadowMapSampler, offsetDir, light.castShadow, 0);
5991
6029
  depth *= globalUniform.far;
5992
6030
  if ((len - bias) > depth) {
5993
- shadow = 1.0;
5994
- }
5995
- #endif
5996
- for (var j=0; j < pointCount; j+=1) {
5997
- if(i32(light.castShadow) == j){
5998
- pointShadows[j] = 1.0 - shadow;
5999
- }
6031
+ shadow += 1.0 * dot(offsetDir, dir.xyz);
6000
6032
  }
6001
- #endif
6002
- }
6033
+ }
6034
+ shadow = min(max(shadow / f32(samples), 0.0), 1.0);
6035
+ #endif
6036
+
6037
+ #if USE_HARD_SHADOW
6038
+ var depth = textureSampleCompareLevel(pointShadowMap, pointShadowMapSampler, dir.xyz, light.castShadow, 0);
6039
+ depth *= globalUniform.far;
6040
+ if ((len - bias) > depth) {
6041
+ shadow = 1.0;
6042
+ }
6043
+ #endif
6044
+ for (var j = 0; j < pointCount ; j+=1 ) {
6045
+ if(i32(light.castShadow) == j){
6046
+ pointShadows[j] = 1.0 - shadow ;
6047
+ }
6048
+ }
6049
+ #endif
6050
+ }
6003
6051
  }
6004
6052
  }
6005
6053
 
@@ -6012,7 +6060,8 @@ let ShadowMapping_frag = `
6012
6060
  vec3<f32>(0.0, 1.0, 1.0), vec3<f32>(0.0, -1.0, 1.0), vec3<f32>(0.0, -1.0, -1.0), vec3<f32>(0.0, 1.0, -1.0),
6013
6061
  );
6014
6062
  #endif
6015
- `;
6063
+ `
6064
+ );
6016
6065
 
6017
6066
  let Irradiance_frag = `
6018
6067
  #include "IrradianceVolumeData_frag"
@@ -9507,6 +9556,186 @@ fn SH9(dir: vec3<f32>, coefficients: array<vec4f, 9>) -> vec4<f32> {
9507
9556
  }
9508
9557
  `;
9509
9558
 
9559
+ const FatLine_VS = (
9560
+ /* wgsl */
9561
+ `
9562
+ #include "GlobalUniform"
9563
+
9564
+ // Instance attributes stored in storage buffer
9565
+ // Extended with prevDir and nextDir for Line Join support
9566
+ struct InstanceData {
9567
+ start: vec3<f32>,
9568
+ _padding1: f32,
9569
+ end: vec3<f32>,
9570
+ _padding2: f32,
9571
+ colorStart: vec3<f32>,
9572
+ _padding3: f32,
9573
+ colorEnd: vec3<f32>,
9574
+ _padding4: f32,
9575
+ };
9576
+
9577
+ struct VertexInput {
9578
+ @builtin(instance_index) instanceIndex: u32,
9579
+ @location(0) position: vec3<f32>, // Quad vertices
9580
+ @location(1) uv: vec2<f32>, // UV coordinates
9581
+ };
9582
+
9583
+ struct VertexOutput {
9584
+ @builtin(position) position: vec4<f32>,
9585
+ @location(0) vUv: vec2<f32>,
9586
+ @location(1) vColor: vec3<f32>,
9587
+ };
9588
+
9589
+ struct MaterialUniform {
9590
+ baseColor: vec4<f32>,
9591
+ lineWidth: f32,
9592
+ opacity: f32,
9593
+ resolution: vec2<f32>,
9594
+ modelMatrix: mat4x4<f32>,
9595
+ };
9596
+
9597
+ @group(1) @binding(0) var<uniform> materialUniform: MaterialUniform;
9598
+ @group(1) @binding(1) var<storage, read> instances: array<InstanceData>;
9599
+
9600
+ @vertex
9601
+ fn VertMain(input: VertexInput) -> VertexOutput {
9602
+ var output: VertexOutput;
9603
+
9604
+ let instance = instances[input.instanceIndex];
9605
+
9606
+ // Transform from local space to world space, then to view space
9607
+ let start_world = materialUniform.modelMatrix * vec4<f32>(instance.start, 1.0);
9608
+ let end_world = materialUniform.modelMatrix * vec4<f32>(instance.end, 1.0);
9609
+
9610
+ let start_view = globalUniform.viewMat * start_world;
9611
+ let end_view = globalUniform.viewMat * end_world;
9612
+
9613
+ // Project to clip space
9614
+ var clip_start = globalUniform.projMat * start_view;
9615
+ var clip_end = globalUniform.projMat * end_view;
9616
+
9617
+ // Perspective division to NDC space
9618
+ let ndc_start = clip_start.xyz / clip_start.w;
9619
+ let ndc_end = clip_end.xyz / clip_end.w;
9620
+
9621
+ // Calculate screen-space direction
9622
+ var dir = ndc_end.xy - ndc_start.xy;
9623
+
9624
+ // Account for aspect ratio
9625
+ let aspect = materialUniform.resolution.x / materialUniform.resolution.y;
9626
+ dir.x *= aspect;
9627
+ dir = normalize(dir);
9628
+
9629
+ // Calculate perpendicular offset
9630
+ var offset = vec2<f32>(dir.y, -dir.x);
9631
+
9632
+ // Undo aspect ratio adjustment for both dir and offset
9633
+ dir.x /= aspect;
9634
+ offset.x /= aspect;
9635
+
9636
+ // Flip offset direction based on position.x
9637
+ if (input.position.x < 0.0) {
9638
+ offset *= -1.0;
9639
+ }
9640
+
9641
+ // Handle endcaps
9642
+ if (input.position.y < 0.0) {
9643
+ offset += -dir;
9644
+ } else if (input.position.y > 1.0) {
9645
+ offset += dir;
9646
+ }
9647
+
9648
+ // Apply line width
9649
+ offset *= materialUniform.lineWidth;
9650
+ offset /= materialUniform.resolution.y; // Convert to clip space
9651
+
9652
+ // Select start or end point
9653
+ var clip = select(clip_end, clip_start, input.position.y < 0.5);
9654
+
9655
+ // Shift the depth of the projected points so the line segments
9656
+ // overlap neatly and face the camera properly (billboard effect)
9657
+ let clipPose = select(ndc_end, ndc_start, input.position.y < 0.5);
9658
+ clip.z = clipPose.z * clip.w;
9659
+
9660
+ // Perspective correction
9661
+ offset *= clip.w;
9662
+ clip.x += offset.x;
9663
+ clip.y += offset.y;
9664
+
9665
+ output.position = clip;
9666
+ output.vUv = input.uv;
9667
+ output.vColor = select(instance.colorEnd, instance.colorStart, input.position.y < 0.5);
9668
+
9669
+ return output;
9670
+ }
9671
+ `
9672
+ );
9673
+ const FatLine_FS = (
9674
+ /* wgsl */
9675
+ `
9676
+ struct FragmentOutput {
9677
+ @location(0) color: vec4<f32>,
9678
+ @location(1) gBuffer: vec4<f32>,
9679
+ };
9680
+
9681
+ struct VertexOutput {
9682
+ @builtin(position) position: vec4<f32>,
9683
+ @location(0) vUv: vec2<f32>,
9684
+ @location(1) vColor: vec3<f32>,
9685
+ };
9686
+
9687
+ struct MaterialUniform {
9688
+ baseColor: vec4<f32>,
9689
+ lineWidth: f32,
9690
+ opacity: f32,
9691
+ resolution: vec2<f32>,
9692
+ modelMatrix: mat4x4<f32>,
9693
+ };
9694
+
9695
+ @group(1) @binding(0) var<uniform> materialUniform: MaterialUniform;
9696
+
9697
+ @fragment
9698
+ fn FragMain(input: VertexOutput) -> FragmentOutput {
9699
+ var output: FragmentOutput;
9700
+
9701
+ var alpha = materialUniform.opacity;
9702
+
9703
+ // Round endcap rendering with anti-aliasing
9704
+ let a = input.vUv.x;
9705
+ let b = select(input.vUv.y - 1.0, input.vUv.y + 1.0, input.vUv.y > 0.0);
9706
+ let len2 = a * a + b * b;
9707
+
9708
+ // Calculate derivative (must be in uniform control flow)
9709
+ let dlen = fwidth(len2);
9710
+
9711
+ // Round endcap rendering - simple approach
9712
+ if (abs(input.vUv.y) > 1.0) {
9713
+ // Determine circle center: (0, 1) for top, (0, -1) for bottom
9714
+ var basePoint = select(
9715
+ vec2<f32>(0.0, -1.0), // Bottom endcap
9716
+ vec2<f32>(0.0, 1.0), // Top endcap
9717
+ input.vUv.y > 0.0
9718
+ );
9719
+
9720
+ // Distance from UV to circle center
9721
+ // var dist = length(input.vUv - basePoint);
9722
+ var dist2 = (input.vUv.x - basePoint.x) * (input.vUv.x - basePoint.x) + (input.vUv.y - basePoint.y) * (input.vUv.y - basePoint.y);
9723
+
9724
+ // Discard pixels outside circle (radius = 1.0)
9725
+ if (dist2 > 1.0) {
9726
+ discard;
9727
+ }
9728
+ }
9729
+
9730
+ let color = input.vColor * materialUniform.baseColor.rgb;
9731
+ output.color = vec4<f32>(color, alpha);
9732
+ output.gBuffer = vec4<f32>(0.0, 0.0, 0.0, 0.0); // No GBuffer data for lines
9733
+
9734
+ return output;
9735
+ }
9736
+ `
9737
+ );
9738
+
9510
9739
  class ShaderLib {
9511
9740
  static init() {
9512
9741
  ShaderLib.register("MathShader", MathShader);
@@ -9576,6 +9805,8 @@ class ShaderLib {
9576
9805
  );
9577
9806
  ShaderLib.register("ZPass_shader_vs", ZPassShader_vs);
9578
9807
  ShaderLib.register("ZPass_shader_fs", ZPassShader_fs);
9808
+ ShaderLib.register("FatLine_VS", FatLine_VS);
9809
+ ShaderLib.register("FatLine_FS", FatLine_FS);
9579
9810
  }
9580
9811
  static register(keyName, code) {
9581
9812
  if (!ShaderLib[keyName.toLowerCase()]) {
@@ -21662,9 +21893,9 @@ class OctreeEntity {
21662
21893
  }
21663
21894
 
21664
21895
  var __defProp$1 = Object.defineProperty;
21665
- var __getOwnPropDesc$i = Object.getOwnPropertyDescriptor;
21666
- var __decorateClass$i = (decorators, target, key, kind) => {
21667
- var result = __getOwnPropDesc$i(target, key) ;
21896
+ var __getOwnPropDesc$l = Object.getOwnPropertyDescriptor;
21897
+ var __decorateClass$l = (decorators, target, key, kind) => {
21898
+ var result = __getOwnPropDesc$l(target, key) ;
21668
21899
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
21669
21900
  if (decorator = decorators[i])
21670
21901
  result = (decorator(target, key, result) ) || result;
@@ -22249,221 +22480,16 @@ class RenderNode extends ComponentBase {
22249
22480
  this._combineShaderRefection = void 0;
22250
22481
  }
22251
22482
  }
22252
- __decorateClass$i([
22483
+ __decorateClass$l([
22253
22484
  EditorInspector
22254
22485
  ], RenderNode.prototype, "materials");
22255
- __decorateClass$i([
22486
+ __decorateClass$l([
22256
22487
  EditorInspector
22257
22488
  ], RenderNode.prototype, "castShadow");
22258
- __decorateClass$i([
22489
+ __decorateClass$l([
22259
22490
  EditorInspector
22260
22491
  ], RenderNode.prototype, "castGI");
22261
22492
 
22262
- class Shader {
22263
- computes;
22264
- passShader;
22265
- constructor() {
22266
- this.computes = [];
22267
- this.passShader = /* @__PURE__ */ new Map();
22268
- }
22269
- addRenderPass(renderShader, index = -1) {
22270
- let subShader = this.passShader.get(renderShader.passType) || [];
22271
- if (index == -1) {
22272
- subShader.push(renderShader);
22273
- } else {
22274
- subShader.splice(index, -1, renderShader);
22275
- }
22276
- this.passShader.set(renderShader.passType, subShader);
22277
- }
22278
- removeShader(renderShader, index = -1) {
22279
- let subShader = this.passShader.get(
22280
- renderShader.passType
22281
- );
22282
- if (subShader) {
22283
- if (index == -1) {
22284
- let index2 = subShader.indexOf(renderShader);
22285
- if (index2 != -1) {
22286
- subShader.splice(index2);
22287
- }
22288
- } else {
22289
- subShader.splice(index, 1);
22290
- }
22291
- }
22292
- }
22293
- removeShaderByIndex(passType, index = -1) {
22294
- let subShader = this.passShader.get(passType);
22295
- if (subShader) {
22296
- if (index == -1) {
22297
- this.passShader.delete(passType);
22298
- } else {
22299
- subShader.splice(index, 1);
22300
- }
22301
- }
22302
- }
22303
- getSubShaders(passType) {
22304
- return this.passShader.get(passType) || [];
22305
- }
22306
- hasSubShaders(passType) {
22307
- let subs = this.passShader.get(passType);
22308
- return subs.length > 0;
22309
- }
22310
- getDefaultShaders() {
22311
- return this.passShader.get(PassType.COLOR);
22312
- }
22313
- getDefaultColorShader() {
22314
- return this.passShader.get(PassType.COLOR)[0];
22315
- }
22316
- setDefine(arg0, arg1) {
22317
- for (const pass of this.passShader) {
22318
- for (const rd of pass[1]) {
22319
- rd.setDefine(arg0, arg1);
22320
- }
22321
- }
22322
- }
22323
- hasDefine(arg0) {
22324
- for (const pass of this.passShader) {
22325
- for (const rd of pass[1]) {
22326
- let has = rd.hasDefine(arg0);
22327
- if (has) return has;
22328
- }
22329
- }
22330
- return false;
22331
- }
22332
- deleteDefine(arg0) {
22333
- for (const pass of this.passShader) {
22334
- for (const rd of pass[1]) {
22335
- rd.deleteDefine(arg0);
22336
- }
22337
- }
22338
- }
22339
- setUniform(arg0, arg1) {
22340
- for (const pass of this.passShader) {
22341
- for (const rd of pass[1]) {
22342
- rd.setUniform(arg0, arg1);
22343
- }
22344
- }
22345
- }
22346
- setUniformFloat(arg0, arg1) {
22347
- for (const pass of this.passShader) {
22348
- for (const rd of pass[1]) {
22349
- rd.setUniformFloat(arg0, arg1);
22350
- }
22351
- }
22352
- }
22353
- setUniformVector2(arg0, arg1) {
22354
- for (const pass of this.passShader) {
22355
- for (const rd of pass[1]) {
22356
- rd.setUniformVector2(arg0, arg1);
22357
- }
22358
- }
22359
- }
22360
- setUniformVector3(arg0, arg1) {
22361
- for (const pass of this.passShader) {
22362
- for (const rd of pass[1]) {
22363
- rd.setUniformVector3(arg0, arg1);
22364
- }
22365
- }
22366
- }
22367
- setUniformVector4(arg0, arg1) {
22368
- for (const pass of this.passShader) {
22369
- for (const rd of pass[1]) {
22370
- rd.setUniformVector4(arg0, arg1);
22371
- }
22372
- }
22373
- }
22374
- setUniformColor(arg0, arg1) {
22375
- for (const pass of this.passShader) {
22376
- for (const rd of pass[1]) {
22377
- rd.setUniformColor(arg0, arg1);
22378
- }
22379
- }
22380
- }
22381
- getUniform(arg0) {
22382
- return this.getDefaultColorShader().getUniform(arg0);
22383
- }
22384
- getUniformFloat(arg0) {
22385
- return this.getDefaultColorShader().getUniformFloat(arg0);
22386
- }
22387
- getUniformVector2(arg0) {
22388
- return this.getDefaultColorShader().getUniformVector2(arg0);
22389
- }
22390
- getUniformVector3(arg0) {
22391
- return this.getDefaultColorShader().getUniformVector3(arg0);
22392
- }
22393
- getUniformVector4(arg0) {
22394
- return this.getDefaultColorShader().getUniformVector4(arg0);
22395
- }
22396
- getUniformColor(arg0) {
22397
- return this.getDefaultColorShader().getUniformColor(arg0);
22398
- }
22399
- setTexture(arg0, arg1) {
22400
- for (const pass of this.passShader) {
22401
- for (const rd of pass[1]) {
22402
- rd.setTexture(arg0, arg1);
22403
- }
22404
- }
22405
- this.setDefine(`USE_${arg0.toLocaleUpperCase()}`, true);
22406
- }
22407
- getTexture(arg0) {
22408
- return this.getDefaultColorShader().textures[arg0];
22409
- }
22410
- setUniformBuffer(arg0, arg1) {
22411
- for (const pass of this.passShader) {
22412
- for (const rd of pass[1]) {
22413
- rd.setUniformBuffer(arg0, arg1);
22414
- }
22415
- }
22416
- }
22417
- getUniformBuffer(arg0) {
22418
- return this.getDefaultColorShader().getBuffer(arg0);
22419
- }
22420
- setStorageBuffer(arg0, arg1) {
22421
- for (const pass of this.passShader) {
22422
- for (const rd of pass[1]) {
22423
- rd.setStorageBuffer(arg0, arg1);
22424
- }
22425
- }
22426
- }
22427
- getStorageBuffer(arg0) {
22428
- return this.getDefaultColorShader().getBuffer(arg0);
22429
- }
22430
- setStructStorageBuffer(arg0, arg1) {
22431
- for (const pass of this.passShader) {
22432
- for (const rd of pass[1]) {
22433
- rd.setStructStorageBuffer(arg0, arg1);
22434
- }
22435
- }
22436
- }
22437
- getStructStorageBuffer(arg0) {
22438
- return this.getDefaultColorShader().getBuffer(arg0);
22439
- }
22440
- noticeValueChange() {
22441
- for (const pass of this.passShader) {
22442
- for (const rd of pass[1]) {
22443
- rd.noticeValueChange();
22444
- }
22445
- }
22446
- }
22447
- destroy() {
22448
- this.getDefaultColorShader().destroy();
22449
- }
22450
- clone() {
22451
- let newShader = new Shader();
22452
- let sourceShaderPassList = this.getDefaultShaders();
22453
- for (const shadePass of sourceShaderPassList) {
22454
- newShader.addRenderPass(shadePass);
22455
- }
22456
- return newShader;
22457
- }
22458
- applyUniform() {
22459
- for (const pass of this.passShader) {
22460
- for (const rd of pass[1]) {
22461
- rd.applyUniform();
22462
- }
22463
- }
22464
- }
22465
- }
22466
-
22467
22493
  class Material {
22468
22494
  instanceID;
22469
22495
  name;
@@ -22947,11 +22973,222 @@ const GSplat_FS = (
22947
22973
  `
22948
22974
  );
22949
22975
 
22950
- class GSplatMaterial extends Material {
22976
+ class Shader {
22977
+ computes;
22978
+ passShader;
22979
+ constructor() {
22980
+ this.computes = [];
22981
+ this.passShader = /* @__PURE__ */ new Map();
22982
+ }
22983
+ addRenderPass(renderShader, index = -1) {
22984
+ let subShader = this.passShader.get(renderShader.passType) || [];
22985
+ if (index == -1) {
22986
+ subShader.push(renderShader);
22987
+ } else {
22988
+ subShader.splice(index, -1, renderShader);
22989
+ }
22990
+ this.passShader.set(renderShader.passType, subShader);
22991
+ }
22992
+ removeShader(renderShader, index = -1) {
22993
+ let subShader = this.passShader.get(
22994
+ renderShader.passType
22995
+ );
22996
+ if (subShader) {
22997
+ if (index == -1) {
22998
+ let index2 = subShader.indexOf(renderShader);
22999
+ if (index2 != -1) {
23000
+ subShader.splice(index2);
23001
+ }
23002
+ } else {
23003
+ subShader.splice(index, 1);
23004
+ }
23005
+ }
23006
+ }
23007
+ removeShaderByIndex(passType, index = -1) {
23008
+ let subShader = this.passShader.get(passType);
23009
+ if (subShader) {
23010
+ if (index == -1) {
23011
+ this.passShader.delete(passType);
23012
+ } else {
23013
+ subShader.splice(index, 1);
23014
+ }
23015
+ }
23016
+ }
23017
+ getSubShaders(passType) {
23018
+ return this.passShader.get(passType) || [];
23019
+ }
23020
+ hasSubShaders(passType) {
23021
+ let subs = this.passShader.get(passType);
23022
+ return subs.length > 0;
23023
+ }
23024
+ getDefaultShaders() {
23025
+ return this.passShader.get(PassType.COLOR);
23026
+ }
23027
+ getDefaultColorShader() {
23028
+ return this.passShader.get(PassType.COLOR)[0];
23029
+ }
23030
+ setDefine(arg0, arg1) {
23031
+ for (const pass of this.passShader) {
23032
+ for (const rd of pass[1]) {
23033
+ rd.setDefine(arg0, arg1);
23034
+ }
23035
+ }
23036
+ }
23037
+ hasDefine(arg0) {
23038
+ for (const pass of this.passShader) {
23039
+ for (const rd of pass[1]) {
23040
+ let has = rd.hasDefine(arg0);
23041
+ if (has) return has;
23042
+ }
23043
+ }
23044
+ return false;
23045
+ }
23046
+ deleteDefine(arg0) {
23047
+ for (const pass of this.passShader) {
23048
+ for (const rd of pass[1]) {
23049
+ rd.deleteDefine(arg0);
23050
+ }
23051
+ }
23052
+ }
23053
+ setUniform(arg0, arg1) {
23054
+ for (const pass of this.passShader) {
23055
+ for (const rd of pass[1]) {
23056
+ rd.setUniform(arg0, arg1);
23057
+ }
23058
+ }
23059
+ }
23060
+ setUniformFloat(arg0, arg1) {
23061
+ for (const pass of this.passShader) {
23062
+ for (const rd of pass[1]) {
23063
+ rd.setUniformFloat(arg0, arg1);
23064
+ }
23065
+ }
23066
+ }
23067
+ setUniformVector2(arg0, arg1) {
23068
+ for (const pass of this.passShader) {
23069
+ for (const rd of pass[1]) {
23070
+ rd.setUniformVector2(arg0, arg1);
23071
+ }
23072
+ }
23073
+ }
23074
+ setUniformVector3(arg0, arg1) {
23075
+ for (const pass of this.passShader) {
23076
+ for (const rd of pass[1]) {
23077
+ rd.setUniformVector3(arg0, arg1);
23078
+ }
23079
+ }
23080
+ }
23081
+ setUniformVector4(arg0, arg1) {
23082
+ for (const pass of this.passShader) {
23083
+ for (const rd of pass[1]) {
23084
+ rd.setUniformVector4(arg0, arg1);
23085
+ }
23086
+ }
23087
+ }
23088
+ setUniformColor(arg0, arg1) {
23089
+ for (const pass of this.passShader) {
23090
+ for (const rd of pass[1]) {
23091
+ rd.setUniformColor(arg0, arg1);
23092
+ }
23093
+ }
23094
+ }
23095
+ getUniform(arg0) {
23096
+ return this.getDefaultColorShader().getUniform(arg0);
23097
+ }
23098
+ getUniformFloat(arg0) {
23099
+ return this.getDefaultColorShader().getUniformFloat(arg0);
23100
+ }
23101
+ getUniformVector2(arg0) {
23102
+ return this.getDefaultColorShader().getUniformVector2(arg0);
23103
+ }
23104
+ getUniformVector3(arg0) {
23105
+ return this.getDefaultColorShader().getUniformVector3(arg0);
23106
+ }
23107
+ getUniformVector4(arg0) {
23108
+ return this.getDefaultColorShader().getUniformVector4(arg0);
23109
+ }
23110
+ getUniformColor(arg0) {
23111
+ return this.getDefaultColorShader().getUniformColor(arg0);
23112
+ }
23113
+ setTexture(arg0, arg1) {
23114
+ for (const pass of this.passShader) {
23115
+ for (const rd of pass[1]) {
23116
+ rd.setTexture(arg0, arg1);
23117
+ }
23118
+ }
23119
+ this.setDefine(`USE_${arg0.toLocaleUpperCase()}`, true);
23120
+ }
23121
+ getTexture(arg0) {
23122
+ return this.getDefaultColorShader().textures[arg0];
23123
+ }
23124
+ setUniformBuffer(arg0, arg1) {
23125
+ for (const pass of this.passShader) {
23126
+ for (const rd of pass[1]) {
23127
+ rd.setUniformBuffer(arg0, arg1);
23128
+ }
23129
+ }
23130
+ }
23131
+ getUniformBuffer(arg0) {
23132
+ return this.getDefaultColorShader().getBuffer(arg0);
23133
+ }
23134
+ setStorageBuffer(arg0, arg1) {
23135
+ for (const pass of this.passShader) {
23136
+ for (const rd of pass[1]) {
23137
+ rd.setStorageBuffer(arg0, arg1);
23138
+ }
23139
+ }
23140
+ }
23141
+ getStorageBuffer(arg0) {
23142
+ return this.getDefaultColorShader().getBuffer(arg0);
23143
+ }
23144
+ setStructStorageBuffer(arg0, arg1) {
23145
+ for (const pass of this.passShader) {
23146
+ for (const rd of pass[1]) {
23147
+ rd.setStructStorageBuffer(arg0, arg1);
23148
+ }
23149
+ }
23150
+ }
23151
+ getStructStorageBuffer(arg0) {
23152
+ return this.getDefaultColorShader().getBuffer(arg0);
23153
+ }
23154
+ noticeValueChange() {
23155
+ for (const pass of this.passShader) {
23156
+ for (const rd of pass[1]) {
23157
+ rd.noticeValueChange();
23158
+ }
23159
+ }
23160
+ }
23161
+ destroy() {
23162
+ this.getDefaultColorShader().destroy();
23163
+ }
23164
+ clone() {
23165
+ let newShader = new Shader();
23166
+ let sourceShaderPassList = this.getDefaultShaders();
23167
+ for (const shadePass of sourceShaderPassList) {
23168
+ newShader.addRenderPass(shadePass);
23169
+ }
23170
+ return newShader;
23171
+ }
23172
+ applyUniform() {
23173
+ for (const pass of this.passShader) {
23174
+ for (const rd of pass[1]) {
23175
+ rd.applyUniform();
23176
+ }
23177
+ }
23178
+ }
23179
+ }
23180
+
23181
+ var __getOwnPropDesc$k = Object.getOwnPropertyDescriptor;
23182
+ var __decorateClass$k = (decorators, target, key, kind) => {
23183
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$k(target, key) : target;
23184
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
23185
+ if (decorator = decorators[i])
23186
+ result = (decorator(result)) || result;
23187
+ return result;
23188
+ };
23189
+ let GSplatShader = class extends Shader {
22951
23190
  constructor() {
22952
23191
  super();
22953
- ShaderLib.register("gsplat_vs_dc", GSplat_VS);
22954
- ShaderLib.register("gsplat_fs_dc", GSplat_FS);
22955
23192
  const pass = new RenderShaderPass("gsplat_vs_dc", "gsplat_fs_dc");
22956
23193
  pass.passType = PassType.COLOR;
22957
23194
  pass.setShaderEntry("VertMain", "FragMain");
@@ -22961,9 +23198,29 @@ class GSplatMaterial extends Material {
22961
23198
  pass.shaderState.transparent = true;
22962
23199
  pass.shaderState.blendMode = BlendMode.NORMAL;
22963
23200
  pass.shaderState.writeMasks = [15, 15];
22964
- const shader = new Shader();
22965
- shader.addRenderPass(pass);
22966
- this.shader = shader;
23201
+ this.addRenderPass(pass);
23202
+ this.setDefault();
23203
+ }
23204
+ /**
23205
+ * Set default uniform values
23206
+ */
23207
+ setDefault() {
23208
+ const pass = this.getDefaultColorShader();
23209
+ const identityMatrix = new Matrix4();
23210
+ pass.setUniform("modelMatrix", identityMatrix.rawData);
23211
+ pass.setUniform("pixelCull", new Float32Array([2, 0, 0, 0]));
23212
+ }
23213
+ };
23214
+ GSplatShader = __decorateClass$k([
23215
+ RegisterShader(GSplatShader, "GSplatShader")
23216
+ ], GSplatShader);
23217
+
23218
+ class GSplatMaterial extends Material {
23219
+ constructor() {
23220
+ super();
23221
+ ShaderLib.register("gsplat_vs_dc", GSplat_VS);
23222
+ ShaderLib.register("gsplat_fs_dc", GSplat_FS);
23223
+ this.shader = new GSplatShader();
22967
23224
  }
22968
23225
  setSplatTextures(splatColor, transformA, transformB, texParams, splatOrder) {
22969
23226
  const pass = this.shader.getDefaultColorShader();
@@ -23972,9 +24229,9 @@ class Float16ArrayTexture extends Texture {
23972
24229
  }
23973
24230
  }
23974
24231
 
23975
- var __getOwnPropDesc$h = Object.getOwnPropertyDescriptor;
23976
- var __decorateClass$h = (decorators, target, key, kind) => {
23977
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$h(target, key) : target;
24232
+ var __getOwnPropDesc$j = Object.getOwnPropertyDescriptor;
24233
+ var __decorateClass$j = (decorators, target, key, kind) => {
24234
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$j(target, key) : target;
23978
24235
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
23979
24236
  if (decorator = decorators[i])
23980
24237
  result = (decorator(result)) || result;
@@ -24727,7 +24984,7 @@ let GSplatRenderer = class extends RenderNode {
24727
24984
  super.destroy(force);
24728
24985
  }
24729
24986
  };
24730
- GSplatRenderer = __decorateClass$h([
24987
+ GSplatRenderer = __decorateClass$j([
24731
24988
  RegisterComponent(GSplatRenderer, "GSplatRenderer")
24732
24989
  ], GSplatRenderer);
24733
24990
 
@@ -25038,9 +25295,9 @@ class Entity extends CEventDispatcher {
25038
25295
  }
25039
25296
  }
25040
25297
 
25041
- var __getOwnPropDesc$g = Object.getOwnPropertyDescriptor;
25042
- var __decorateClass$g = (decorators, target, key, kind) => {
25043
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$g(target, key) : target;
25298
+ var __getOwnPropDesc$i = Object.getOwnPropertyDescriptor;
25299
+ var __decorateClass$i = (decorators, target, key, kind) => {
25300
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$i(target, key) : target;
25044
25301
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
25045
25302
  if (decorator = decorators[i])
25046
25303
  result = (decorator(result)) || result;
@@ -25305,7 +25562,7 @@ let Object3D = class extends Entity {
25305
25562
  super.destroy(force);
25306
25563
  }
25307
25564
  };
25308
- Object3D = __decorateClass$g([
25565
+ Object3D = __decorateClass$i([
25309
25566
  DecorateObject3D
25310
25567
  ], Object3D);
25311
25568
  function DecorateObject3D(ctor, _) {
@@ -26634,9 +26891,9 @@ class MorphTargetData {
26634
26891
  }
26635
26892
 
26636
26893
  var __defProp = Object.defineProperty;
26637
- var __getOwnPropDesc$f = Object.getOwnPropertyDescriptor;
26638
- var __decorateClass$f = (decorators, target, key, kind) => {
26639
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$f(target, key) : target;
26894
+ var __getOwnPropDesc$h = Object.getOwnPropertyDescriptor;
26895
+ var __decorateClass$h = (decorators, target, key, kind) => {
26896
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$h(target, key) : target;
26640
26897
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
26641
26898
  if (decorator = decorators[i])
26642
26899
  result = (kind ? decorator(target, key, result) : decorator(result)) || result;
@@ -26745,13 +27002,13 @@ let MeshRenderer = class extends RenderNode {
26745
27002
  super.destroy(force);
26746
27003
  }
26747
27004
  };
26748
- __decorateClass$f([
27005
+ __decorateClass$h([
26749
27006
  EditorInspector
26750
27007
  ], MeshRenderer.prototype, "geometry", 1);
26751
- __decorateClass$f([
27008
+ __decorateClass$h([
26752
27009
  EditorInspector
26753
27010
  ], MeshRenderer.prototype, "material", 1);
26754
- MeshRenderer = __decorateClass$f([
27011
+ MeshRenderer = __decorateClass$h([
26755
27012
  RegisterComponent(MeshRenderer, "MeshRenderer")
26756
27013
  ], MeshRenderer);
26757
27014
 
@@ -27248,9 +27505,9 @@ class WebGPUDescriptorCreator {
27248
27505
  }
27249
27506
  }
27250
27507
 
27251
- var __getOwnPropDesc$e = Object.getOwnPropertyDescriptor;
27252
- var __decorateClass$e = (decorators, target, key, kind) => {
27253
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$e(target, key) : target;
27508
+ var __getOwnPropDesc$g = Object.getOwnPropertyDescriptor;
27509
+ var __decorateClass$g = (decorators, target, key, kind) => {
27510
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$g(target, key) : target;
27254
27511
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
27255
27512
  if (decorator = decorators[i])
27256
27513
  result = (decorator(result)) || result;
@@ -27274,7 +27531,7 @@ let QuadShader = class extends Shader {
27274
27531
  this.setUniformFloat(`height`, 100);
27275
27532
  }
27276
27533
  };
27277
- QuadShader = __decorateClass$e([
27534
+ QuadShader = __decorateClass$g([
27278
27535
  RegisterShader(QuadShader, "QuadShader")
27279
27536
  ], QuadShader);
27280
27537
 
@@ -34548,9 +34805,9 @@ class LightBase extends ComponentBase {
34548
34805
  }
34549
34806
  }
34550
34807
 
34551
- var __getOwnPropDesc$d = Object.getOwnPropertyDescriptor;
34552
- var __decorateClass$d = (decorators, target, key, kind) => {
34553
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$d(target, key) : target;
34808
+ var __getOwnPropDesc$f = Object.getOwnPropertyDescriptor;
34809
+ var __decorateClass$f = (decorators, target, key, kind) => {
34810
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$f(target, key) : target;
34554
34811
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
34555
34812
  if (decorator = decorators[i])
34556
34813
  result = (decorator(result)) || result;
@@ -34592,13 +34849,13 @@ let DirectLight = class extends LightBase {
34592
34849
  debug() {
34593
34850
  }
34594
34851
  };
34595
- DirectLight = __decorateClass$d([
34852
+ DirectLight = __decorateClass$f([
34596
34853
  RegisterComponent(DirectLight, "DirectLight")
34597
34854
  ], DirectLight);
34598
34855
 
34599
- var __getOwnPropDesc$c = Object.getOwnPropertyDescriptor;
34600
- var __decorateClass$c = (decorators, target, key, kind) => {
34601
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$c(target, key) : target;
34856
+ var __getOwnPropDesc$e = Object.getOwnPropertyDescriptor;
34857
+ var __decorateClass$e = (decorators, target, key, kind) => {
34858
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$e(target, key) : target;
34602
34859
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
34603
34860
  if (decorator = decorators[i])
34604
34861
  result = (decorator(result)) || result;
@@ -34656,13 +34913,13 @@ let PointLight = class extends LightBase {
34656
34913
  debugDraw(show) {
34657
34914
  }
34658
34915
  };
34659
- PointLight = __decorateClass$c([
34916
+ PointLight = __decorateClass$e([
34660
34917
  RegisterComponent(PointLight, "PointLight")
34661
34918
  ], PointLight);
34662
34919
 
34663
- var __getOwnPropDesc$b = Object.getOwnPropertyDescriptor;
34664
- var __decorateClass$b = (decorators, target, key, kind) => {
34665
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$b(target, key) : target;
34920
+ var __getOwnPropDesc$d = Object.getOwnPropertyDescriptor;
34921
+ var __decorateClass$d = (decorators, target, key, kind) => {
34922
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$d(target, key) : target;
34666
34923
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
34667
34924
  if (decorator = decorators[i])
34668
34925
  result = (decorator(result)) || result;
@@ -34727,7 +34984,7 @@ let SpotLight = class extends LightBase {
34727
34984
  debugDraw(show) {
34728
34985
  }
34729
34986
  };
34730
- SpotLight = __decorateClass$b([
34987
+ SpotLight = __decorateClass$d([
34731
34988
  RegisterComponent(SpotLight, "SpotLight")
34732
34989
  ], SpotLight);
34733
34990
 
@@ -40527,7 +40784,7 @@ class PostProcessingComponent extends ComponentBase {
40527
40784
  }
40528
40785
  }
40529
40786
 
40530
- const version = "1.0.10";
40787
+ const version = "1.0.12";
40531
40788
 
40532
40789
  class Engine3D {
40533
40790
  /**
@@ -45040,9 +45297,9 @@ class AtmosphericTexture2D extends VirtualTexture {
45040
45297
  }
45041
45298
  }
45042
45299
 
45043
- var __getOwnPropDesc$a = Object.getOwnPropertyDescriptor;
45044
- var __decorateClass$a = (decorators, target, key, kind) => {
45045
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$a(target, key) : target;
45300
+ var __getOwnPropDesc$c = Object.getOwnPropertyDescriptor;
45301
+ var __decorateClass$c = (decorators, target, key, kind) => {
45302
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$c(target, key) : target;
45046
45303
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
45047
45304
  if (decorator = decorators[i])
45048
45305
  result = (decorator(result)) || result;
@@ -45066,7 +45323,7 @@ let SkyShader = class extends Shader {
45066
45323
  shaderState.depthCompare = GPUCompareFunction.less;
45067
45324
  }
45068
45325
  };
45069
- SkyShader = __decorateClass$a([
45326
+ SkyShader = __decorateClass$c([
45070
45327
  RegisterShader(SkyShader, "SkyShader")
45071
45328
  ], SkyShader);
45072
45329
 
@@ -45864,9 +46121,9 @@ class SkeletonAnimationClipState {
45864
46121
  }
45865
46122
  }
45866
46123
 
45867
- var __getOwnPropDesc$9 = Object.getOwnPropertyDescriptor;
45868
- var __decorateClass$9 = (decorators, target, key, kind) => {
45869
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$9(target, key) : target;
46124
+ var __getOwnPropDesc$b = Object.getOwnPropertyDescriptor;
46125
+ var __decorateClass$b = (decorators, target, key, kind) => {
46126
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$b(target, key) : target;
45870
46127
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
45871
46128
  if (decorator = decorators[i])
45872
46129
  result = (decorator(result)) || result;
@@ -46070,7 +46327,7 @@ let SkeletonAnimationComponent = class extends ComponentBase {
46070
46327
  this._currentClipState.weight = 1;
46071
46328
  }
46072
46329
  };
46073
- SkeletonAnimationComponent = __decorateClass$9([
46330
+ SkeletonAnimationComponent = __decorateClass$b([
46074
46331
  RegisterComponent(SkeletonAnimationComponent, "SkeletonAnimationComponent")
46075
46332
  ], SkeletonAnimationComponent);
46076
46333
  class SkeletonAnimationCrossFadeState {
@@ -46106,9 +46363,9 @@ class SkeletonAnimationCrossFadeState {
46106
46363
  }
46107
46364
  }
46108
46365
 
46109
- var __getOwnPropDesc$8 = Object.getOwnPropertyDescriptor;
46110
- var __decorateClass$8 = (decorators, target, key, kind) => {
46111
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$8(target, key) : target;
46366
+ var __getOwnPropDesc$a = Object.getOwnPropertyDescriptor;
46367
+ var __decorateClass$a = (decorators, target, key, kind) => {
46368
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$a(target, key) : target;
46112
46369
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
46113
46370
  if (decorator = decorators[i])
46114
46371
  result = (decorator(result)) || result;
@@ -46519,7 +46776,7 @@ let AnimatorComponent = class extends ComponentBase {
46519
46776
  return dst;
46520
46777
  }
46521
46778
  };
46522
- AnimatorComponent = __decorateClass$8([
46779
+ AnimatorComponent = __decorateClass$a([
46523
46780
  RegisterComponent(AnimatorComponent, "AnimatorComponent")
46524
46781
  ], AnimatorComponent);
46525
46782
  class PropertyAnimationClipState {
@@ -47276,9 +47533,9 @@ class PropertyAnimation extends ComponentBase {
47276
47533
  }
47277
47534
  }
47278
47535
 
47279
- var __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor;
47280
- var __decorateClass$7 = (decorators, target, key, kind) => {
47281
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$7(target, key) : target;
47536
+ var __getOwnPropDesc$9 = Object.getOwnPropertyDescriptor;
47537
+ var __decorateClass$9 = (decorators, target, key, kind) => {
47538
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$9(target, key) : target;
47282
47539
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
47283
47540
  if (decorator = decorators[i])
47284
47541
  result = (decorator(result)) || result;
@@ -47427,7 +47684,7 @@ let SkinnedMeshRenderer2 = class extends MeshRenderer {
47427
47684
  super.nodeUpdate(view, passType, renderPassState, clusterLightingBuffer);
47428
47685
  }
47429
47686
  };
47430
- SkinnedMeshRenderer2 = __decorateClass$7([
47687
+ SkinnedMeshRenderer2 = __decorateClass$9([
47431
47688
  RegisterComponent(SkinnedMeshRenderer2, "SkinnedMeshRenderer2")
47432
47689
  ], SkinnedMeshRenderer2);
47433
47690
 
@@ -52560,9 +52817,9 @@ class UITextField extends UIRenderAble {
52560
52817
  }
52561
52818
  }
52562
52819
 
52563
- var __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;
52564
- var __decorateClass$6 = (decorators, target, key, kind) => {
52565
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$6(target, key) : target;
52820
+ var __getOwnPropDesc$8 = Object.getOwnPropertyDescriptor;
52821
+ var __decorateClass$8 = (decorators, target, key, kind) => {
52822
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$8(target, key) : target;
52566
52823
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
52567
52824
  if (decorator = decorators[i])
52568
52825
  result = (decorator(result)) || result;
@@ -52639,10 +52896,86 @@ let Light = class extends LightBase {
52639
52896
  debugDraw(show) {
52640
52897
  }
52641
52898
  };
52642
- Light = __decorateClass$6([
52899
+ Light = __decorateClass$8([
52643
52900
  RegisterComponent(Light, "Light")
52644
52901
  ], Light);
52645
52902
 
52903
+ var __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor;
52904
+ var __decorateClass$7 = (decorators, target, key, kind) => {
52905
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$7(target, key) : target;
52906
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
52907
+ if (decorator = decorators[i])
52908
+ result = (decorator(result)) || result;
52909
+ return result;
52910
+ };
52911
+ let FatLineRenderer = class extends RenderNode {
52912
+ _fatLineMaterial = null;
52913
+ _fatLineGeometry = null;
52914
+ constructor() {
52915
+ super();
52916
+ }
52917
+ onEnable() {
52918
+ super.onEnable();
52919
+ }
52920
+ onDisable() {
52921
+ super.onDisable();
52922
+ }
52923
+ cloneTo(obj) {
52924
+ const component = obj.addComponent(FatLineRenderer);
52925
+ component.copyComponent(this);
52926
+ }
52927
+ copyComponent(from) {
52928
+ super.copyComponent(from);
52929
+ return this;
52930
+ }
52931
+ /**
52932
+ * Set FatLine geometry
52933
+ */
52934
+ set geometry(value) {
52935
+ super.geometry = value;
52936
+ this._fatLineGeometry = value;
52937
+ if (value) {
52938
+ this.instanceCount = value.instanceCount;
52939
+ if (this._fatLineMaterial && value.instanceBuffer) {
52940
+ this._fatLineMaterial.setInstanceBuffer(value.instanceBuffer);
52941
+ }
52942
+ }
52943
+ }
52944
+ get geometry() {
52945
+ return this._fatLineGeometry;
52946
+ }
52947
+ /**
52948
+ * Set FatLine material
52949
+ */
52950
+ set material(value) {
52951
+ this.materials = [value];
52952
+ this._fatLineMaterial = value;
52953
+ if (this._fatLineGeometry && this._fatLineGeometry.instanceBuffer) {
52954
+ value.setInstanceBuffer(this._fatLineGeometry.instanceBuffer);
52955
+ }
52956
+ }
52957
+ get material() {
52958
+ return this._fatLineMaterial;
52959
+ }
52960
+ /**
52961
+ * Override nodeUpdate to automatically update FatLine-specific uniforms
52962
+ */
52963
+ nodeUpdate(view, passType, renderPassState, clusterLightingBuffer) {
52964
+ if (this._fatLineMaterial && this.object3D) {
52965
+ this._fatLineMaterial.setModelMatrix(this.object3D.transform.worldMatrix);
52966
+ const width = webGPUContext.presentationSize[0];
52967
+ const height = webGPUContext.presentationSize[1];
52968
+ if (width > 0 && height > 0) {
52969
+ this._fatLineMaterial.resolution = new Vector2(width, height);
52970
+ }
52971
+ }
52972
+ super.nodeUpdate(view, passType, renderPassState, clusterLightingBuffer);
52973
+ }
52974
+ };
52975
+ FatLineRenderer = __decorateClass$7([
52976
+ RegisterComponent(FatLineRenderer, "FatLineRenderer")
52977
+ ], FatLineRenderer);
52978
+
52646
52979
  class Probe extends Object3D {
52647
52980
  index = 0;
52648
52981
  drawCallFrame = -1;
@@ -52941,9 +53274,9 @@ class InstanceDrawComponent extends RenderNode {
52941
53274
  }
52942
53275
  }
52943
53276
 
52944
- var __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor;
52945
- var __decorateClass$5 = (decorators, target, key, kind) => {
52946
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$5(target, key) : target;
53277
+ var __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;
53278
+ var __decorateClass$6 = (decorators, target, key, kind) => {
53279
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$6(target, key) : target;
52947
53280
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
52948
53281
  if (decorator = decorators[i])
52949
53282
  result = (decorator(result)) || result;
@@ -52969,13 +53302,13 @@ let MeshFilter = class extends MeshRenderer {
52969
53302
  }
52970
53303
  }
52971
53304
  };
52972
- MeshFilter = __decorateClass$5([
53305
+ MeshFilter = __decorateClass$6([
52973
53306
  RegisterComponent(MeshFilter, "MeshFilter")
52974
53307
  ], MeshFilter);
52975
53308
 
52976
- var __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor;
52977
- var __decorateClass$4 = (decorators, target, key, kind) => {
52978
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$4(target, key) : target;
53309
+ var __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor;
53310
+ var __decorateClass$5 = (decorators, target, key, kind) => {
53311
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$5(target, key) : target;
52979
53312
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
52980
53313
  if (decorator = decorators[i])
52981
53314
  result = (decorator(result)) || result;
@@ -53101,7 +53434,7 @@ let SkinnedMeshRenderer = class extends MeshRenderer {
53101
53434
  super.nodeUpdate(view, passType, renderPassState, clusterLightingBuffer);
53102
53435
  }
53103
53436
  };
53104
- SkinnedMeshRenderer = __decorateClass$4([
53437
+ SkinnedMeshRenderer = __decorateClass$5([
53105
53438
  RegisterComponent(SkinnedMeshRenderer, "SkinnedMeshRenderer")
53106
53439
  ], SkinnedMeshRenderer);
53107
53440
 
@@ -53933,6 +54266,230 @@ class ExtrudeGeometry extends GeometryBase {
53933
54266
  }
53934
54267
  }
53935
54268
 
54269
+ class FatLineGeometry extends GeometryBase {
54270
+ _instanceBuffer;
54271
+ _instanceData;
54272
+ _instanceCount = 0;
54273
+ constructor() {
54274
+ super();
54275
+ this.initBaseGeometry();
54276
+ }
54277
+ /**
54278
+ * Initialize base quad geometry (shared by all line segments)
54279
+ * This is similar to ThreeJS LineSegmentsGeometry base geometry
54280
+ */
54281
+ initBaseGeometry() {
54282
+ const positions = new Float32Array([
54283
+ -1,
54284
+ 2,
54285
+ 0,
54286
+ 1,
54287
+ 2,
54288
+ 0,
54289
+ // Top endcap
54290
+ -1,
54291
+ 1,
54292
+ 0,
54293
+ 1,
54294
+ 1,
54295
+ 0,
54296
+ // Top of line segment
54297
+ -1,
54298
+ 0,
54299
+ 0,
54300
+ 1,
54301
+ 0,
54302
+ 0,
54303
+ // Bottom of line segment
54304
+ -1,
54305
+ -1,
54306
+ 0,
54307
+ 1,
54308
+ -1,
54309
+ 0
54310
+ // Bottom endcap
54311
+ ]);
54312
+ const uvs = new Float32Array([
54313
+ -1,
54314
+ 2,
54315
+ 1,
54316
+ 2,
54317
+ -1,
54318
+ 1,
54319
+ 1,
54320
+ 1,
54321
+ -1,
54322
+ -1,
54323
+ 1,
54324
+ -1,
54325
+ -1,
54326
+ -2,
54327
+ 1,
54328
+ -2
54329
+ ]);
54330
+ const indices = new Uint16Array([
54331
+ 0,
54332
+ 2,
54333
+ 1,
54334
+ 2,
54335
+ 3,
54336
+ 1,
54337
+ // First quad
54338
+ 2,
54339
+ 4,
54340
+ 3,
54341
+ 4,
54342
+ 5,
54343
+ 3,
54344
+ // Second quad
54345
+ 4,
54346
+ 6,
54347
+ 5,
54348
+ 6,
54349
+ 7,
54350
+ 5
54351
+ // Third quad
54352
+ ]);
54353
+ this.setIndices(indices);
54354
+ this.setAttribute(VertexAttributeName.position, positions);
54355
+ this.setAttribute(VertexAttributeName.uv, uvs);
54356
+ this.addSubGeometry({
54357
+ indexStart: 0,
54358
+ indexCount: indices.length,
54359
+ vertexStart: 0,
54360
+ vertexCount: positions.length / 3,
54361
+ firstStart: 0,
54362
+ index: 0,
54363
+ topology: 0
54364
+ });
54365
+ }
54366
+ /**
54367
+ * Set line positions from continuous points array
54368
+ * @param positions Array of positions [x1,y1,z1, x2,y2,z2, ...]
54369
+ */
54370
+ setPositions(positions) {
54371
+ const posArray = positions instanceof Float32Array ? positions : new Float32Array(positions);
54372
+ const numPoints = posArray.length / 3;
54373
+ const numSegments = numPoints - 1;
54374
+ if (numSegments <= 0) {
54375
+ console.warn("FatLineGeometry: Need at least 2 points");
54376
+ return this;
54377
+ }
54378
+ const instanceData = new Float32Array(numSegments * 16);
54379
+ for (let i = 0; i < numSegments; i++) {
54380
+ const i0 = i * 3;
54381
+ const i1 = (i + 1) * 3;
54382
+ instanceData[i * 16 + 0] = posArray[i0 + 0];
54383
+ instanceData[i * 16 + 1] = posArray[i0 + 1];
54384
+ instanceData[i * 16 + 2] = posArray[i0 + 2];
54385
+ instanceData[i * 16 + 3] = 0;
54386
+ instanceData[i * 16 + 4] = posArray[i1 + 0];
54387
+ instanceData[i * 16 + 5] = posArray[i1 + 1];
54388
+ instanceData[i * 16 + 6] = posArray[i1 + 2];
54389
+ instanceData[i * 16 + 7] = 0;
54390
+ instanceData[i * 16 + 8] = 1;
54391
+ instanceData[i * 16 + 9] = 1;
54392
+ instanceData[i * 16 + 10] = 1;
54393
+ instanceData[i * 16 + 11] = 0;
54394
+ instanceData[i * 16 + 12] = 1;
54395
+ instanceData[i * 16 + 13] = 1;
54396
+ instanceData[i * 16 + 14] = 1;
54397
+ instanceData[i * 16 + 15] = 0;
54398
+ }
54399
+ this._instanceData = instanceData;
54400
+ this._instanceCount = numSegments;
54401
+ this.computeBoundingBox(posArray);
54402
+ return this;
54403
+ }
54404
+ /**
54405
+ * Set colors for line segments
54406
+ * @param colors Array of colors [r1,g1,b1, r2,g2,b2, ...] for each point
54407
+ */
54408
+ setColors(colors) {
54409
+ const colorArray = colors instanceof Float32Array ? colors : new Float32Array(colors);
54410
+ if (!this._instanceData) {
54411
+ console.warn(
54412
+ "FatLineGeometry: Must call setPositions() before setColors()"
54413
+ );
54414
+ return this;
54415
+ }
54416
+ const numPoints = colorArray.length / 3;
54417
+ const numSegments = numPoints - 1;
54418
+ if (numSegments !== this._instanceCount) {
54419
+ console.warn(
54420
+ "FatLineGeometry: Color array length doesn't match segment count"
54421
+ );
54422
+ return this;
54423
+ }
54424
+ for (let i = 0; i < numSegments; i++) {
54425
+ const i0 = i * 3;
54426
+ const i1 = (i + 1) * 3;
54427
+ this._instanceData[i * 16 + 8] = colorArray[i0 + 0];
54428
+ this._instanceData[i * 16 + 9] = colorArray[i0 + 1];
54429
+ this._instanceData[i * 16 + 10] = colorArray[i0 + 2];
54430
+ this._instanceData[i * 16 + 12] = colorArray[i1 + 0];
54431
+ this._instanceData[i * 16 + 13] = colorArray[i1 + 1];
54432
+ this._instanceData[i * 16 + 14] = colorArray[i1 + 2];
54433
+ }
54434
+ return this;
54435
+ }
54436
+ /**
54437
+ * Compute bounding box from positions
54438
+ */
54439
+ computeBoundingBox(positions) {
54440
+ const min = new Vector3(Infinity, Infinity, Infinity);
54441
+ const max = new Vector3(-Infinity, -Infinity, -Infinity);
54442
+ for (let i = 0; i < positions.length; i += 3) {
54443
+ const x = positions[i];
54444
+ const y = positions[i + 1];
54445
+ const z = positions[i + 2];
54446
+ min.x = Math.min(min.x, x);
54447
+ min.y = Math.min(min.y, y);
54448
+ min.z = Math.min(min.z, z);
54449
+ max.x = Math.max(max.x, x);
54450
+ max.y = Math.max(max.y, y);
54451
+ max.z = Math.max(max.z, z);
54452
+ }
54453
+ const size = Vector3.sub(max, min);
54454
+ this.bounds = new BoundingBox(Vector3.ZERO.clone(), size);
54455
+ this.bounds.setFromMinMax(min, max);
54456
+ }
54457
+ /**
54458
+ * Get instance data for GPU upload
54459
+ */
54460
+ get instanceData() {
54461
+ return this._instanceData;
54462
+ }
54463
+ /**
54464
+ * Get number of line segments (instances)
54465
+ */
54466
+ get instanceCount() {
54467
+ return this._instanceCount;
54468
+ }
54469
+ /**
54470
+ * Get or create instance buffer
54471
+ */
54472
+ get instanceBuffer() {
54473
+ if (!this._instanceBuffer && this._instanceData) {
54474
+ this._instanceBuffer = new StorageGPUBuffer(
54475
+ this._instanceData.byteLength
54476
+ );
54477
+ this._instanceBuffer.setFloat32Array("", this._instanceData);
54478
+ this._instanceBuffer.apply();
54479
+ }
54480
+ return this._instanceBuffer;
54481
+ }
54482
+ /**
54483
+ * Update instance buffer with new data
54484
+ */
54485
+ updateInstanceBuffer() {
54486
+ if (this._instanceBuffer && this._instanceData) {
54487
+ this._instanceBuffer.setFloat32Array("", this._instanceData);
54488
+ this._instanceBuffer.apply();
54489
+ }
54490
+ }
54491
+ }
54492
+
53936
54493
  class VertexBufferLayout {
53937
54494
  name;
53938
54495
  offset;
@@ -59203,9 +59760,9 @@ class PrefabTextureParser extends ParserBase {
59203
59760
  }
59204
59761
  }
59205
59762
 
59206
- var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
59207
- var __decorateClass$3 = (decorators, target, key, kind) => {
59208
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;
59763
+ var __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor;
59764
+ var __decorateClass$4 = (decorators, target, key, kind) => {
59765
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$4(target, key) : target;
59209
59766
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
59210
59767
  if (decorator = decorators[i])
59211
59768
  result = (decorator(result)) || result;
@@ -59324,13 +59881,13 @@ let LitSSSShader = class extends Shader {
59324
59881
  }
59325
59882
  }
59326
59883
  };
59327
- LitSSSShader = __decorateClass$3([
59884
+ LitSSSShader = __decorateClass$4([
59328
59885
  RegisterShader(LitSSSShader, "LitSSSShader")
59329
59886
  ], LitSSSShader);
59330
59887
 
59331
- var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
59332
- var __decorateClass$2 = (decorators, target, key, kind) => {
59333
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
59888
+ var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
59889
+ var __decorateClass$3 = (decorators, target, key, kind) => {
59890
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;
59334
59891
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
59335
59892
  if (decorator = decorators[i])
59336
59893
  result = (decorator(result)) || result;
@@ -59426,7 +59983,7 @@ let LitShader = class extends Shader {
59426
59983
  }
59427
59984
  }
59428
59985
  };
59429
- LitShader = __decorateClass$2([
59986
+ LitShader = __decorateClass$3([
59430
59987
  RegisterShader(LitShader, "LitShader")
59431
59988
  ], LitShader);
59432
59989
 
@@ -59585,6 +60142,47 @@ class PrefabStringUtil {
59585
60142
  }
59586
60143
  }
59587
60144
 
60145
+ var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
60146
+ var __decorateClass$2 = (decorators, target, key, kind) => {
60147
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
60148
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
60149
+ if (decorator = decorators[i])
60150
+ result = (decorator(result)) || result;
60151
+ return result;
60152
+ };
60153
+ let FatLineShader = class extends Shader {
60154
+ constructor() {
60155
+ super();
60156
+ const colorShader = new RenderShaderPass("FatLine_VS", "FatLine_FS");
60157
+ colorShader.setShaderEntry(`VertMain`, `FragMain`);
60158
+ this.addRenderPass(colorShader);
60159
+ const shaderState = colorShader.shaderState;
60160
+ shaderState.acceptShadow = false;
60161
+ shaderState.castShadow = false;
60162
+ shaderState.receiveEnv = false;
60163
+ shaderState.acceptGI = false;
60164
+ shaderState.useLight = false;
60165
+ shaderState.cullMode = GPUCullMode.none;
60166
+ shaderState.depthWriteEnabled = true;
60167
+ this.setDefault();
60168
+ }
60169
+ /**
60170
+ * Set default uniform values
60171
+ */
60172
+ setDefault() {
60173
+ this.setUniformColor(`baseColor`, new Color(1, 1, 1, 1));
60174
+ this.setUniformFloat(`lineWidth`, 1);
60175
+ this.setUniformFloat(`opacity`, 1);
60176
+ this.setUniformVector2(`resolution`, new Vector2(1920, 1080));
60177
+ const identityMatrix = new Matrix4();
60178
+ const pass = this.getDefaultColorShader();
60179
+ pass.setUniform(`modelMatrix`, identityMatrix.rawData);
60180
+ }
60181
+ };
60182
+ FatLineShader = __decorateClass$2([
60183
+ RegisterShader(FatLineShader, "FatLineShader")
60184
+ ], FatLineShader);
60185
+
59588
60186
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
59589
60187
  var __decorateClass$1 = (decorators, target, key, kind) => {
59590
60188
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
@@ -59921,6 +60519,78 @@ class ColorLitMaterial extends Material {
59921
60519
  }
59922
60520
  }
59923
60521
 
60522
+ class FatLineMaterial extends Material {
60523
+ constructor() {
60524
+ super();
60525
+ this.shader = new FatLineShader();
60526
+ this.transparent = true;
60527
+ }
60528
+ /**
60529
+ * Set instance buffer for line segments
60530
+ * This should be called after setting the geometry
60531
+ */
60532
+ setInstanceBuffer(buffer) {
60533
+ this.shader.setStorageBuffer("instances", buffer);
60534
+ }
60535
+ /**
60536
+ * Set model matrix for transforming line segments
60537
+ * This should be updated each frame if the object moves
60538
+ */
60539
+ setModelMatrix(matrix) {
60540
+ const pass = this.shader.getDefaultColorShader();
60541
+ pass.setUniform("modelMatrix", matrix.rawData);
60542
+ }
60543
+ /**
60544
+ * Set base color (tint color)
60545
+ */
60546
+ set baseColor(color) {
60547
+ this.shader.setUniformColor(`baseColor`, color);
60548
+ }
60549
+ /**
60550
+ * Get base color (tint color)
60551
+ */
60552
+ get baseColor() {
60553
+ return this.shader.getUniformColor("baseColor");
60554
+ }
60555
+ /**
60556
+ * Set line width in pixels
60557
+ */
60558
+ set lineWidth(value) {
60559
+ this.shader.setUniformFloat(`lineWidth`, value);
60560
+ }
60561
+ /**
60562
+ * Get line width in pixels
60563
+ */
60564
+ get lineWidth() {
60565
+ return this.shader.getUniformFloat("lineWidth");
60566
+ }
60567
+ /**
60568
+ * Set opacity (0-1)
60569
+ */
60570
+ set opacity(value) {
60571
+ this.shader.setUniformFloat(`opacity`, value);
60572
+ }
60573
+ /**
60574
+ * Get opacity (0-1)
60575
+ */
60576
+ get opacity() {
60577
+ return this.shader.getUniformFloat("opacity");
60578
+ }
60579
+ /**
60580
+ * Set viewport resolution for correct pixel-space calculations
60581
+ * This should be set automatically by the renderer
60582
+ */
60583
+ set resolution(value) {
60584
+ this.shader.setUniformVector2(`resolution`, value);
60585
+ }
60586
+ /**
60587
+ * Get viewport resolution
60588
+ */
60589
+ get resolution() {
60590
+ return this.shader.getUniformVector2("resolution");
60591
+ }
60592
+ }
60593
+
59924
60594
  class LambertMaterial extends Material {
59925
60595
  /**
59926
60596
  * @constructor
@@ -65700,4 +66370,4 @@ const __viteBrowserExternal = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.def
65700
66370
  __proto__: null
65701
66371
  }, Symbol.toStringTag, { value: 'Module' }));
65702
66372
 
65703
- 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, 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, 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 };
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 };