@rtzh/engine 0.0.5 → 0.0.7

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 (237) hide show
  1. package/Build/Workers/chunk-243UEBJF.js +1045 -0
  2. package/Build/Workers/chunk-2UNHFFAZ.js +352 -0
  3. package/Build/Workers/chunk-2Y2KA6PM.js +387 -0
  4. package/Build/Workers/chunk-2ZXYLPPT.js +163 -0
  5. package/Build/Workers/chunk-32ZGDYJY.js +3514 -0
  6. package/Build/Workers/chunk-3NSMZ3XW.js +1067 -0
  7. package/Build/Workers/chunk-3WT5VKYM.js +101 -0
  8. package/Build/Workers/chunk-4DIL24GG.js +1460 -0
  9. package/Build/Workers/chunk-4FEDW3WT.js +299 -0
  10. package/Build/Workers/chunk-4IXXMXPJ.js +682 -0
  11. package/Build/Workers/chunk-4SC4KVID.js +692 -0
  12. package/Build/Workers/chunk-52UUGJQ6.js +288 -0
  13. package/Build/Workers/chunk-53AFSDGM.js +37 -0
  14. package/Build/Workers/chunk-54LZ6OUD.js +1067 -0
  15. package/Build/Workers/chunk-54SSO7NS.js +352 -0
  16. package/Build/Workers/chunk-565HBO3F.js +352 -0
  17. package/Build/Workers/chunk-5L3PEFKO.js +629 -0
  18. package/Build/Workers/chunk-5RMI6LFO.js +692 -0
  19. package/Build/Workers/chunk-5SVTAJRH.js +837 -0
  20. package/Build/Workers/chunk-5VDZEVQX.js +788 -0
  21. package/Build/Workers/chunk-5VWFNSLF.js +44 -0
  22. package/Build/Workers/chunk-5W4ISZGQ.js +1483 -0
  23. package/Build/Workers/chunk-5ZMMQ7HE.js +37 -0
  24. package/Build/Workers/chunk-64VDO4BW.js +114 -0
  25. package/Build/Workers/chunk-6AUSOZOL.js +476 -0
  26. package/Build/Workers/chunk-6BIU5AL4.js +692 -0
  27. package/Build/Workers/chunk-6KA3AJM6.js +455 -0
  28. package/Build/Workers/chunk-6MYDYE24.js +280 -0
  29. package/Build/Workers/chunk-6RUDXAFC.js +2719 -0
  30. package/Build/Workers/chunk-6YSUD2OH.js +219 -0
  31. package/Build/Workers/chunk-6YT2LZ3Z.js +1443 -0
  32. package/Build/Workers/chunk-73EGVDOC.js +398 -0
  33. package/Build/Workers/chunk-7BOVULMD.js +44 -0
  34. package/Build/Workers/chunk-7KOMCIWI.js +8366 -0
  35. package/Build/Workers/chunk-7MMYV5PM.js +288 -0
  36. package/Build/Workers/chunk-7QPQGSS3.js +57 -0
  37. package/Build/Workers/chunk-AEURJQ3B.js +73 -0
  38. package/Build/Workers/chunk-AMJRLIO3.js +414 -0
  39. package/Build/Workers/chunk-APOATHFZ.js +138 -0
  40. package/Build/Workers/chunk-AVNHAFMV.js +114 -0
  41. package/Build/Workers/chunk-AWMYTHW4.js +101 -0
  42. package/Build/Workers/chunk-BCYABDWF.js +3514 -0
  43. package/Build/Workers/chunk-BJHSYHOQ.js +97 -0
  44. package/Build/Workers/chunk-BM6ZG63T.js +171 -0
  45. package/Build/Workers/chunk-C3G2NDXM.js +162 -0
  46. package/Build/Workers/chunk-CTARL7CY.js +511 -0
  47. package/Build/Workers/chunk-DIA4J2DB.js +497 -0
  48. package/Build/Workers/chunk-E3NHG3TR.js +1460 -0
  49. package/Build/Workers/chunk-E5BSDIGY.js +139 -0
  50. package/Build/Workers/chunk-EDVAQGDJ.js +2719 -0
  51. package/Build/Workers/chunk-EFHDO3L2.js +102 -0
  52. package/Build/Workers/chunk-EJVGOIOW.js +1317 -0
  53. package/Build/Workers/chunk-EPVJ5OOH.js +8366 -0
  54. package/Build/Workers/chunk-ERYOZBVC.js +171 -0
  55. package/Build/Workers/chunk-ET7LWDHA.js +58 -0
  56. package/Build/Workers/chunk-EWDHM5NC.js +37 -0
  57. package/Build/Workers/chunk-F4Q3VOCC.js +1317 -0
  58. package/Build/Workers/chunk-FCSN7XOU.js +55 -0
  59. package/Build/Workers/chunk-FD62YGTB.js +219 -0
  60. package/Build/Workers/chunk-FHM3HFYM.js +1045 -0
  61. package/Build/Workers/chunk-FNI64UKI.js +57 -0
  62. package/Build/Workers/chunk-FRUZKVBP.js +352 -0
  63. package/Build/Workers/chunk-FSYQE5XE.js +55 -0
  64. package/Build/Workers/chunk-FYW5UQ24.js +837 -0
  65. package/Build/Workers/chunk-FYZVCB32.js +75 -0
  66. package/Build/Workers/chunk-G7PGTG3P.js +387 -0
  67. package/Build/Workers/chunk-GAQXLBFJ.js +1483 -0
  68. package/Build/Workers/chunk-GEH53ULL.js +299 -0
  69. package/Build/Workers/chunk-GLA2PT5T.js +476 -0
  70. package/Build/Workers/chunk-GWLEBUVI.js +2058 -0
  71. package/Build/Workers/chunk-GYIGOBV2.js +439 -0
  72. package/Build/Workers/chunk-GZMTBQM2.js +1443 -0
  73. package/Build/Workers/chunk-H2MM7FMU.js +1054 -0
  74. package/Build/Workers/chunk-H33FCT5U.js +940 -0
  75. package/Build/Workers/chunk-HAR6Y2HP.js +1800 -0
  76. package/Build/Workers/chunk-HBL3QZ2L.js +642 -0
  77. package/Build/Workers/chunk-HEKLTOOR.js +1443 -0
  78. package/Build/Workers/chunk-HM4MH5IG.js +138 -0
  79. package/Build/Workers/chunk-I5JHYEIE.js +241 -0
  80. package/Build/Workers/chunk-IB2XQV6U.js +101 -0
  81. package/Build/Workers/chunk-IC2JHDCI.js +114 -0
  82. package/Build/Workers/chunk-IEEHNZ36.js +241 -0
  83. package/Build/Workers/chunk-IRG63TBY.js +55 -0
  84. package/Build/Workers/chunk-IXM65GBF.js +256 -0
  85. package/Build/Workers/chunk-IY53MZW2.js +58 -0
  86. package/Build/Workers/chunk-IYAZCFAC.js +642 -0
  87. package/Build/Workers/chunk-J2CUNLQP.js +940 -0
  88. package/Build/Workers/chunk-J766O3PA.js +256 -0
  89. package/Build/Workers/chunk-JRPAFYGJ.js +1054 -0
  90. package/Build/Workers/chunk-JWEZXKBE.js +73 -0
  91. package/Build/Workers/chunk-KFOT2YV5.js +138 -0
  92. package/Build/Workers/chunk-KGQGZ7PF.js +778 -0
  93. package/Build/Workers/chunk-KMZXZUA7.js +1460 -0
  94. package/Build/Workers/chunk-KOVKY3HB.js +198 -0
  95. package/Build/Workers/chunk-KQ4ET526.js +163 -0
  96. package/Build/Workers/chunk-L2QIVAZV.js +3514 -0
  97. package/Build/Workers/chunk-LGMONS4O.js +1317 -0
  98. package/Build/Workers/chunk-LJHG4PJQ.js +305 -0
  99. package/Build/Workers/chunk-LNS36LUZ.js +2058 -0
  100. package/Build/Workers/chunk-LPJHTJDQ.js +305 -0
  101. package/Build/Workers/chunk-LRW2QXMW.js +352 -0
  102. package/Build/Workers/chunk-LUUEGFLT.js +305 -0
  103. package/Build/Workers/chunk-LW2VGHDM.js +1800 -0
  104. package/Build/Workers/chunk-LXM2ZC4V.js +288 -0
  105. package/Build/Workers/chunk-LXMLERGC.js +1067 -0
  106. package/Build/Workers/chunk-MEFWVMG6.js +788 -0
  107. package/Build/Workers/chunk-MJVNNURF.js +368 -0
  108. package/Build/Workers/chunk-MWN26ZEM.js +280 -0
  109. package/Build/Workers/chunk-NIWB6UMY.js +198 -0
  110. package/Build/Workers/chunk-NJEG7WRW.js +387 -0
  111. package/Build/Workers/chunk-O224ZEA5.js +58 -0
  112. package/Build/Workers/chunk-O5ICO3AS.js +682 -0
  113. package/Build/Workers/chunk-O5QH7XD5.js +629 -0
  114. package/Build/Workers/chunk-O6T3T3V3.js +97 -0
  115. package/Build/Workers/chunk-OBM2JYMG.js +75 -0
  116. package/Build/Workers/chunk-ODZZZGXK.js +219 -0
  117. package/Build/Workers/chunk-OFTWEOW2.js +1483 -0
  118. package/Build/Workers/chunk-OIJH6LAY.js +497 -0
  119. package/Build/Workers/chunk-OJFVD5ZS.js +778 -0
  120. package/Build/Workers/chunk-OJNPKCEL.js +73 -0
  121. package/Build/Workers/chunk-PQLZOYZE.js +642 -0
  122. package/Build/Workers/chunk-PU44PXY2.js +75 -0
  123. package/Build/Workers/chunk-Q36VXWGP.js +57 -0
  124. package/Build/Workers/chunk-Q4XPVYXJ.js +476 -0
  125. package/Build/Workers/chunk-QGXE4VZ3.js +55 -0
  126. package/Build/Workers/chunk-QIEHP7O4.js +280 -0
  127. package/Build/Workers/chunk-QY55DT53.js +97 -0
  128. package/Build/Workers/chunk-R3PTQZ6H.js +44 -0
  129. package/Build/Workers/chunk-RJVB3K2X.js +511 -0
  130. package/Build/Workers/chunk-RORZNBGJ.js +299 -0
  131. package/Build/Workers/chunk-RRBGLANL.js +55 -0
  132. package/Build/Workers/chunk-RT7PY6BH.js +2719 -0
  133. package/Build/Workers/chunk-SAD42JSM.js +102 -0
  134. package/Build/Workers/chunk-SBR7MW44.js +139 -0
  135. package/Build/Workers/chunk-SFM3GNS2.js +682 -0
  136. package/Build/Workers/chunk-SKXE77AM.js +139 -0
  137. package/Build/Workers/chunk-SLYUIIFB.js +455 -0
  138. package/Build/Workers/chunk-SQSWONTJ.js +241 -0
  139. package/Build/Workers/chunk-SRLJWNU2.js +368 -0
  140. package/Build/Workers/chunk-SZELHE7Q.js +163 -0
  141. package/Build/Workers/chunk-T4LDJBKR.js +124 -0
  142. package/Build/Workers/chunk-TBASKFFL.js +124 -0
  143. package/Build/Workers/chunk-TDGGEIZE.js +398 -0
  144. package/Build/Workers/chunk-TQ63SH2Z.js +352 -0
  145. package/Build/Workers/chunk-U3VI26GL.js +162 -0
  146. package/Build/Workers/chunk-U77FLUQF.js +368 -0
  147. package/Build/Workers/chunk-UIYQEJ5H.js +1054 -0
  148. package/Build/Workers/chunk-UJ72JOGF.js +511 -0
  149. package/Build/Workers/chunk-UY7I27VQ.js +1800 -0
  150. package/Build/Workers/chunk-VLB25GGE.js +439 -0
  151. package/Build/Workers/chunk-VVKDT4J7.js +837 -0
  152. package/Build/Workers/chunk-VXDOONLH.js +162 -0
  153. package/Build/Workers/chunk-W4DV7TAL.js +8366 -0
  154. package/Build/Workers/chunk-WFTPZ3ZX.js +788 -0
  155. package/Build/Workers/chunk-WLIQ26XU.js +455 -0
  156. package/Build/Workers/chunk-WOEPS2UA.js +171 -0
  157. package/Build/Workers/chunk-WWLWTSMV.js +55 -0
  158. package/Build/Workers/chunk-WX2ZANQC.js +940 -0
  159. package/Build/Workers/chunk-XEB4GEXW.js +629 -0
  160. package/Build/Workers/chunk-XFKTM6GN.js +2058 -0
  161. package/Build/Workers/chunk-XKBR7TJB.js +398 -0
  162. package/Build/Workers/chunk-XYRT4RDI.js +1045 -0
  163. package/Build/Workers/chunk-XZINQPR6.js +124 -0
  164. package/Build/Workers/chunk-YLKTSY65.js +414 -0
  165. package/Build/Workers/chunk-YLSZYTTO.js +102 -0
  166. package/Build/Workers/chunk-YQXKIGXX.js +414 -0
  167. package/Build/Workers/chunk-YR3LX3PR.js +497 -0
  168. package/Build/Workers/chunk-Z5MHVJGN.js +778 -0
  169. package/Build/Workers/chunk-ZBRVFEGF.js +256 -0
  170. package/Build/Workers/chunk-ZCPCQJBX.js +198 -0
  171. package/Build/Workers/chunk-ZS7KQSEM.js +439 -0
  172. package/Build/Workers/combineGeometry.js +24 -24
  173. package/Build/Workers/createBoxGeometry.js +18 -18
  174. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  175. package/Build/Workers/createCircleGeometry.js +26 -26
  176. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  177. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  178. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  179. package/Build/Workers/createCorridorGeometry.js +29 -29
  180. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  181. package/Build/Workers/createCylinderGeometry.js +20 -20
  182. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  183. package/Build/Workers/createEllipseGeometry.js +26 -26
  184. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  185. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  186. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  187. package/Build/Workers/createFrustumGeometry.js +18 -18
  188. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  189. package/Build/Workers/createGeometry.js +24 -24
  190. package/Build/Workers/createGroundPolylineGeometry.js +22 -22
  191. package/Build/Workers/createPlaneGeometry.js +16 -16
  192. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  193. package/Build/Workers/createPolygonGeometry.js +32 -32
  194. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  195. package/Build/Workers/createPolylineGeometry.js +25 -25
  196. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  197. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  198. package/Build/Workers/createRectangleGeometry.js +27 -27
  199. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  200. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  201. package/Build/Workers/createSphereGeometry.js +19 -19
  202. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  203. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  204. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  205. package/Build/Workers/createVectorTileGeometries.js +24 -24
  206. package/Build/Workers/createVectorTilePoints.js +13 -13
  207. package/Build/Workers/createVectorTilePolygons.js +22 -22
  208. package/Build/Workers/createVectorTilePolylines.js +14 -14
  209. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  210. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  211. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  212. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  213. package/Build/Workers/createWallGeometry.js +24 -24
  214. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  215. package/Build/Workers/decodeDraco.js +10 -10
  216. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  217. package/Build/Workers/decodeI3S.js +10 -10
  218. package/Build/Workers/gaussianSplatSorter.js +4 -4
  219. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  220. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  221. package/Build/Workers/transcodeKTX2.js +6 -6
  222. package/Build/Workers/transferTypedArrayTest.js +1 -1
  223. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  224. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  225. package/Source/Scene/Cesium3DTileset.js +4163 -4105
  226. package/Source/Scene/Model/BarycentricWireframePipelineStage.js +327 -73
  227. package/Source/Scene/Model/Model.js +3631 -3512
  228. package/Source/Scene/Model/Model3DTileContent.js +585 -568
  229. package/Source/Scene/Model/ModelRuntimePrimitive.js +391 -391
  230. package/Source/Scene/Model/WireframePipelineStage.js +122 -122
  231. package/Source/Shaders/Model/ModelFS.glsl +38 -2
  232. package/Source/Shaders/Model/ModelFS.js +38 -2
  233. package/Source/Shaders/Model/ModelVS.glsl +3 -0
  234. package/Source/Shaders/Model/ModelVS.js +3 -0
  235. package/index.d.ts +801 -773
  236. package/index.js +145 -145
  237. package/package.json +1 -1
