@rtzh/engine 0.0.4 → 0.0.6

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 (228) hide show
  1. package/Build/Workers/{chunk-HAY6YE7M.js → chunk-23CHWHW6.js} +4 -4
  2. package/Build/Workers/{chunk-3K2PK2OU.js → chunk-243UEBJF.js} +10 -10
  3. package/Build/Workers/{chunk-TSAJNE4K.js → chunk-27JI7F7B.js} +2 -2
  4. package/Build/Workers/{chunk-OVPPHDU7.js → chunk-2OWEFNS4.js} +4 -4
  5. package/Build/Workers/{chunk-YBVMSCW4.js → chunk-2VN5W6HA.js} +5 -5
  6. package/Build/Workers/{chunk-OOB2KZC6.js → chunk-2YAONTGQ.js} +7 -7
  7. package/Build/Workers/{chunk-JH27ZGLN.js → chunk-324L25HV.js} +6 -6
  8. package/Build/Workers/{chunk-6LZBBEA7.js → chunk-3EZBCDBK.js} +9 -9
  9. package/Build/Workers/{chunk-25BA4527.js → chunk-3JPA6GA3.js} +12 -12
  10. package/Build/Workers/{chunk-DP76S3IQ.js → chunk-3NSMZ3XW.js} +17 -17
  11. package/Build/Workers/chunk-3WRJXCJS.js +497 -0
  12. package/Build/Workers/{chunk-SBFTVHRW.js → chunk-3ZJ6X3BW.js} +5 -5
  13. package/Build/Workers/{chunk-B2VFNYD7.js → chunk-42I3QSKJ.js} +1 -1
  14. package/Build/Workers/{chunk-BXBGWQ3Z.js → chunk-4BJHO56J.js} +6 -6
  15. package/Build/Workers/{chunk-YPGJSFOO.js → chunk-4DIL24GG.js} +5 -5
  16. package/Build/Workers/{chunk-XOVHLPKW.js → chunk-4FEDW3WT.js} +8 -8
  17. package/Build/Workers/{chunk-WAS3IHIQ.js → chunk-4GPHI5UY.js} +10 -10
  18. package/Build/Workers/{chunk-3M5CRHSG.js → chunk-4NAHNN5G.js} +10 -10
  19. package/Build/Workers/{chunk-KFMCOG26.js → chunk-4SC4KVID.js} +10 -10
  20. package/Build/Workers/{chunk-J3FBVUY4.js → chunk-53AFSDGM.js} +1 -1
  21. package/Build/Workers/{chunk-Q2DXNFYW.js → chunk-54AFUJNV.js} +11 -11
  22. package/Build/Workers/{chunk-7NCJH26L.js → chunk-54SSO7NS.js} +5 -5
  23. package/Build/Workers/{chunk-2BLQ3B4Q.js → chunk-553BNJPP.js} +8 -8
  24. package/Build/Workers/{chunk-GDIBU55R.js → chunk-56MKFDJH.js} +12 -12
  25. package/Build/Workers/{chunk-K4IMD7KH.js → chunk-5DPCF65K.js} +5 -5
  26. package/Build/Workers/{chunk-5QTPACZQ.js → chunk-5MCUZL44.js} +6 -6
  27. package/Build/Workers/{chunk-VIYQ56Z7.js → chunk-5SVTAJRH.js} +12 -12
  28. package/Build/Workers/chunk-5T4DXPEL.js +299 -0
  29. package/Build/Workers/{chunk-56XTN5NJ.js → chunk-5UHIRI2A.js} +2 -2
  30. package/Build/Workers/{chunk-ACH67MPW.js → chunk-5W4ISZGQ.js} +14 -14
  31. package/Build/Workers/{chunk-KVDSJXRK.js → chunk-64VDO4BW.js} +6 -6
  32. package/Build/Workers/{chunk-5WAG5YKS.js → chunk-664SI23B.js} +12 -12
  33. package/Build/Workers/{chunk-TO7TWUET.js → chunk-6AUSOZOL.js} +7 -7
  34. package/Build/Workers/{chunk-SOR7PD4V.js → chunk-6GNLKYQO.js} +6 -6
  35. package/Build/Workers/{chunk-POY6ZE32.js → chunk-6ZF4QOFM.js} +6 -6
  36. package/Build/Workers/{chunk-4HXPSZRC.js → chunk-763Q2YKY.js} +14 -14
  37. package/Build/Workers/chunk-7MMYV5PM.js +288 -0
  38. package/Build/Workers/{chunk-TDI7UQBO.js → chunk-7QPQGSS3.js} +5 -5
  39. package/Build/Workers/{chunk-IELTSYPZ.js → chunk-7R74V5Z3.js} +8 -8
  40. package/Build/Workers/{chunk-PHB5MRHM.js → chunk-7X6CLAD2.js} +9 -9
  41. package/Build/Workers/{chunk-PV5B2YNB.js → chunk-ADQVXDEJ.js} +16 -16
  42. package/Build/Workers/{chunk-TWF4XRZ6.js → chunk-AEURJQ3B.js} +2 -2
  43. package/Build/Workers/{chunk-WLREXLZ7.js → chunk-AMJRLIO3.js} +11 -11
  44. package/Build/Workers/{chunk-7B23DD46.js → chunk-ATC2WXI4.js} +17 -17
  45. package/Build/Workers/{chunk-KVE5EAPO.js → chunk-B5ZUBUPB.js} +14 -14
  46. package/Build/Workers/{chunk-4Z26IS65.js → chunk-BCYABDWF.js} +18 -18
  47. package/Build/Workers/{chunk-E2CARZA7.js → chunk-BHTWF7UG.js} +2 -2
  48. package/Build/Workers/{chunk-UUJXSLQ2.js → chunk-BLZILZWF.js} +16 -16
  49. package/Build/Workers/{chunk-J4MIJCN5.js → chunk-CCPKBCZD.js} +6 -6
  50. package/Build/Workers/chunk-CMAG5O53.js +1483 -0
  51. package/Build/Workers/{chunk-KUAWPGSB.js → chunk-CTARL7CY.js} +13 -13
  52. package/Build/Workers/{chunk-FJREGHFG.js → chunk-D3FNWB3Q.js} +4 -4
  53. package/Build/Workers/{chunk-HI6X33GO.js → chunk-DAYNPAVN.js} +2 -2
  54. package/Build/Workers/{chunk-WMGESUDW.js → chunk-DIA4J2DB.js} +3 -3
  55. package/Build/Workers/{chunk-EISI2CR2.js → chunk-DKJMD2HX.js} +6 -6
  56. package/Build/Workers/{chunk-AL22JVIA.js → chunk-DVTKM7FF.js} +4 -4
  57. package/Build/Workers/{chunk-KBAGFNQ4.js → chunk-E5BSDIGY.js} +5 -5
  58. package/Build/Workers/{chunk-HU5P7PMU.js → chunk-EJVGOIOW.js} +7 -7
  59. package/Build/Workers/chunk-ERYOZBVC.js +171 -0
  60. package/Build/Workers/{chunk-UYT2PBMV.js → chunk-ET7LWDHA.js} +2 -2
  61. package/Build/Workers/{chunk-5BIQOSBV.js → chunk-FSYQE5XE.js} +1 -1
  62. package/Build/Workers/{chunk-ZV42SJKS.js → chunk-FTHCZAWE.js} +2 -2
  63. package/Build/Workers/{chunk-DSBEWMOQ.js → chunk-FTXEOX64.js} +17 -17
  64. package/Build/Workers/{chunk-R73BHGGI.js → chunk-FUFHIXPT.js} +4 -4
  65. package/Build/Workers/{chunk-I76SRIKN.js → chunk-G2KELS4I.js} +4 -4
  66. package/Build/Workers/{chunk-2CAIFJD5.js → chunk-G7PGTG3P.js} +13 -13
  67. package/Build/Workers/{chunk-KXB3AARU.js → chunk-GCZNJHST.js} +5 -5
  68. package/Build/Workers/{chunk-UTWLMOPM.js → chunk-GJFIEALZ.js} +13 -13
  69. package/Build/Workers/{chunk-VR2L2Y4Z.js → chunk-GZMTBQM2.js} +4 -4
  70. package/Build/Workers/{chunk-DBKYAGM6.js → chunk-HAR6Y2HP.js} +2 -2
  71. package/Build/Workers/{chunk-NOH3R3YY.js → chunk-HC6DDPFU.js} +7 -7
  72. package/Build/Workers/{chunk-ELXGXAYS.js → chunk-HHN2M3ES.js} +10 -10
  73. package/Build/Workers/chunk-HHUKBKWS.js +414 -0
  74. package/Build/Workers/chunk-HLIXASKN.js +476 -0
  75. package/Build/Workers/chunk-HM4MH5IG.js +138 -0
  76. package/Build/Workers/{chunk-2APW7KRS.js → chunk-IB2XQV6U.js} +2 -2
  77. package/Build/Workers/{chunk-6XJO625E.js → chunk-IEBTKCMB.js} +3 -3
  78. package/Build/Workers/{chunk-Z356SW7E.js → chunk-IXM65GBF.js} +4 -4
  79. package/Build/Workers/{chunk-LPM2FVDN.js → chunk-IYAZCFAC.js} +6 -6
  80. package/Build/Workers/{chunk-XJKMLTSH.js → chunk-IYXLSOLF.js} +10 -10
  81. package/Build/Workers/{chunk-6QVMKRJ4.js → chunk-JJD7S2CV.js} +18 -18
  82. package/Build/Workers/{chunk-D7TGILR3.js → chunk-JRPAFYGJ.js} +17 -17
  83. package/Build/Workers/{chunk-F5LAPCFC.js → chunk-K6PDZWHZ.js} +5 -5
  84. package/Build/Workers/{chunk-OAOREOSO.js → chunk-KWFCDTXS.js} +9 -9
  85. package/Build/Workers/{chunk-JURLMTV2.js → chunk-LENXRROQ.js} +14 -14
  86. package/Build/Workers/{chunk-BJ6WXQOW.js → chunk-LPJHTJDQ.js} +4 -4
  87. package/Build/Workers/{chunk-AIW5F22O.js → chunk-LRW2QXMW.js} +6 -6
  88. package/Build/Workers/{chunk-EKMWNF4U.js → chunk-MB2ZJQR3.js} +1 -1
  89. package/Build/Workers/{chunk-55IROWAX.js → chunk-MCNY7SPD.js} +5 -5
  90. package/Build/Workers/{chunk-S3AE3MZZ.js → chunk-MHEKNHOF.js} +13 -13
  91. package/Build/Workers/chunk-MRLJERN3.js +114 -0
  92. package/Build/Workers/{chunk-5CSRWY7L.js → chunk-MWN26ZEM.js} +1 -1
  93. package/Build/Workers/{chunk-PLLZB3R4.js → chunk-NIWB6UMY.js} +7 -7
  94. package/Build/Workers/{chunk-MLFVICFZ.js → chunk-NOJAQPXU.js} +4 -4
  95. package/Build/Workers/{chunk-5VZISKJF.js → chunk-O5QH7XD5.js} +1 -1
  96. package/Build/Workers/chunk-OAFZ26QL.js +837 -0
  97. package/Build/Workers/{chunk-AVSQILVI.js → chunk-OBM2JYMG.js} +1 -1
  98. package/Build/Workers/{chunk-245NZYCR.js → chunk-OBQVOEPZ.js} +5 -5
  99. package/Build/Workers/chunk-OC63Z35M.js +280 -0
  100. package/Build/Workers/{chunk-EDIUN7V3.js → chunk-ODZZZGXK.js} +7 -7
  101. package/Build/Workers/chunk-OEAC5XUG.js +73 -0
  102. package/Build/Workers/chunk-OQK27J4J.js +139 -0
  103. package/Build/Workers/{chunk-LN4NMLYY.js → chunk-OTDNJAYJ.js} +1 -1
  104. package/Build/Workers/{chunk-JFO3ELF3.js → chunk-PGYA2CMO.js} +6 -6
  105. package/Build/Workers/{chunk-64W2RXA4.js → chunk-PSDWIJMU.js} +7 -7
  106. package/Build/Workers/chunk-PW3GQAXA.js +3514 -0
  107. package/Build/Workers/chunk-Q2YRPH7V.js +1067 -0
  108. package/Build/Workers/{chunk-KKYQRQ57.js → chunk-QDNIPHD7.js} +12 -12
  109. package/Build/Workers/{chunk-WO5ZNC7S.js → chunk-QEGQDFX2.js} +10 -10
  110. package/Build/Workers/chunk-QY55DT53.js +97 -0
  111. package/Build/Workers/{chunk-BOV6T7FO.js → chunk-R3PTQZ6H.js} +2 -2
  112. package/Build/Workers/chunk-R5U3MYPS.js +198 -0
  113. package/Build/Workers/{chunk-IDVURFRN.js → chunk-RJIH4MDC.js} +8 -8
  114. package/Build/Workers/chunk-RO7SDGOD.js +352 -0
  115. package/Build/Workers/chunk-RT7PY6BH.js +2719 -0
  116. package/Build/Workers/{chunk-KH2OWUUA.js → chunk-RTJ6L5O4.js} +2 -2
  117. package/Build/Workers/{chunk-75UGCVME.js → chunk-SAD42JSM.js} +4 -4
  118. package/Build/Workers/chunk-SCNCHSTQ.js +642 -0
  119. package/Build/Workers/{chunk-U364CIW4.js → chunk-SFM3GNS2.js} +10 -10
  120. package/Build/Workers/{chunk-OFJRMGNX.js → chunk-SG56ZOPD.js} +11 -11
  121. package/Build/Workers/chunk-SHQEATE2.js +1045 -0
  122. package/Build/Workers/{chunk-FVYRV2T6.js → chunk-SLYUIIFB.js} +6 -6
  123. package/Build/Workers/chunk-SPL7JK6K.js +1054 -0
  124. package/Build/Workers/chunk-SQSWONTJ.js +241 -0
  125. package/Build/Workers/chunk-SRLJWNU2.js +368 -0
  126. package/Build/Workers/{chunk-QWV2DM66.js → chunk-SYCWSSRX.js} +4 -4
  127. package/Build/Workers/{chunk-HGIGANIQ.js → chunk-SZELHE7Q.js} +2 -2
  128. package/Build/Workers/{chunk-MQ62ZE2U.js → chunk-TBASKFFL.js} +5 -5
  129. package/Build/Workers/chunk-TDGGEIZE.js +398 -0
  130. package/Build/Workers/{chunk-HAWJ7FMN.js → chunk-TEZGNCXH.js} +8 -8
  131. package/Build/Workers/chunk-TIQZUI5N.js +44 -0
  132. package/Build/Workers/chunk-TKJHRY4V.js +511 -0
  133. package/Build/Workers/{chunk-KHKSE4WQ.js → chunk-TLXEQ5QY.js} +12 -12
  134. package/Build/Workers/chunk-U3VI26GL.js +162 -0
  135. package/Build/Workers/chunk-UIMHSWDJ.js +455 -0
  136. package/Build/Workers/chunk-UO3AWZR3.js +352 -0
  137. package/Build/Workers/{chunk-UOD5YNH3.js → chunk-UTXXZ7XH.js} +9 -9
  138. package/Build/Workers/{chunk-66YGZWBI.js → chunk-V2TRFTCU.js} +7 -7
  139. package/Build/Workers/chunk-V4I3IKAK.js +1460 -0
  140. package/Build/Workers/chunk-VLB25GGE.js +439 -0
  141. package/Build/Workers/{chunk-BN4WA7LX.js → chunk-W2EK42GB.js} +1 -1
  142. package/Build/Workers/chunk-W2OMUTYA.js +1800 -0
  143. package/Build/Workers/{chunk-KQIZ7AFF.js → chunk-W4DV7TAL.js} +8 -8
  144. package/Build/Workers/{chunk-P7M4VYFT.js → chunk-WFTPZ3ZX.js} +11 -11
  145. package/Build/Workers/chunk-WHOEQFL4.js +682 -0
  146. package/Build/Workers/{chunk-X65Y2JSA.js → chunk-WWLWTSMV.js} +1 -1
  147. package/Build/Workers/chunk-WX2ZANQC.js +940 -0
  148. package/Build/Workers/chunk-XFKTM6GN.js +2058 -0
  149. package/Build/Workers/chunk-XHNWVOIJ.js +219 -0
  150. package/Build/Workers/{chunk-DEIMB3B5.js → chunk-XNKQLSHI.js} +1 -1
  151. package/Build/Workers/chunk-XOXF37BU.js +1317 -0
  152. package/Build/Workers/chunk-YC6PFDXQ.js +8366 -0
  153. package/Build/Workers/chunk-YFJB3US4.js +102 -0
  154. package/Build/Workers/chunk-YMXATXRN.js +57 -0
  155. package/Build/Workers/chunk-YVRD2PO5.js +124 -0
  156. package/Build/Workers/chunk-Z24A5EMJ.js +387 -0
  157. package/Build/Workers/chunk-Z4IW5XUY.js +788 -0
  158. package/Build/Workers/chunk-Z5MHVJGN.js +778 -0
  159. package/Build/Workers/chunk-ZFHCP7RN.js +692 -0
  160. package/Build/Workers/{chunk-6H33B6OL.js → chunk-ZHHEFNHL.js} +1 -1
  161. package/Build/Workers/chunk-ZI5GDNEV.js +305 -0
  162. package/Build/Workers/chunk-ZYTMDBCR.js +1443 -0
  163. package/Build/Workers/combineGeometry.js +24 -24
  164. package/Build/Workers/createBoxGeometry.js +18 -18
  165. package/Build/Workers/createBoxOutlineGeometry.js +16 -16
  166. package/Build/Workers/createCircleGeometry.js +26 -26
  167. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  168. package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
  169. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
  170. package/Build/Workers/createCorridorGeometry.js +29 -29
  171. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  172. package/Build/Workers/createCylinderGeometry.js +20 -20
  173. package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
  174. package/Build/Workers/createEllipseGeometry.js +26 -26
  175. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  176. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  177. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  178. package/Build/Workers/createFrustumGeometry.js +18 -18
  179. package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
  180. package/Build/Workers/createGeometry.js +24 -24
  181. package/Build/Workers/createGroundPolylineGeometry.js +22 -22
  182. package/Build/Workers/createPlaneGeometry.js +16 -16
  183. package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
  184. package/Build/Workers/createPolygonGeometry.js +32 -32
  185. package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
  186. package/Build/Workers/createPolylineGeometry.js +25 -25
  187. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  188. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  189. package/Build/Workers/createRectangleGeometry.js +27 -27
  190. package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
  191. package/Build/Workers/createSimplePolylineGeometry.js +23 -23
  192. package/Build/Workers/createSphereGeometry.js +19 -19
  193. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  194. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  195. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  196. package/Build/Workers/createVectorTileGeometries.js +24 -24
  197. package/Build/Workers/createVectorTilePoints.js +13 -13
  198. package/Build/Workers/createVectorTilePolygons.js +22 -22
  199. package/Build/Workers/createVectorTilePolylines.js +14 -14
  200. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
  201. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
  202. package/Build/Workers/createVerticesFromHeightmap.js +22 -22
  203. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
  204. package/Build/Workers/createWallGeometry.js +24 -24
  205. package/Build/Workers/createWallOutlineGeometry.js +23 -23
  206. package/Build/Workers/decodeDraco.js +10 -10
  207. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  208. package/Build/Workers/decodeI3S.js +10 -10
  209. package/Build/Workers/gaussianSplatSorter.js +4 -4
  210. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  211. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  212. package/Build/Workers/transcodeKTX2.js +6 -6
  213. package/Build/Workers/transferTypedArrayTest.js +1 -1
  214. package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
  215. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
  216. package/Source/Scene/Cesium3DTileset.js +4121 -3932
  217. package/Source/Scene/Model/BarycentricWireframePipelineStage.js +355 -0
  218. package/Source/Scene/Model/Model.js +3584 -3340
  219. package/Source/Scene/Model/Model3DTileContent.js +568 -551
  220. package/Source/Scene/Model/ModelRuntimePrimitive.js +391 -380
  221. package/Source/Scene/Model/WireframePipelineStage.js +122 -118
  222. package/Source/Shaders/Model/ModelFS.glsl +14 -0
  223. package/Source/Shaders/Model/ModelFS.js +14 -0
  224. package/Source/Shaders/Model/ModelVS.glsl +4 -0
  225. package/Source/Shaders/Model/ModelVS.js +4 -0
  226. package/index.d.ts +891 -697
  227. package/index.js +3 -2
  228. package/package.json +1 -1
