@rtzh/engine 0.0.9 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/Build/ThirdParty/Workers/zip-web-worker.js +586 -480
  2. package/Build/Workers/chunk-3CD4WIF4.js +101 -0
  3. package/Build/Workers/chunk-3PWX65TL.js +398 -0
  4. package/Build/Workers/chunk-4CQDMEZY.js +2058 -0
  5. package/Build/Workers/chunk-4GZLJPDW.js +8366 -0
  6. package/Build/Workers/chunk-5WKGRIN6.js +114 -0
  7. package/Build/Workers/chunk-6BNIWSFA.js +940 -0
  8. package/Build/Workers/chunk-6TWMNB7Q.js +455 -0
  9. package/Build/Workers/chunk-72Q33KL6.js +280 -0
  10. package/Build/Workers/chunk-74HENCNJ.js +171 -0
  11. package/Build/Workers/chunk-7C2MOK27.js +57 -0
  12. package/Build/Workers/chunk-7EFYX4FL.js +642 -0
  13. package/Build/Workers/chunk-7RAUHLDW.js +497 -0
  14. package/Build/Workers/chunk-B3FJJGCH.js +305 -0
  15. package/Build/Workers/chunk-BIJHMMCD.js +138 -0
  16. package/Build/Workers/chunk-CGAHG2LR.js +163 -0
  17. package/Build/Workers/chunk-CQ5PWUMS.js +37 -0
  18. package/Build/Workers/chunk-CQB3KRGK.js +198 -0
  19. package/Build/Workers/chunk-DHWZGIOA.js +139 -0
  20. package/Build/Workers/chunk-EDFDPOY6.js +55 -0
  21. package/Build/Workers/chunk-F2BQY3GT.js +1317 -0
  22. package/Build/Workers/chunk-FARHIBOA.js +75 -0
  23. package/Build/Workers/chunk-G6PDJHNG.js +476 -0
  24. package/Build/Workers/chunk-GCPD37SU.js +1054 -0
  25. package/Build/Workers/chunk-GDHDJK32.js +1045 -0
  26. package/Build/Workers/chunk-GNGGEDZK.js +352 -0
  27. package/Build/Workers/chunk-GNGZG6C6.js +162 -0
  28. package/Build/Workers/chunk-HFCJLXTG.js +55 -0
  29. package/Build/Workers/chunk-HKII76UV.js +1800 -0
  30. package/Build/Workers/chunk-HWUHUN7Z.js +387 -0
  31. package/Build/Workers/chunk-I3VVEQQ6.js +439 -0
  32. package/Build/Workers/chunk-IKMU6YHA.js +288 -0
  33. package/Build/Workers/chunk-J4PNHKWO.js +2719 -0
  34. package/Build/Workers/chunk-JFLJS4QU.js +1443 -0
  35. package/Build/Workers/chunk-JJWMDUOJ.js +44 -0
  36. package/Build/Workers/chunk-JOQFYJZ2.js +692 -0
  37. package/Build/Workers/chunk-JUJONRWD.js +788 -0
  38. package/Build/Workers/chunk-MCJRXFRL.js +102 -0
  39. package/Build/Workers/chunk-MLL4AAXV.js +1460 -0
  40. package/Build/Workers/chunk-MPCZC3G6.js +414 -0
  41. package/Build/Workers/chunk-MPHEIDPB.js +629 -0
  42. package/Build/Workers/chunk-NXZJKIYD.js +97 -0
  43. package/Build/Workers/chunk-OD7UYXFV.js +352 -0
  44. package/Build/Workers/chunk-R2AFDOIY.js +778 -0
  45. package/Build/Workers/chunk-RBLCJVK6.js +73 -0
  46. package/Build/Workers/chunk-SCF2OVAZ.js +219 -0
  47. package/Build/Workers/chunk-SJX7UJNW.js +241 -0
  48. package/Build/Workers/chunk-SZQC2TUH.js +368 -0
  49. package/Build/Workers/chunk-TAWVKT4B.js +58 -0
  50. package/Build/Workers/chunk-U267N6IJ.js +299 -0
  51. package/Build/Workers/chunk-UZXJSLDO.js +3514 -0
  52. package/Build/Workers/chunk-VP2OAU4C.js +124 -0
  53. package/Build/Workers/chunk-XMIENZET.js +256 -0
  54. package/Build/Workers/chunk-XXD3TQVI.js +837 -0
  55. package/Build/Workers/chunk-YCTK62TY.js +1483 -0
  56. package/Build/Workers/chunk-YWSB7PZP.js +511 -0
  57. package/Build/Workers/chunk-ZVXETFPZ.js +1067 -0
  58. package/Build/Workers/chunk-ZXZTWDTN.js +682 -0
  59. package/Build/Workers/combineGeometry.js +24 -24
  60. package/Build/Workers/createBoxGeometry.js +18 -18
  61. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  62. package/Build/Workers/createCircleGeometry.js +26 -26
  63. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  64. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  65. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  66. package/Build/Workers/createCorridorGeometry.js +29 -29
  67. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  68. package/Build/Workers/createCylinderGeometry.js +20 -20
  69. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  70. package/Build/Workers/createEllipseGeometry.js +26 -26
  71. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  72. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  73. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  74. package/Build/Workers/createFrustumGeometry.js +18 -18
  75. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  76. package/Build/Workers/createGeometry.js +24 -24
  77. package/Build/Workers/createGroundPolylineGeometry.js +22 -22
  78. package/Build/Workers/createPlaneGeometry.js +16 -16
  79. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  80. package/Build/Workers/createPolygonGeometry.js +32 -32
  81. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  82. package/Build/Workers/createPolylineGeometry.js +25 -25
  83. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  84. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  85. package/Build/Workers/createRectangleGeometry.js +27 -27
  86. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  87. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  88. package/Build/Workers/createSphereGeometry.js +19 -19
  89. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  90. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  91. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  92. package/Build/Workers/createVectorTileGeometries.js +24 -24
  93. package/Build/Workers/createVectorTilePoints.js +13 -13
  94. package/Build/Workers/createVectorTilePolygons.js +22 -22
  95. package/Build/Workers/createVectorTilePolylines.js +14 -14
  96. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  97. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  98. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  99. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  100. package/Build/Workers/createWallGeometry.js +24 -24
  101. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  102. package/Build/Workers/decodeDraco.js +10 -10
  103. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  104. package/Build/Workers/decodeI3S.js +10 -10
  105. package/Build/Workers/gaussianSplatSorter.js +4 -4
  106. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  107. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  108. package/Build/Workers/transcodeKTX2.js +6 -6
  109. package/Build/Workers/transferTypedArrayTest.js +1 -1
  110. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  111. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  112. package/README.md +69 -9
  113. package/Source/Renderer/AutomaticUniforms.js +76 -1
  114. package/Source/Renderer/UniformState.js +108 -1
  115. package/Source/Scene/Cesium3DTileset.js +4157 -4157
  116. package/Source/Scene/Model/BarycentricWireframePipelineStage.js +462 -414
  117. package/Source/Scene/Model/LightingPipelineStage.js +17 -2
  118. package/Source/Scene/Model/MaterialPipelineStage.js +50 -0
  119. package/Source/Scene/Model/Model.js +3646 -3631
  120. package/Source/Scene/Model/Model3DTileContent.js +568 -568
  121. package/Source/Scene/Model/ModelRuntimePrimitive.js +391 -391
  122. package/Source/Scene/Model/WireframePipelineStage.js +122 -122
  123. package/Source/Scene/PointLight.js +36 -0
  124. package/Source/Scene/Scene.js +9 -1
  125. package/Source/Shaders/Model/LightingStageFS.glsl +33 -0
  126. package/Source/Shaders/Model/LightingStageFS.js +33 -0
  127. package/Source/ThirdParty/Workers/zip-web-worker.js +1 -1
  128. package/Source/ThirdParty/zip-module.wasm +0 -0
  129. package/index.d.ts +809 -779
  130. package/index.js +11 -10
  131. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import defined from "../../Core/defined.js";