@@ -1,122 +1,122 @@
1
- import Buffer from "../../Renderer/Buffer.js";
2
- import BufferUsage from "../../Renderer/BufferUsage.js";
3
- import defined from "../../Core/defined.js";
4
- import IndexDatatype from "../../Core/IndexDatatype.js";
5
- import ModelUtility from "./ModelUtility.js";
6
- import PrimitiveType from "../../Core/PrimitiveType.js";
7
- import ShaderDestination from "../../Renderer/ShaderDestination.js";
8
- import VertexAttributeSemantic from "../VertexAttributeSemantic.js";
9
- import WireframeIndexGenerator from "../../Core/WireframeIndexGenerator.js";
10
-
11
- /**
12
- * The wireframe pipeline stage generates a new index buffer for rendering the
13
- * structure of the mesh with gl.LINES.
14
- *
15
- * @namespace WireframePipelineStage
16
- * @private
17
- */
18
- const WireframePipelineStage = {
19
- name: "WireframePipelineStage", // Helps with debugging
20
- };
21
-
22
- /**
23
- * Process a primitive. This modifies the render resources as follows:
24
- * <ul>
25
- * <li>Adds a define to the fragment shader to prevent extra shading of the lines.</li>
26
- * <li>Adds a separate index buffer for wireframe indices</li>
27
- * <li>Updates the primitive type and count for rendering with gl.LINES</li>
28
- * </ul>
29
- *
30
- * @param {PrimitiveRenderResources} renderResources The render resources for this node
31
- * @param {ModelComponents.primitive} primitive The primitive
32
- * @param {FrameState} frameState The frame state
33
- */
34
- WireframePipelineStage.process = function (
35
- renderResources,
36
- primitive,
37
- frameState,
38
- ) {
39
- const model = renderResources.model;
40
-
41
- if (model.debugWireframeMode === "barycentric") {
42
- return;
43
- }
44
-
45
- // Applying normal mapping to the lines will result in rendering
46
- // errors on Linux. This define is added to disable normal
47
- // mapping in the shader.
48
- const shaderBuilder = renderResources.shaderBuilder;
49
- shaderBuilder.addDefine(
50
- "HAS_WIREFRAME",
51
- undefined,
52
- ShaderDestination.FRAGMENT,
53
- );
54
- const wireframeIndexBuffer = createWireframeIndexBuffer(
55
- primitive,
56
- renderResources.indices,
57
- frameState,
58
- );
59
- model._pipelineResources.push(wireframeIndexBuffer);
60
- renderResources.wireframeIndexBuffer = wireframeIndexBuffer;
61
-
62
- // We only need to count memory for the generated buffer. In WebGL 1, the CPU
63
- // copy of the original indices is already counted in the geometry stage,
64
- // and in WebGL 2, the CPU copy of the original indices (generated from the
65
- // data of the original buffer) is discarded after generating the wireframe
66
- // indices.
67
- const hasCpuCopy = false;
68
- model.statistics.addBuffer(wireframeIndexBuffer, hasCpuCopy);
69
-
70
- // Update render resources so we render LINES with the correct index count
71
- const originalPrimitiveType = renderResources.primitiveType;
72
- const originalCount = renderResources.count;
73
- renderResources.primitiveType = PrimitiveType.LINES;
74
- renderResources.count = WireframeIndexGenerator.getWireframeIndicesCount(
75
- originalPrimitiveType,
76
- originalCount,
77
- );
78
- };
79
-
80
- function createWireframeIndexBuffer(primitive, indices, frameState) {
81
- const positionAttribute = ModelUtility.getAttributeBySemantic(
82
- primitive,
83
- VertexAttributeSemantic.POSITION,
84
- );
85
- const vertexCount = positionAttribute.count;
86
- const webgl2 = frameState.context.webgl2;
87
-
88
- let originalIndices;
89
- if (defined(indices)) {
90
- const indicesBuffer = indices.buffer;
91
- const indicesCount = indices.count;
92
- if (defined(indicesBuffer) && webgl2) {
93
- const useUint8Array = indicesBuffer.sizeInBytes === indicesCount;
94
- originalIndices = useUint8Array
95
- ? new Uint8Array(indicesCount)
96
- : IndexDatatype.createTypedArray(vertexCount, indicesCount);
97
-
98
- indicesBuffer.getBufferData(originalIndices);
99
- } else {
100
- originalIndices = indices.typedArray;
101
- }
102
- }
103
-
104
- const primitiveType = primitive.primitiveType;
105
- const wireframeIndices = WireframeIndexGenerator.createWireframeIndices(
106
- primitiveType,
107
- vertexCount,
108
- originalIndices,
109
- );
110
- const indexDatatype = IndexDatatype.fromSizeInBytes(
111
- wireframeIndices.BYTES_PER_ELEMENT,
112
- );
113
-
114
- return Buffer.createIndexBuffer({
115
- context: frameState.context,
116
- typedArray: wireframeIndices,
117
- usage: BufferUsage.STATIC_DRAW,
118
- indexDatatype: indexDatatype,
119
- });
120
- }
121
-
122
- export default WireframePipelineStage;
1
+ import Buffer from "../../Renderer/Buffer.js";
2
+ import BufferUsage from "../../Renderer/BufferUsage.js";
3
+ import defined from "../../Core/defined.js";
4
+ import IndexDatatype from "../../Core/IndexDatatype.js";
5
+ import ModelUtility from "./ModelUtility.js";
6
+ import PrimitiveType from "../../Core/PrimitiveType.js";
7
+ import ShaderDestination from "../../Renderer/ShaderDestination.js";
8
+ import VertexAttributeSemantic from "../VertexAttributeSemantic.js";
9
+ import WireframeIndexGenerator from "../../Core/WireframeIndexGenerator.js";
10
+
11
+ /**
12
+ * The wireframe pipeline stage generates a new index buffer for rendering the
13
+ * structure of the mesh with gl.LINES.
14
+ *
15
+ * @namespace WireframePipelineStage
16
+ * @private
17
+ */
18
+ const WireframePipelineStage = {
19
+ name: "WireframePipelineStage", // Helps with debugging
20
+ };
21
+
22
+ /**
23
+ * Process a primitive. This modifies the render resources as follows:
24
+ * <ul>
25
+ * <li>Adds a define to the fragment shader to prevent extra shading of the lines.</li>
26
+ * <li>Adds a separate index buffer for wireframe indices</li>
27
+ * <li>Updates the primitive type and count for rendering with gl.LINES</li>
28
+ * </ul>
29
+ *
30
+ * @param {PrimitiveRenderResources} renderResources The render resources for this node
31
+ * @param {ModelComponents.primitive} primitive The primitive
32
+ * @param {FrameState} frameState The frame state
33
+ */
34
+ WireframePipelineStage.process = function (
35
+ renderResources,
36
+ primitive,
37
+ frameState,
38
+ ) {
39
+ const model = renderResources.model;
40
+
41
+ if (model.debugWireframeMode === "barycentric") {
42
+ return;
43
+ }
44
+
45
+ // Applying normal mapping to the lines will result in rendering
46
+ // errors on Linux. This define is added to disable normal
47
+ // mapping in the shader.
48
+ const shaderBuilder = renderResources.shaderBuilder;
49
+ shaderBuilder.addDefine(
50
+ "HAS_WIREFRAME",
51
+ undefined,
52
+ ShaderDestination.FRAGMENT,
53
+ );
54
+ const wireframeIndexBuffer = createWireframeIndexBuffer(
55
+ primitive,
56
+ renderResources.indices,
57
+ frameState,
58
+ );
59
+ model._pipelineResources.push(wireframeIndexBuffer);
60
+ renderResources.wireframeIndexBuffer = wireframeIndexBuffer;
61
+
62
+ // We only need to count memory for the generated buffer. In WebGL 1, the CPU
63
+ // copy of the original indices is already counted in the geometry stage,
64
+ // and in WebGL 2, the CPU copy of the original indices (generated from the
65
+ // data of the original buffer) is discarded after generating the wireframe
66
+ // indices.
67
+ const hasCpuCopy = false;
68
+ model.statistics.addBuffer(wireframeIndexBuffer, hasCpuCopy);
69
+
70
+ // Update render resources so we render LINES with the correct index count
71
+ const originalPrimitiveType = renderResources.primitiveType;
72
+ const originalCount = renderResources.count;
73
+ renderResources.primitiveType = PrimitiveType.LINES;
74
+ renderResources.count = WireframeIndexGenerator.getWireframeIndicesCount(
75
+ originalPrimitiveType,
76
+ originalCount,
77
+ );
78
+ };
79
+
80
+ function createWireframeIndexBuffer(primitive, indices, frameState) {
81
+ const positionAttribute = ModelUtility.getAttributeBySemantic(
82
+ primitive,
83
+ VertexAttributeSemantic.POSITION,
84
+ );
85
+ const vertexCount = positionAttribute.count;
86
+ const webgl2 = frameState.context.webgl2;
87
+
88
+ let originalIndices;
89
+ if (defined(indices)) {
90
+ const indicesBuffer = indices.buffer;
91
+ const indicesCount = indices.count;
92
+ if (defined(indicesBuffer) && webgl2) {
93
+ const useUint8Array = indicesBuffer.sizeInBytes === indicesCount;
94
+ originalIndices = useUint8Array
95
+ ? new Uint8Array(indicesCount)
96
+ : IndexDatatype.createTypedArray(vertexCount, indicesCount);
97
+
98
+ indicesBuffer.getBufferData(originalIndices);
99
+ } else {
100
+ originalIndices = indices.typedArray;
101
+ }
102
+ }
103
+
104
+ const primitiveType = primitive.primitiveType;
105
+ const wireframeIndices = WireframeIndexGenerator.createWireframeIndices(
106
+ primitiveType,
107
+ vertexCount,
108
+ originalIndices,
109
+ );
110
+ const indexDatatype = IndexDatatype.fromSizeInBytes(
111
+ wireframeIndices.BYTES_PER_ELEMENT,
112
+ );
113
+
114
+ return Buffer.createIndexBuffer({
115
+ context: frameState.context,
116
+ typedArray: wireframeIndices,
117
+ usage: BufferUsage.STATIC_DRAW,
118
+ indexDatatype: indexDatatype,
119
+ });
120
+ }
121
+
122
+ export default WireframePipelineStage;
@@ -133,10 +133,46 @@ void main()
133
133
  vec3 a3 = smoothstep(vec3(0.0), d * u_wireframeWidth, v_barycentric);