@@ -1,118 +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
- // Applying normal mapping to the lines will result in rendering
40
- // errors on Linux. This define is added to disable normal
41
- // mapping in the shader.
42
- const shaderBuilder = renderResources.shaderBuilder;
43
- shaderBuilder.addDefine(
44
- "HAS_WIREFRAME",
45
- undefined,
46
- ShaderDestination.FRAGMENT,
47
- );
48
-
49
- const model = renderResources.model;
50
- const wireframeIndexBuffer = createWireframeIndexBuffer(
51
- primitive,
52
- renderResources.indices,
53
- frameState,
54
- );
55
- model._pipelineResources.push(wireframeIndexBuffer);
56
- renderResources.wireframeIndexBuffer = wireframeIndexBuffer;
57
-
58
- // We only need to count memory for the generated buffer. In WebGL 1, the CPU
59
- // copy of the original indices is already counted in the geometry stage,
60
- // and in WebGL 2, the CPU copy of the original indices (generated from the
61
- // data of the original buffer) is discarded after generating the wireframe
62
- // indices.
63
- const hasCpuCopy = false;
64
- model.statistics.addBuffer(wireframeIndexBuffer, hasCpuCopy);
65
-
66
- // Update render resources so we render LINES with the correct index count
67
- const originalPrimitiveType = renderResources.primitiveType;
68
- const originalCount = renderResources.count;
69
- renderResources.primitiveType = PrimitiveType.LINES;
70
- renderResources.count = WireframeIndexGenerator.getWireframeIndicesCount(
71
- originalPrimitiveType,
72
- originalCount,
73
- );
74
- };
75
-
76
- function createWireframeIndexBuffer(primitive, indices, frameState) {
77
- const positionAttribute = ModelUtility.getAttributeBySemantic(
78
- primitive,
79
- VertexAttributeSemantic.POSITION,
80
- );
81
- const vertexCount = positionAttribute.count;
82
- const webgl2 = frameState.context.webgl2;
83
-
84
- let originalIndices;
85
- if (defined(indices)) {
86
- const indicesBuffer = indices.buffer;
87
- const indicesCount = indices.count;
88
- if (defined(indicesBuffer) && webgl2) {
89
- const useUint8Array = indicesBuffer.sizeInBytes === indicesCount;
90
- originalIndices = useUint8Array
91
- ? new Uint8Array(indicesCount)
92
- : IndexDatatype.createTypedArray(vertexCount, indicesCount);
93
-
94
- indicesBuffer.getBufferData(originalIndices);
95
- } else {
96
- originalIndices = indices.typedArray;
97
- }
98
- }
99
-
100
- const primitiveType = primitive.primitiveType;
101
- const wireframeIndices = WireframeIndexGenerator.createWireframeIndices(
102
- primitiveType,
103
- vertexCount,
104
- originalIndices,
105
- );
106
- const indexDatatype = IndexDatatype.fromSizeInBytes(
107
- wireframeIndices.BYTES_PER_ELEMENT,
108
- );
109
-
110
- return Buffer.createIndexBuffer({
111
- context: frameState.context,
112
- typedArray: wireframeIndices,
113
- usage: BufferUsage.STATIC_DRAW,
114
- indexDatatype: indexDatatype,
115
- });
116
- }
117
-
118
- 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;
@@ -128,6 +128,20 @@ void main()
128
128
  // When not picking metadata END
