@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.
- package/Build/Workers/{chunk-HAY6YE7M.js → chunk-23CHWHW6.js} +4 -4
- package/Build/Workers/{chunk-3K2PK2OU.js → chunk-243UEBJF.js} +10 -10
- package/Build/Workers/{chunk-TSAJNE4K.js → chunk-27JI7F7B.js} +2 -2
- package/Build/Workers/{chunk-OVPPHDU7.js → chunk-2OWEFNS4.js} +4 -4
- package/Build/Workers/{chunk-YBVMSCW4.js → chunk-2VN5W6HA.js} +5 -5
- package/Build/Workers/{chunk-OOB2KZC6.js → chunk-2YAONTGQ.js} +7 -7
- package/Build/Workers/{chunk-JH27ZGLN.js → chunk-324L25HV.js} +6 -6
- package/Build/Workers/{chunk-6LZBBEA7.js → chunk-3EZBCDBK.js} +9 -9
- package/Build/Workers/{chunk-25BA4527.js → chunk-3JPA6GA3.js} +12 -12
- package/Build/Workers/{chunk-DP76S3IQ.js → chunk-3NSMZ3XW.js} +17 -17
- package/Build/Workers/chunk-3WRJXCJS.js +497 -0
- package/Build/Workers/{chunk-SBFTVHRW.js → chunk-3ZJ6X3BW.js} +5 -5
- package/Build/Workers/{chunk-B2VFNYD7.js → chunk-42I3QSKJ.js} +1 -1
- package/Build/Workers/{chunk-BXBGWQ3Z.js → chunk-4BJHO56J.js} +6 -6
- package/Build/Workers/{chunk-YPGJSFOO.js → chunk-4DIL24GG.js} +5 -5
- package/Build/Workers/{chunk-XOVHLPKW.js → chunk-4FEDW3WT.js} +8 -8
- package/Build/Workers/{chunk-WAS3IHIQ.js → chunk-4GPHI5UY.js} +10 -10
- package/Build/Workers/{chunk-3M5CRHSG.js → chunk-4NAHNN5G.js} +10 -10
- package/Build/Workers/{chunk-KFMCOG26.js → chunk-4SC4KVID.js} +10 -10
- package/Build/Workers/{chunk-J3FBVUY4.js → chunk-53AFSDGM.js} +1 -1
- package/Build/Workers/{chunk-Q2DXNFYW.js → chunk-54AFUJNV.js} +11 -11
- package/Build/Workers/{chunk-7NCJH26L.js → chunk-54SSO7NS.js} +5 -5
- package/Build/Workers/{chunk-2BLQ3B4Q.js → chunk-553BNJPP.js} +8 -8
- package/Build/Workers/{chunk-GDIBU55R.js → chunk-56MKFDJH.js} +12 -12
- package/Build/Workers/{chunk-K4IMD7KH.js → chunk-5DPCF65K.js} +5 -5
- package/Build/Workers/{chunk-5QTPACZQ.js → chunk-5MCUZL44.js} +6 -6
- package/Build/Workers/{chunk-VIYQ56Z7.js → chunk-5SVTAJRH.js} +12 -12
- package/Build/Workers/chunk-5T4DXPEL.js +299 -0
- package/Build/Workers/{chunk-56XTN5NJ.js → chunk-5UHIRI2A.js} +2 -2
- package/Build/Workers/{chunk-ACH67MPW.js → chunk-5W4ISZGQ.js} +14 -14
- package/Build/Workers/{chunk-KVDSJXRK.js → chunk-64VDO4BW.js} +6 -6
- package/Build/Workers/{chunk-5WAG5YKS.js → chunk-664SI23B.js} +12 -12
- package/Build/Workers/{chunk-TO7TWUET.js → chunk-6AUSOZOL.js} +7 -7
- package/Build/Workers/{chunk-SOR7PD4V.js → chunk-6GNLKYQO.js} +6 -6
- package/Build/Workers/{chunk-POY6ZE32.js → chunk-6ZF4QOFM.js} +6 -6
- package/Build/Workers/{chunk-4HXPSZRC.js → chunk-763Q2YKY.js} +14 -14
- package/Build/Workers/chunk-7MMYV5PM.js +288 -0
- package/Build/Workers/{chunk-TDI7UQBO.js → chunk-7QPQGSS3.js} +5 -5
- package/Build/Workers/{chunk-IELTSYPZ.js → chunk-7R74V5Z3.js} +8 -8
- package/Build/Workers/{chunk-PHB5MRHM.js → chunk-7X6CLAD2.js} +9 -9
- package/Build/Workers/{chunk-PV5B2YNB.js → chunk-ADQVXDEJ.js} +16 -16
- package/Build/Workers/{chunk-TWF4XRZ6.js → chunk-AEURJQ3B.js} +2 -2
- package/Build/Workers/{chunk-WLREXLZ7.js → chunk-AMJRLIO3.js} +11 -11
- package/Build/Workers/{chunk-7B23DD46.js → chunk-ATC2WXI4.js} +17 -17
- package/Build/Workers/{chunk-KVE5EAPO.js → chunk-B5ZUBUPB.js} +14 -14
- package/Build/Workers/{chunk-4Z26IS65.js → chunk-BCYABDWF.js} +18 -18
- package/Build/Workers/{chunk-E2CARZA7.js → chunk-BHTWF7UG.js} +2 -2
- package/Build/Workers/{chunk-UUJXSLQ2.js → chunk-BLZILZWF.js} +16 -16
- package/Build/Workers/{chunk-J4MIJCN5.js → chunk-CCPKBCZD.js} +6 -6
- package/Build/Workers/chunk-CMAG5O53.js +1483 -0
- package/Build/Workers/{chunk-KUAWPGSB.js → chunk-CTARL7CY.js} +13 -13
- package/Build/Workers/{chunk-FJREGHFG.js → chunk-D3FNWB3Q.js} +4 -4
- package/Build/Workers/{chunk-HI6X33GO.js → chunk-DAYNPAVN.js} +2 -2
- package/Build/Workers/{chunk-WMGESUDW.js → chunk-DIA4J2DB.js} +3 -3
- package/Build/Workers/{chunk-EISI2CR2.js → chunk-DKJMD2HX.js} +6 -6
- package/Build/Workers/{chunk-AL22JVIA.js → chunk-DVTKM7FF.js} +4 -4
- package/Build/Workers/{chunk-KBAGFNQ4.js → chunk-E5BSDIGY.js} +5 -5
- package/Build/Workers/{chunk-HU5P7PMU.js → chunk-EJVGOIOW.js} +7 -7
- package/Build/Workers/chunk-ERYOZBVC.js +171 -0
- package/Build/Workers/{chunk-UYT2PBMV.js → chunk-ET7LWDHA.js} +2 -2
- package/Build/Workers/{chunk-5BIQOSBV.js → chunk-FSYQE5XE.js} +1 -1
- package/Build/Workers/{chunk-ZV42SJKS.js → chunk-FTHCZAWE.js} +2 -2
- package/Build/Workers/{chunk-DSBEWMOQ.js → chunk-FTXEOX64.js} +17 -17
- package/Build/Workers/{chunk-R73BHGGI.js → chunk-FUFHIXPT.js} +4 -4
- package/Build/Workers/{chunk-I76SRIKN.js → chunk-G2KELS4I.js} +4 -4
- package/Build/Workers/{chunk-2CAIFJD5.js → chunk-G7PGTG3P.js} +13 -13
- package/Build/Workers/{chunk-KXB3AARU.js → chunk-GCZNJHST.js} +5 -5
- package/Build/Workers/{chunk-UTWLMOPM.js → chunk-GJFIEALZ.js} +13 -13
- package/Build/Workers/{chunk-VR2L2Y4Z.js → chunk-GZMTBQM2.js} +4 -4
- package/Build/Workers/{chunk-DBKYAGM6.js → chunk-HAR6Y2HP.js} +2 -2
- package/Build/Workers/{chunk-NOH3R3YY.js → chunk-HC6DDPFU.js} +7 -7
- package/Build/Workers/{chunk-ELXGXAYS.js → chunk-HHN2M3ES.js} +10 -10
- package/Build/Workers/chunk-HHUKBKWS.js +414 -0
- package/Build/Workers/chunk-HLIXASKN.js +476 -0
- package/Build/Workers/chunk-HM4MH5IG.js +138 -0
- package/Build/Workers/{chunk-2APW7KRS.js → chunk-IB2XQV6U.js} +2 -2
- package/Build/Workers/{chunk-6XJO625E.js → chunk-IEBTKCMB.js} +3 -3
- package/Build/Workers/{chunk-Z356SW7E.js → chunk-IXM65GBF.js} +4 -4
- package/Build/Workers/{chunk-LPM2FVDN.js → chunk-IYAZCFAC.js} +6 -6
- package/Build/Workers/{chunk-XJKMLTSH.js → chunk-IYXLSOLF.js} +10 -10
- package/Build/Workers/{chunk-6QVMKRJ4.js → chunk-JJD7S2CV.js} +18 -18
- package/Build/Workers/{chunk-D7TGILR3.js → chunk-JRPAFYGJ.js} +17 -17
- package/Build/Workers/{chunk-F5LAPCFC.js → chunk-K6PDZWHZ.js} +5 -5
- package/Build/Workers/{chunk-OAOREOSO.js → chunk-KWFCDTXS.js} +9 -9
- package/Build/Workers/{chunk-JURLMTV2.js → chunk-LENXRROQ.js} +14 -14
- package/Build/Workers/{chunk-BJ6WXQOW.js → chunk-LPJHTJDQ.js} +4 -4
- package/Build/Workers/{chunk-AIW5F22O.js → chunk-LRW2QXMW.js} +6 -6
- package/Build/Workers/{chunk-EKMWNF4U.js → chunk-MB2ZJQR3.js} +1 -1
- package/Build/Workers/{chunk-55IROWAX.js → chunk-MCNY7SPD.js} +5 -5
- package/Build/Workers/{chunk-S3AE3MZZ.js → chunk-MHEKNHOF.js} +13 -13
- package/Build/Workers/chunk-MRLJERN3.js +114 -0
- package/Build/Workers/{chunk-5CSRWY7L.js → chunk-MWN26ZEM.js} +1 -1
- package/Build/Workers/{chunk-PLLZB3R4.js → chunk-NIWB6UMY.js} +7 -7
- package/Build/Workers/{chunk-MLFVICFZ.js → chunk-NOJAQPXU.js} +4 -4
- package/Build/Workers/{chunk-5VZISKJF.js → chunk-O5QH7XD5.js} +1 -1
- package/Build/Workers/chunk-OAFZ26QL.js +837 -0
- package/Build/Workers/{chunk-AVSQILVI.js → chunk-OBM2JYMG.js} +1 -1
- package/Build/Workers/{chunk-245NZYCR.js → chunk-OBQVOEPZ.js} +5 -5
- package/Build/Workers/chunk-OC63Z35M.js +280 -0
- package/Build/Workers/{chunk-EDIUN7V3.js → chunk-ODZZZGXK.js} +7 -7
- package/Build/Workers/chunk-OEAC5XUG.js +73 -0
- package/Build/Workers/chunk-OQK27J4J.js +139 -0
- package/Build/Workers/{chunk-LN4NMLYY.js → chunk-OTDNJAYJ.js} +1 -1
- package/Build/Workers/{chunk-JFO3ELF3.js → chunk-PGYA2CMO.js} +6 -6
- package/Build/Workers/{chunk-64W2RXA4.js → chunk-PSDWIJMU.js} +7 -7
- package/Build/Workers/chunk-PW3GQAXA.js +3514 -0
- package/Build/Workers/chunk-Q2YRPH7V.js +1067 -0
- package/Build/Workers/{chunk-KKYQRQ57.js → chunk-QDNIPHD7.js} +12 -12
- package/Build/Workers/{chunk-WO5ZNC7S.js → chunk-QEGQDFX2.js} +10 -10
- package/Build/Workers/chunk-QY55DT53.js +97 -0
- package/Build/Workers/{chunk-BOV6T7FO.js → chunk-R3PTQZ6H.js} +2 -2
- package/Build/Workers/chunk-R5U3MYPS.js +198 -0
- package/Build/Workers/{chunk-IDVURFRN.js → chunk-RJIH4MDC.js} +8 -8
- package/Build/Workers/chunk-RO7SDGOD.js +352 -0
- package/Build/Workers/chunk-RT7PY6BH.js +2719 -0
- package/Build/Workers/{chunk-KH2OWUUA.js → chunk-RTJ6L5O4.js} +2 -2
- package/Build/Workers/{chunk-75UGCVME.js → chunk-SAD42JSM.js} +4 -4
- package/Build/Workers/chunk-SCNCHSTQ.js +642 -0
- package/Build/Workers/{chunk-U364CIW4.js → chunk-SFM3GNS2.js} +10 -10
- package/Build/Workers/{chunk-OFJRMGNX.js → chunk-SG56ZOPD.js} +11 -11
- package/Build/Workers/chunk-SHQEATE2.js +1045 -0
- package/Build/Workers/{chunk-FVYRV2T6.js → chunk-SLYUIIFB.js} +6 -6
- package/Build/Workers/chunk-SPL7JK6K.js +1054 -0
- package/Build/Workers/chunk-SQSWONTJ.js +241 -0
- package/Build/Workers/chunk-SRLJWNU2.js +368 -0
- package/Build/Workers/{chunk-QWV2DM66.js → chunk-SYCWSSRX.js} +4 -4
- package/Build/Workers/{chunk-HGIGANIQ.js → chunk-SZELHE7Q.js} +2 -2
- package/Build/Workers/{chunk-MQ62ZE2U.js → chunk-TBASKFFL.js} +5 -5
- package/Build/Workers/chunk-TDGGEIZE.js +398 -0
- package/Build/Workers/{chunk-HAWJ7FMN.js → chunk-TEZGNCXH.js} +8 -8
- package/Build/Workers/chunk-TIQZUI5N.js +44 -0
- package/Build/Workers/chunk-TKJHRY4V.js +511 -0
- package/Build/Workers/{chunk-KHKSE4WQ.js → chunk-TLXEQ5QY.js} +12 -12
- package/Build/Workers/chunk-U3VI26GL.js +162 -0
- package/Build/Workers/chunk-UIMHSWDJ.js +455 -0
- package/Build/Workers/chunk-UO3AWZR3.js +352 -0
- package/Build/Workers/{chunk-UOD5YNH3.js → chunk-UTXXZ7XH.js} +9 -9
- package/Build/Workers/{chunk-66YGZWBI.js → chunk-V2TRFTCU.js} +7 -7
- package/Build/Workers/chunk-V4I3IKAK.js +1460 -0
- package/Build/Workers/chunk-VLB25GGE.js +439 -0
- package/Build/Workers/{chunk-BN4WA7LX.js → chunk-W2EK42GB.js} +1 -1
- package/Build/Workers/chunk-W2OMUTYA.js +1800 -0
- package/Build/Workers/{chunk-KQIZ7AFF.js → chunk-W4DV7TAL.js} +8 -8
- package/Build/Workers/{chunk-P7M4VYFT.js → chunk-WFTPZ3ZX.js} +11 -11
- package/Build/Workers/chunk-WHOEQFL4.js +682 -0
- package/Build/Workers/{chunk-X65Y2JSA.js → chunk-WWLWTSMV.js} +1 -1
- package/Build/Workers/chunk-WX2ZANQC.js +940 -0
- package/Build/Workers/chunk-XFKTM6GN.js +2058 -0
- package/Build/Workers/chunk-XHNWVOIJ.js +219 -0
- package/Build/Workers/{chunk-DEIMB3B5.js → chunk-XNKQLSHI.js} +1 -1
- package/Build/Workers/chunk-XOXF37BU.js +1317 -0
- package/Build/Workers/chunk-YC6PFDXQ.js +8366 -0
- package/Build/Workers/chunk-YFJB3US4.js +102 -0
- package/Build/Workers/chunk-YMXATXRN.js +57 -0
- package/Build/Workers/chunk-YVRD2PO5.js +124 -0
- package/Build/Workers/chunk-Z24A5EMJ.js +387 -0
- package/Build/Workers/chunk-Z4IW5XUY.js +788 -0
- package/Build/Workers/chunk-Z5MHVJGN.js +778 -0
- package/Build/Workers/chunk-ZFHCP7RN.js +692 -0
- package/Build/Workers/{chunk-6H33B6OL.js → chunk-ZHHEFNHL.js} +1 -1
- package/Build/Workers/chunk-ZI5GDNEV.js +305 -0
- package/Build/Workers/chunk-ZYTMDBCR.js +1443 -0
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +16 -16
- package/Build/Workers/createCircleGeometry.js +26 -26
- package/Build/Workers/createCircleOutlineGeometry.js +19 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +29 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +24 -24
- package/Build/Workers/createGroundPolylineGeometry.js +22 -22
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +32 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
- package/Build/Workers/createPolylineGeometry.js +25 -25
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
- package/Build/Workers/createSimplePolylineGeometry.js +23 -23
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
- package/Build/Workers/createVerticesFromHeightmap.js +22 -22
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +24 -24
- package/Build/Workers/createWallOutlineGeometry.js +23 -23
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +10 -10
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
- package/Build/Workers/transcodeKTX2.js +6 -6
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Scene/Cesium3DTileset.js +4121 -3932
- package/Source/Scene/Model/BarycentricWireframePipelineStage.js +355 -0
- package/Source/Scene/Model/Model.js +3584 -3340
- package/Source/Scene/Model/Model3DTileContent.js +568 -551
- package/Source/Scene/Model/ModelRuntimePrimitive.js +391 -380
- package/Source/Scene/Model/WireframePipelineStage.js +122 -118
- package/Source/Shaders/Model/ModelFS.glsl +14 -0
- package/Source/Shaders/Model/ModelFS.js +14 -0
- package/Source/Shaders/Model/ModelVS.glsl +4 -0
- package/Source/Shaders/Model/ModelVS.js +4 -0
- package/index.d.ts +891 -697
- package/index.js +3 -2
- package/package.json +1 -1
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import Buffer from "../../Renderer/Buffer.js";
|
|
2
|
+
import BufferUsage from "../../Renderer/BufferUsage.js";
|
|
3
|
+
import Color from "../../Core/Color.js";
|
|
4
|
+
import ComponentDatatype from "../../Core/ComponentDatatype.js";
|
|
5
|
+
import defined from "../../Core/defined.js";
|
|
6
|
+
import IndexDatatype from "../../Core/IndexDatatype.js";
|
|
7
|
+
import ModelUtility from "./ModelUtility.js";
|
|
8
|
+
import PrimitiveType from "../../Core/PrimitiveType.js";
|
|
9
|
+
import ShaderDestination from "../../Renderer/ShaderDestination.js";
|
|
10
|
+
import VertexAttributeSemantic from "../VertexAttributeSemantic.js";
|
|
11
|
+
import oneTimeWarning from "../../Core/oneTimeWarning.js";
|
|
12
|
+
import AttributeType from "../AttributeType.js";
|
|
13
|
+
import Pass from "../../Renderer/Pass.js";
|
|
14
|
+
|
|
15
|
+
const BarycentricWireframePipelineStage = {
|
|
16
|
+
name: "BarycentricWireframePipelineStage",
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
BarycentricWireframePipelineStage.process = function (
|
|
20
|
+
renderResources,
|
|
21
|
+
primitive,
|
|
22
|
+
frameState,
|
|
23
|
+
) {
|
|
24
|
+
const shaderBuilder = renderResources.shaderBuilder;
|
|
25
|
+
const model = renderResources.model;
|
|
26
|
+
const webgl2 = frameState.context.webgl2;
|
|
27
|
+
|
|
28
|
+
if (!webgl2) {
|
|
29
|
+
oneTimeWarning(
|
|
30
|
+
"barycentric-wireframe-webgl1",
|
|
31
|
+
"Barycentric wireframe mode requires WebGL 2. Falling back to lines mode.",
|
|
32
|
+
);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const barycentricAttributeLocation = shaderBuilder.addAttribute(
|
|
37
|
+
"vec3",
|
|
38
|
+
"a_barycentric",
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
shaderBuilder.addDefine(
|
|
42
|
+
"HAS_BARYCENTRIC_WIREFRAME",
|
|
43
|
+
undefined,
|
|
44
|
+
ShaderDestination.BOTH,
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
if (model.debugWireframeOverlay) {
|
|
48
|
+
shaderBuilder.addDefine(
|
|
49
|
+
"WIREFRAME_OVERLAY",
|
|
50
|
+
undefined,
|
|
51
|
+
ShaderDestination.FRAGMENT,
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
shaderBuilder.addVarying("vec3", "v_barycentric");
|
|
56
|
+
|
|
57
|
+
shaderBuilder.addUniform(
|
|
58
|
+
"float",
|
|
59
|
+
"u_wireframeWidth",
|
|
60
|
+
ShaderDestination.FRAGMENT,
|
|
61
|
+
);
|
|
62
|
+
shaderBuilder.addUniform(
|
|
63
|
+
"vec4",
|
|
64
|
+
"u_wireframeColor",
|
|
65
|
+
ShaderDestination.FRAGMENT,
|
|
66
|
+
);
|
|
67
|
+
shaderBuilder.addUniform(
|
|
68
|
+
"float",
|
|
69
|
+
"u_wireframeFillAlpha",
|
|
70
|
+
ShaderDestination.FRAGMENT,
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
const stageUniforms = renderResources.uniformMap;
|
|
74
|
+
stageUniforms.u_wireframeWidth = function () {
|
|
75
|
+
return model.debugWireframeLineWidth ?? 1.0;
|
|
76
|
+
};
|
|
77
|
+
stageUniforms.u_wireframeColor = function () {
|
|
78
|
+
return model.debugWireframeColor ?? Color.WHITE;
|
|
79
|
+
};
|
|
80
|
+
stageUniforms.u_wireframeFillAlpha = function () {
|
|
81
|
+
return defined(model._debugWireframeFillColor)
|
|
82
|
+
? 1.0
|
|
83
|
+
: (model._debugWireframeFillAlpha ?? 1.0);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// Enable alpha blending when fillAlpha < 1.0 in preserve-original-color mode
|
|
87
|
+
if (!defined(model._debugWireframeFillColor) && (model._debugWireframeFillAlpha ?? 1.0) < 1.0) {
|
|
88
|
+
renderResources.alphaOptions.pass = Pass.TRANSLUCENT;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
deindexGeometryAndAddBarycentric(
|
|
92
|
+
renderResources,
|
|
93
|
+
primitive,
|
|
94
|
+
barycentricAttributeLocation,
|
|
95
|
+
frameState,
|
|
96
|
+
);
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
function getAttributeIndex(shaderBuilder, semantic, setIndex) {
|
|
100
|
+
return shaderBuilder.attributeLocations[semantic + "_" + (setIndex ?? 0)];
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function getComponentsFromType(type) {
|
|
104
|
+
return AttributeType.getNumberOfComponents(type);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function extractAttributeData(attribute) {
|
|
108
|
+
if (!defined(attribute)) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const typedArray = attribute.typedArray;
|
|
113
|
+
if (!defined(typedArray)) {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const componentDatatype = attribute.componentDatatype;
|
|
118
|
+
const componentsPerAttribute = getComponentsFromType(attribute.type);
|
|
119
|
+
const count = attribute.count;
|
|
120
|
+
const byteOffset = attribute.byteOffset ?? 0;
|
|
121
|
+
const byteStride = attribute.byteStride;
|
|
122
|
+
const componentSize = ComponentDatatype.getSizeInBytes(componentDatatype);
|
|
123
|
+
const stride = defined(byteStride) && byteStride !== 0
|
|
124
|
+
? byteStride
|
|
125
|
+
: componentsPerAttribute * componentSize;
|
|
126
|
+
|
|
127
|
+
const result = ComponentDatatype.createTypedArray(
|
|
128
|
+
componentDatatype,
|
|
129
|
+
count * componentsPerAttribute,
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
const baseOffset = byteOffset;
|
|
133
|
+
for (let i = 0; i < count; i++) {
|
|
134
|
+
const byteIndex = baseOffset + i * stride;
|
|
135
|
+
const elementIndex = byteIndex / componentSize;
|
|
136
|
+
for (let c = 0; c < componentsPerAttribute; c++) {
|
|
137
|
+
result[i * componentsPerAttribute + c] = typedArray[elementIndex + c];
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return {
|
|
142
|
+
data: result,
|
|
143
|
+
count: count,
|
|
144
|
+
componentsPerAttribute: componentsPerAttribute,
|
|
145
|
+
componentDatatype: componentDatatype,
|
|
146
|
+
normalized: attribute.normalized,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function extractIndicesData(primitive) {
|
|
151
|
+
const indices = primitive.indices;
|
|
152
|
+
if (!defined(indices)) {
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const typedArray = indices.typedArray;
|
|
157
|
+
if (defined(typedArray)) {
|
|
158
|
+
return typedArray;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function deindexAttributeData(
|
|
165
|
+
originalData,
|
|
166
|
+
originalIndices,
|
|
167
|
+
componentsPerAttribute,
|
|
168
|
+
componentDatatype,
|
|
169
|
+
) {
|
|
170
|
+
const newVertexCount = originalIndices.length;
|
|
171
|
+
const totalComponents = newVertexCount * componentsPerAttribute;
|
|
172
|
+
const newData = ComponentDatatype.createTypedArray(componentDatatype, totalComponents);
|
|
173
|
+
|
|
174
|
+
for (let i = 0; i < newVertexCount; i++) {
|
|
175
|
+
const oldIndex = originalIndices[i];
|
|
176
|
+
const srcOffset = oldIndex * componentsPerAttribute;
|
|
177
|
+
const dstOffset = i * componentsPerAttribute;
|
|
178
|
+
for (let c = 0; c < componentsPerAttribute; c++) {
|
|
179
|
+
newData[dstOffset + c] = originalData[srcOffset + c];
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return newData;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function createVertexBuffer(typedArray, frameState, model) {
|
|
187
|
+
const buffer = Buffer.createVertexBuffer({
|
|
188
|
+
context: frameState.context,
|
|
189
|
+
typedArray: typedArray,
|
|
190
|
+
usage: BufferUsage.STATIC_DRAW,
|
|
191
|
+
});
|
|
192
|
+
model._pipelineResources.push(buffer);
|
|
193
|
+
return buffer;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function deindexGeometryAndAddBarycentric(
|
|
197
|
+
renderResources,
|
|
198
|
+
primitive,
|
|
199
|
+
barycentricAttributeLocation,
|
|
200
|
+
frameState,
|
|
201
|
+
) {
|
|
202
|
+
const model = renderResources.model;
|
|
203
|
+
const shaderBuilder = renderResources.shaderBuilder;
|
|
204
|
+
const originalIndices = extractIndicesData(primitive);
|
|
205
|
+
const positionAttr = ModelUtility.getAttributeBySemantic(
|
|
206
|
+
primitive,
|
|
207
|
+
VertexAttributeSemantic.POSITION,
|
|
208
|
+
);
|
|
209
|
+
|
|
210
|
+
if (!defined(positionAttr)) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
const originalVertexCount = positionAttr.count;
|
|
215
|
+
|
|
216
|
+
if (!defined(originalIndices)) {
|
|
217
|
+
const barycentricValues = new Float32Array(originalVertexCount * 3);
|
|
218
|
+
for (let i = 0; i < originalVertexCount; i += 3) {
|
|
219
|
+
barycentricValues[i * 3] = 1.0;
|
|
220
|
+
barycentricValues[i * 3 + 1] = 0.0;
|
|
221
|
+
barycentricValues[i * 3 + 2] = 0.0;
|
|
222
|
+
|
|
223
|
+
barycentricValues[(i + 1) * 3] = 0.0;
|
|
224
|
+
barycentricValues[(i + 1) * 3 + 1] = 1.0;
|
|
225
|
+
barycentricValues[(i + 1) * 3 + 2] = 0.0;
|
|
226
|
+
|
|
227
|
+
barycentricValues[(i + 2) * 3] = 0.0;
|
|
228
|
+
barycentricValues[(i + 2) * 3 + 1] = 0.0;
|
|
229
|
+
barycentricValues[(i + 2) * 3 + 2] = 1.0;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
const barycentricBuffer = createVertexBuffer(barycentricValues, frameState, model);
|
|
233
|
+
|
|
234
|
+
const barycentricAttribute = {
|
|
235
|
+
index: barycentricAttributeLocation,
|
|
236
|
+
vertexBuffer: barycentricBuffer,
|
|
237
|
+
count: originalVertexCount,
|
|
238
|
+
componentsPerAttribute: 3,
|
|
239
|
+
componentDatatype: ComponentDatatype.FLOAT,
|
|
240
|
+
offsetInBytes: 0,
|
|
241
|
+
strideInBytes: 0,
|
|
242
|
+
normalize: false,
|
|
243
|
+
};
|
|
244
|
+
renderResources.attributes.push(barycentricAttribute);
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
const primitiveType = primitive.primitiveType;
|
|
249
|
+
if (!PrimitiveType.isTriangles(primitiveType)) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
const newVertexCount = originalIndices.length;
|
|
254
|
+
const newAttributes = [];
|
|
255
|
+
const originalAttributes = primitive.attributes;
|
|
256
|
+
|
|
257
|
+
for (let i = 0; i < originalAttributes.length; i++) {
|
|
258
|
+
const attr = originalAttributes[i];
|
|
259
|
+
const semantic = attr.semantic;
|
|
260
|
+
const setIndex = attr.setIndex;
|
|
261
|
+
|
|
262
|
+
let attributeIndex;
|
|
263
|
+
if (semantic === VertexAttributeSemantic.POSITION) {
|
|
264
|
+
attributeIndex = shaderBuilder.attributeLocations.position;
|
|
265
|
+
} else if (semantic === VertexAttributeSemantic.NORMAL) {
|
|
266
|
+
attributeIndex = shaderBuilder.attributeLocations.normal;
|
|
267
|
+
} else if (semantic === VertexAttributeSemantic.TANGENT) {
|
|
268
|
+
attributeIndex = shaderBuilder.attributeLocations.tangent;
|
|
269
|
+
} else if (semantic === VertexAttributeSemantic.TEXCOORD) {
|
|
270
|
+
attributeIndex = shaderBuilder.attributeLocations["texCoord_" + setIndex];
|
|
271
|
+
} else if (semantic === VertexAttributeSemantic.COLOR) {
|
|
272
|
+
attributeIndex = shaderBuilder.attributeLocations["color_" + setIndex];
|
|
273
|
+
} else if (semantic === VertexAttributeSemantic.JOINTS) {
|
|
274
|
+
attributeIndex = shaderBuilder.attributeLocations["joints_" + setIndex];
|
|
275
|
+
} else if (semantic === VertexAttributeSemantic.WEIGHTS) {
|
|
276
|
+
attributeIndex = shaderBuilder.attributeLocations["weights_" + setIndex];
|
|
277
|
+
} else {
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
if (!defined(attributeIndex)) {
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
const extracted = extractAttributeData(attr);
|
|
286
|
+
if (!defined(extracted)) {
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
const newData = deindexAttributeData(
|
|
291
|
+
extracted.data,
|
|
292
|
+
originalIndices,
|
|
293
|
+
extracted.componentsPerAttribute,
|
|
294
|
+
extracted.componentDatatype,
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
const newBuffer = createVertexBuffer(newData, frameState, model);
|
|
298
|
+
|
|
299
|
+
newAttributes.push({
|
|
300
|
+
index: attributeIndex,
|
|
301
|
+
vertexBuffer: newBuffer,
|
|
302
|
+
count: newVertexCount,
|
|
303
|
+
componentsPerAttribute: extracted.componentsPerAttribute,
|
|
304
|
+
componentDatatype: extracted.componentDatatype,
|
|
305
|
+
offsetInBytes: 0,
|
|
306
|
+
strideInBytes: 0,
|
|
307
|
+
normalize: extracted.normalized,
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
const instanceAttributes = renderResources.attributes.filter(
|
|
312
|
+
function (attr) {
|
|
313
|
+
return attr.instanceDivisor === 1;
|
|
314
|
+
},
|
|
315
|
+
);
|
|
316
|
+
for (let i = 0; i < instanceAttributes.length; i++) {
|
|
317
|
+
newAttributes.push(instanceAttributes[i]);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
const barycentricValues = new Float32Array(newVertexCount * 3);
|
|
321
|
+
for (let i = 0; i < newVertexCount; i += 3) {
|
|
322
|
+
barycentricValues[i * 3] = 1.0;
|
|
323
|
+
barycentricValues[i * 3 + 1] = 0.0;
|
|
324
|
+
barycentricValues[i * 3 + 2] = 0.0;
|
|
325
|
+
|
|
326
|
+
barycentricValues[(i + 1) * 3] = 0.0;
|
|
327
|
+
barycentricValues[(i + 1) * 3 + 1] = 1.0;
|
|
328
|
+
barycentricValues[(i + 1) * 3 + 2] = 0.0;
|
|
329
|
+
|
|
330
|
+
barycentricValues[(i + 2) * 3] = 0.0;
|
|
331
|
+
barycentricValues[(i + 2) * 3 + 1] = 0.0;
|
|
332
|
+
barycentricValues[(i + 2) * 3 + 2] = 1.0;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
const barycentricBuffer = createVertexBuffer(barycentricValues, frameState, model);
|
|
336
|
+
|
|
337
|
+
newAttributes.push({
|
|
338
|
+
index: barycentricAttributeLocation,
|
|
339
|
+
vertexBuffer: barycentricBuffer,
|
|
340
|
+
count: newVertexCount,
|
|
341
|
+
componentsPerAttribute: 3,
|
|
342
|
+
componentDatatype: ComponentDatatype.FLOAT,
|
|
343
|
+
offsetInBytes: 0,
|
|
344
|
+
strideInBytes: 0,
|
|
345
|
+
normalize: false,
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
renderResources.attributes = newAttributes;
|
|
349
|
+
renderResources.indices = undefined;
|
|
350
|
+
renderResources.count = newVertexCount;
|
|
351
|
+
renderResources.primitiveType = PrimitiveType.TRIANGLES;
|
|
352
|
+
renderResources.wireframeIndexBuffer = undefined;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
export default BarycentricWireframePipelineStage;
|