134
134
  float edge = min(min(a3.x, a3.y), a3.z);
135
135
 
136
+ vec3 wireframeColor = u_wireframeColor.rgb;
137
+ float wireframeAlpha = u_wireframeColor.a;
138
+
139
+ #ifdef WIREFRAME_SCANLINE
140
+ float scanProgress = fract(u_wireframeTime * u_wireframeScanSpeed);
141
+ float scanCoord;
142
+ float scanRange;
143
+ if (u_wireframeScanAxis.z > 0.5) {
144
+ scanCoord = length(v_wireframeWorldPos);
145
+ scanRange = u_wireframeScanMax - u_wireframeScanMin;
146
+ } else if (u_wireframeScanAxis.y > 0.5) {
147
+ scanCoord = v_wireframeWorldPos.z;
148
+ scanRange = u_wireframeScanMax - u_wireframeScanMin;
149
+ } else {
150
+ scanCoord = v_wireframeWorldPos.x;
151
+ scanRange = u_wireframeScanMax - u_wireframeScanMin;
152
+ }
153
+ float scanPlanePos = u_wireframeScanMin + scanProgress * scanRange;
154
+ float scanDist = abs(scanCoord - scanPlanePos);
155
+ float scanWidth = max(scanRange * 0.015, 0.001);
156
+ float scanGlow = smoothstep(scanWidth, 0.0, scanDist);
157
+ vec3 scanlineHighlight = mix(wireframeColor, vec3(1.0), 0.6) * 1.5;
158
+ wireframeColor = mix(wireframeColor, scanlineHighlight, scanGlow);
159
+ #endif
160
+
161
+ float glowFactor = 0.0;
162
+ if (u_wireframeGlow > 0.0) {
163
+ vec3 glowA3 = smoothstep(vec3(0.0), d * u_wireframeWidth * (1.0 + u_wireframeGlow * 2.0), v_barycentric);
164
+ float glowEdge = min(min(glowA3.x, glowA3.y), glowA3.z);
165
+ glowFactor = (1.0 - glowEdge) * u_wireframeGlow;
166
+ }
167
+
136
168
  #ifdef WIREFRAME_OVERLAY