129
129
  //========================================================================
130
130
 
131
+ #ifdef HAS_BARYCENTRIC_WIREFRAME
132
+ vec3 d = fwidth(v_barycentric);
133
+ vec3 a3 = smoothstep(vec3(0.0), d * u_wireframeWidth, v_barycentric);
134
+ float edge = min(min(a3.x, a3.y), a3.z);
135
+
136
+ #ifdef WIREFRAME_OVERLAY
137
+ color.rgb = mix(u_wireframeColor.rgb, color.rgb, edge);
138
+ color.a *= u_wireframeFillAlpha;
139
+ #else
140
+ color.rgb = mix(u_wireframeColor.rgb, color.rgb, edge);
141
+ color.a = mix(u_wireframeColor.a, color.a * u_wireframeFillAlpha, edge);
142
+ #endif
143
+ #endif
144
+
131
145
  out_FragColor = color;
132
146
  }
133
147
 
@@ -128,6 +128,20 @@ void main()\n\
128
128
  #endif\n\
129
129
  // When not picking metadata END\n\
130
130
  //========================================================================\n\
131
+ \n\
132
+ #ifdef HAS_BARYCENTRIC_WIREFRAME\n\
133
+ vec3 d = fwidth(v_barycentric);\n\
134
+ vec3 a3 = smoothstep(vec3(0.0), d * u_wireframeWidth, v_barycentric);\n\
135
+ float edge = min(min(a3.x, a3.y), a3.z);\n\
136
+ \n\
137
+ #ifdef WIREFRAME_OVERLAY\n\
138
+ color.rgb = mix(u_wireframeColor.rgb, color.rgb, edge);\n\
139
+ color.a *= u_wireframeFillAlpha;\n\
140
+ #else\n\
141
+ color.rgb = mix(u_wireframeColor.rgb, color.rgb, edge);\n\
142
+ color.a = mix(u_wireframeColor.a, color.a * u_wireframeFillAlpha, edge);\n\
143
+ #endif\n\
144
+ #endif\n\
131
145
  \n\
132
146
  out_FragColor = color;\n\
133
147
  }\n\
@@ -158,4 +158,8 @@ void main()
158
158
  #ifdef HAS_POINT_CLOUD_SHOW_STYLE
159
159
  v_pointCloudShow = show;
160
160
  #endif
161
+
162
+ #ifdef HAS_BARYCENTRIC_WIREFRAME
163
+ v_barycentric = a_barycentric;
164
+ #endif
161
165
  }
@@ -159,5 +159,9 @@ void main()\n\
159
159
  #ifdef HAS_POINT_CLOUD_SHOW_STYLE\n\
160
160
  v_pointCloudShow = show;\n\
161
161
  #endif\n\
162
+ \n\
163
+ #ifdef HAS_BARYCENTRIC_WIREFRAME\n\
164
+ v_barycentric = a_barycentric;\n\
165
+ #endif\n\
162
166
  }\n\
163
167
  ";