1
+ import defined from "../../Core/defined.js";
2
2
  import ShaderDestination from "../../Renderer/ShaderDestination.js";
3
3
  import LightingStageFS from "../../Shaders/Model/LightingStageFS.js";
4
4
  import LightingModel from "./LightingModel.js";
@@ -24,10 +24,15 @@ const LightingPipelineStage = {
24
24
  * </ul>
25
25
  * @param {PrimitiveRenderResources} renderResources The render resources for the primitive
26
26
  * @param {ModelComponents.Primitive} primitive The primitive to be rendered
27
+ * @param {FrameState} frameState The frame state.
27
28
  *
28
29
  * @private
29
30
  */
30
- LightingPipelineStage.process = function (renderResources, primitive) {
31
+ LightingPipelineStage.process = function (
32
+ renderResources,
33
+ primitive,
34
+ frameState,
35
+ ) {
31
36
  const { model, lightingOptions, shaderBuilder } = renderResources;
32
37
 
33
38
  if (defined(model.lightColor)) {
@@ -67,6 +72,16 @@ LightingPipelineStage.process = function (renderResources, primitive) {
67
72
  );
68
73
  }
69
74
 
75
+ // Add POINT_LIGHTS define if point lights are present
76
+ const pointLights = frameState.pointLights;
77
+ if (defined(pointLights) && pointLights.length > 0) {
78
+ shaderBuilder.addDefine(
79
+ "POINT_LIGHTS",
80
+ undefined,
81
+ ShaderDestination.FRAGMENT,
82
+ );
83
+ }
84
+
70
85
  shaderBuilder.addFragmentLines(LightingStageFS);
71
86
  };
72
87
 
@@ -65,6 +65,23 @@ MaterialPipelineStage.process = function (
65
65
  const hasClassification = defined(model.classificationType);
66
66
  const disableTextures = hasClassification;
67
67
 
68
+ // Collect the texture coordinate sets actually present in the geometry.
69
+ // Some models reference a texture whose UV set (e.g. TEXCOORD_0) does not
70
+ // exist on the mesh. If we still generate a `TEXCOORD_*` define for such a
71
+ // texture, the fragment shader would reference an undeclared
72
+ // `v_texCoord_n` varying and fail to compile, so those textures are skipped.
73
+ const texCoordSets = new Set();
74
+ const attributes = primitive.attributes;
75
+ for (let i = 0; i < attributes.length; i++) {
76
+ const attribute = attributes[i];
77
+ if (
78
+ attribute.semantic === VertexAttributeSemantic.TEXCOORD &&
79
+ defined(attribute.setIndex)
80
+ ) {
81
+ texCoordSets.add(attribute.setIndex);
82
+ }
83
+ }
84
+
68
85
  // When textures are loaded incrementally, fall back to a default 1x1 texture
69
86
  const { defaultTexture, defaultNormalTexture, defaultEmissiveTexture } =
70
87
  frameState.context;
@@ -77,6 +94,7 @@ MaterialPipelineStage.process = function (
77
94
  defaultNormalTexture,
78
95
  defaultEmissiveTexture,
79
96
  disableTextures,
97
+ texCoordSets,
80
98
  );
81
99
 
82
100
  if (defined(material.specularGlossiness)) {
@@ -86,6 +104,7 @@ MaterialPipelineStage.process = function (
86
104
  shaderBuilder,
87
105
  defaultTexture,
88
106
  disableTextures,
107
+ texCoordSets,
89
108
  );
90
109
  } else {
91
110
  if (
@@ -98,6 +117,7 @@ MaterialPipelineStage.process = function (
98
117
  shaderBuilder,
99
118
  defaultTexture,
100
119
  disableTextures,
120
+ texCoordSets,
101
121
  );
102
122
  }
103
123
  if (
@@ -110,6 +130,7 @@ MaterialPipelineStage.process = function (
110
130
  shaderBuilder,
111
131
  defaultTexture,
112
132
  disableTextures,
133
+ texCoordSets,
113
134
  );
114
135
  }
115
136
  if (
@@ -122,6 +143,7 @@ MaterialPipelineStage.process = function (
122
143
  shaderBuilder,
123
144
  defaultTexture,
124
145
  disableTextures,
146
+ texCoordSets,
125
147
  );
126
148
  }
127
149
  processMetallicRoughnessUniforms(
@@ -130,6 +152,7 @@ MaterialPipelineStage.process = function (
130
152
  shaderBuilder,
131
153
  defaultTexture,
132
154
  disableTextures,
155
+ texCoordSets,
133
156
  );
134
157
  }
135
158
 
@@ -272,7 +295,15 @@ function processTexture(
272
295
  uniformName,
273
296
  defineName,
274
297
  defaultTexture,
298
+ texCoordSets,
275
299
  ) {
300
+ // If the texture references a texture coordinate set that is not present in
301
+ // the geometry, skip it entirely. Otherwise the generated fragment shader
302
+ // would use an undeclared `v_texCoord_n` varying and fail to compile.
303
+ if (!texCoordSets.has(textureReader.texCoord)) {
304
+ return;
305
+ }
306
+
276
307
  // Add a uniform for the texture itself
277
308
  shaderBuilder.addUniform(
278
309
  "sampler2D",
@@ -333,6 +364,7 @@ function processMaterialUniforms(
333
364
  defaultNormalTexture,
334
365
  defaultEmissiveTexture,
335
366
  disableTextures,
367
+ texCoordSets,
336
368
  ) {
337
369
  const { emissiveFactor, emissiveTexture, normalTexture, occlusionTexture } =
338
370
  material;
@@ -363,6 +395,7 @@ function processMaterialUniforms(
363
395
  "u_emissiveTexture",
364
396
  "EMISSIVE",
365
397
  defaultEmissiveTexture,
398
+ texCoordSets,
366
399
  );
367
400
  }
368
401
  }
@@ -375,6 +408,7 @@ function processMaterialUniforms(
375
408
  "u_normalTexture",
376
409
  "NORMAL",
377
410
  defaultNormalTexture,
411
+ texCoordSets,
378
412
  );
379
413
  }
380
414
 
@@ -386,6 +420,7 @@ function processMaterialUniforms(
386
420
  "u_occlusionTexture",
387
421
  "OCCLUSION",
388
422
  defaultTexture,
423
+ texCoordSets,
389
424
  );
390
425
  }
391
426
  }
@@ -406,6 +441,7 @@ function processSpecularGlossinessUniforms(
406
441
  shaderBuilder,
407
442
  defaultTexture,
408
443
  disableTextures,
444
+ texCoordSets,
409
445
  ) {
410
446
  const {
411
447
  diffuseTexture,
@@ -429,6 +465,7 @@ function processSpecularGlossinessUniforms(
429
465
  "u_diffuseTexture",
430
466
  "DIFFUSE",
431
467
  defaultTexture,
468
+ texCoordSets,
432
469
  );
433
470
  }
434
471
 
@@ -459,6 +496,7 @@ function processSpecularGlossinessUniforms(
459
496
  "u_specularGlossinessTexture",
460
497
  "SPECULAR_GLOSSINESS",
461
498
  defaultTexture,
499
+ texCoordSets,
462
500
  );
463
501
  }
464
502
 
@@ -520,6 +558,7 @@ function processSpecularUniforms(
520
558
  shaderBuilder,
521
559
  defaultTexture,
522
560
  disableTextures,
561
+ texCoordSets,
523
562
  ) {
524
563
  const {
525
564
  specularTexture,
@@ -542,6 +581,7 @@ function processSpecularUniforms(
542
581
  "u_specularTexture",
543
582
  "SPECULAR",
544
583
  defaultTexture,
584
+ texCoordSets,
545
585
  );
546
586
  }
547
587
 
@@ -572,6 +612,7 @@ function processSpecularUniforms(
572
612
  "u_specularColorTexture",
573
613
  "SPECULAR_COLOR",
574
614
  defaultTexture,
615
+ texCoordSets,
575
616
  );
576
617
  }
577
618
 
@@ -616,6 +657,7 @@ function processAnisotropyUniforms(
616
657
  shaderBuilder,
617
658
  defaultTexture,
618
659
  disableTextures,
660
+ texCoordSets,
619
661
  ) {
620
662
  const { anisotropyStrength, anisotropyRotation, anisotropyTexture } =
621
663
  anisotropy;
@@ -634,6 +676,7 @@ function processAnisotropyUniforms(
634
676
  "u_anisotropyTexture",
635
677
  "ANISOTROPY",
636
678
  defaultTexture,
679
+ texCoordSets,
637
680
  );
638
681
  }
639
682
 
@@ -668,6 +711,7 @@ function processClearcoatUniforms(
668
711
  shaderBuilder,
669
712
  defaultTexture,
670
713
  disableTextures,
714
+ texCoordSets,
671
715
  ) {
672
716
  const {
673
717
  clearcoatFactor,
@@ -710,6 +754,7 @@ function processClearcoatUniforms(
710
754
  "u_clearcoatTexture",
711
755
  "CLEARCOAT",
712
756
  defaultTexture,
757
+ texCoordSets,
713
758
  );
714
759
  }
715
760
 
@@ -740,6 +785,7 @@ function processClearcoatUniforms(
740
785
  "u_clearcoatRoughnessTexture",
741
786
  "CLEARCOAT_ROUGHNESS",
742
787
  defaultTexture,
788
+ texCoordSets,
743
789
  );
744
790
  }
745
791
 
@@ -751,6 +797,7 @@ function processClearcoatUniforms(
751
797
  "u_clearcoatNormalTexture",
752
798
  "CLEARCOAT_NORMAL",
753
799
  defaultTexture,
800
+ texCoordSets,
754
801
  );
755
802
  }
756
803
  }
@@ -771,6 +818,7 @@ function processMetallicRoughnessUniforms(
771
818
  shaderBuilder,
772
819
  defaultTexture,
773
820
  disableTextures,
821
+ texCoordSets,
774
822
  ) {
775
823
  shaderBuilder.addDefine(
776
824
  "USE_METALLIC_ROUGHNESS",
@@ -787,6 +835,7 @@ function processMetallicRoughnessUniforms(
787
835
  "u_baseColorTexture",
788
836
  "BASE_COLOR",
789
837
  defaultTexture,
838
+ texCoordSets,
790
839
  );
791
840
  }
792
841
 
@@ -822,6 +871,7 @@ function processMetallicRoughnessUniforms(
822
871
  "u_metallicRoughnessTexture",
823
872
  "METALLIC_ROUGHNESS",
824
873
  defaultTexture,
874
+ texCoordSets,
825
875
  );
826
876
  }
827
877