137
- color.rgb = mix(u_wireframeColor.rgb, color.rgb, edge);
169
+ color.rgb = mix(wireframeColor, color.rgb, edge);
170
+ color.rgb += glowFactor * wireframeColor;
171
+ color.a *= u_wireframeFillAlpha;
138
172
  #else
139
- color = mix(u_wireframeColor, color, edge);
173
+ color.rgb = mix(wireframeColor, color.rgb, edge);
174
+ color.rgb += glowFactor * wireframeColor;
175
+ color.a = mix(wireframeAlpha, color.a * u_wireframeFillAlpha, edge);
140
176
  #endif
141
177
  #endif
142
178
 
@@ -133,11 +133,47 @@ void main()\n\
133
133
  vec3 d = fwidth(v_barycentric);\n\
134
134
  vec3 a3 = smoothstep(vec3(0.0), d * u_wireframeWidth, v_barycentric);\n\
135
135
  float edge = min(min(a3.x, a3.y), a3.z);\n\
136
+ \n\
137
+ vec3 wireframeColor = u_wireframeColor.rgb;\n\
138
+ float wireframeAlpha = u_wireframeColor.a;\n\
139
+ \n\
140
+ #ifdef WIREFRAME_SCANLINE\n\
141
+ float scanProgress = fract(u_wireframeTime * u_wireframeScanSpeed);\n\
142
+ float scanCoord;\n\
143
+ float scanRange;\n\
144
+ if (u_wireframeScanAxis.z > 0.5) {\n\
145
+ scanCoord = length(v_wireframeWorldPos);\n\
146
+ scanRange = u_wireframeScanMax - u_wireframeScanMin;\n\
147
+ } else if (u_wireframeScanAxis.y > 0.5) {\n\
148
+ scanCoord = v_wireframeWorldPos.z;\n\
149
+ scanRange = u_wireframeScanMax - u_wireframeScanMin;\n\
150
+ } else {\n\
151
+ scanCoord = v_wireframeWorldPos.x;\n\
152
+ scanRange = u_wireframeScanMax - u_wireframeScanMin;\n\
153
+ }\n\
154
+ float scanPlanePos = u_wireframeScanMin + scanProgress * scanRange;\n\
155
+ float scanDist = abs(scanCoord - scanPlanePos);\n\
156
+ float scanWidth = max(scanRange * 0.015, 0.001);\n\
157
+ float scanGlow = smoothstep(scanWidth, 0.0, scanDist);\n\
158
+ vec3 scanlineHighlight = mix(wireframeColor, vec3(1.0), 0.6) * 1.5;\n\
159
+ wireframeColor = mix(wireframeColor, scanlineHighlight, scanGlow);\n\
160
+ #endif\n\
161
+ \n\
162
+ float glowFactor = 0.0;\n\
163
+ if (u_wireframeGlow > 0.0) {\n\
164
+ vec3 glowA3 = smoothstep(vec3(0.0), d * u_wireframeWidth * (1.0 + u_wireframeGlow * 2.0), v_barycentric);\n\
165
+ float glowEdge = min(min(glowA3.x, glowA3.y), glowA3.z);\n\
166
+ glowFactor = (1.0 - glowEdge) * u_wireframeGlow;\n\
167
+ }\n\
136
168
  \n\
137
169
  #ifdef WIREFRAME_OVERLAY\n\
138
- color.rgb = mix(u_wireframeColor.rgb, color.rgb, edge);\n\
170
+ color.rgb = mix(wireframeColor, color.rgb, edge);\n\
171
+ color.rgb += glowFactor * wireframeColor;\n\
172
+ color.a *= u_wireframeFillAlpha;\n\
139
173
  #else\n\
140
- color = mix(u_wireframeColor, color, edge);\n\
174
+ color.rgb = mix(wireframeColor, color.rgb, edge);\n\
175
+ color.rgb += glowFactor * wireframeColor;\n\
176
+ color.a = mix(wireframeAlpha, color.a * u_wireframeFillAlpha, edge);\n\
141
177
  #endif\n\
142
178
  #endif\n\
143
179
  \n\
@@ -161,5 +161,8 @@ void main()
161
161
 
162
162
  #ifdef HAS_BARYCENTRIC_WIREFRAME
163
163
  v_barycentric = a_barycentric;
164
+ vec4 _wireframeWorldPos = czm_model * vec4(attributes.positionMC, 1.0);
165
+ v_wireframeWorldPos = _wireframeWorldPos.xyz;
166
+ v_wireframeLocalPos = attributes.positionMC;
164
167
  #endif
165
168
  }
@@ -162,6 +162,9 @@ void main()\n\
162
162
  \n\
163
163
  #ifdef HAS_BARYCENTRIC_WIREFRAME\n\
164
164
  v_barycentric = a_barycentric;\n\
165
+ vec4 _wireframeWorldPos = czm_model * vec4(attributes.positionMC, 1.0);\n\
166
+ v_wireframeWorldPos = _wireframeWorldPos.xyz;\n\
167
+ v_wireframeLocalPos = attributes.positionMC;\n\
165
168
  #endif\n\
166
169
  }\n\
167
170
  ";