@cesium/engine 8.0.0 → 9.1.0
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/ThirdParty/Workers/z-worker-pako.js +7 -10
- package/Build/Workers/{chunk-F4HFJMGM.js → chunk-2CSEEWHN.js} +6 -6
- package/Build/Workers/{chunk-7TC63SJW.js → chunk-34DGOKCO.js} +10 -12
- package/Build/Workers/{chunk-7ZFGPDJA.js → chunk-3RZK5NNV.js} +4 -4
- package/Build/Workers/{chunk-M7ERACJJ.js → chunk-3S2MFY4B.js} +13 -13
- package/Build/Workers/{chunk-BROJAZRZ.js → chunk-4AJGCQFX.js} +13 -13
- package/Build/Workers/{chunk-2FWRMUTY.js → chunk-4KIUON73.js} +4 -4
- package/Build/Workers/{chunk-5QULIR53.js → chunk-4PHPQRSH.js} +4 -4
- package/Build/Workers/{chunk-X4356LRH.js → chunk-66E3H2KU.js} +12 -12
- package/Build/Workers/{chunk-G43QFN4Q.js → chunk-6HCAQOVK.js} +6 -6
- package/Build/Workers/{chunk-23UFSGND.js → chunk-7LPEGKOF.js} +7 -7
- package/Build/Workers/{chunk-DDUQAJ4P.js → chunk-7VZNXIKG.js} +7 -7
- package/Build/Workers/{chunk-JURN7NPV.js → chunk-A6NCZSL3.js} +19 -19
- package/Build/Workers/{chunk-ZT7KWISZ.js → chunk-AOFMPKUB.js} +4 -4
- package/Build/Workers/{chunk-BIKA3NRA.js → chunk-AOIKO5Y7.js} +5 -5
- package/Build/Workers/{chunk-YWTJ2B4B.js → chunk-BDUJXBVF.js} +1 -1
- package/Build/Workers/{chunk-OGXZVPPM.js → chunk-C5CE4OG6.js} +469 -6
- package/Build/Workers/{chunk-FNIRWHJB.js → chunk-CE6GTZ4I.js} +11 -13
- package/Build/Workers/{chunk-SH5USDPI.js → chunk-CYAJYEKW.js} +6 -6
- package/Build/Workers/{chunk-Y5UQJLYE.js → chunk-FOZQIHZK.js} +6 -6
- package/Build/Workers/{chunk-2FRVPMCS.js → chunk-G7CJQKKD.js} +7 -7
- package/Build/Workers/{chunk-EERJKOAF.js → chunk-GIFJ77E4.js} +4 -4
- package/Build/Workers/{chunk-FJKNFAKQ.js → chunk-I5TDPPC4.js} +7197 -5096
- package/Build/Workers/{chunk-3VAZEH7M.js → chunk-IBXGK4WV.js} +2 -2
- package/Build/Workers/{chunk-VOXYEYJT.js → chunk-JI2445T5.js} +11 -11
- package/Build/Workers/{chunk-PGSJK77E.js → chunk-KPY4F4BW.js} +6 -6
- package/Build/Workers/{chunk-I46ZRR5W.js → chunk-LVJCR7DH.js} +17 -17
- package/Build/Workers/{chunk-T3XIFPYR.js → chunk-LW7WGHEU.js} +16 -16
- package/Build/Workers/{chunk-HU6N6EXB.js → chunk-MWYZ64MH.js} +12 -11
- package/Build/Workers/chunk-NI2R52QD.js +961 -0
- package/Build/Workers/{chunk-SOWMRMWA.js → chunk-PEABJLCK.js} +1 -1
- package/Build/Workers/{chunk-EG6PTBY2.js → chunk-PK7TEP3J.js} +15 -15
- package/Build/Workers/{chunk-GRC2ZTAF.js → chunk-POLFRINT.js} +14 -14
- package/Build/Workers/{chunk-Z3TIFFGF.js → chunk-PS6AEMBR.js} +7 -7
- package/Build/Workers/{chunk-Y2ME2IJV.js → chunk-PWF3YJJ5.js} +13 -13
- package/Build/Workers/{chunk-2A75IWRS.js → chunk-QKF7XXEQ.js} +7 -7
- package/Build/Workers/{chunk-4H7PY4U5.js → chunk-RL73GOEF.js} +2 -2
- package/Build/Workers/{chunk-MDWEGWPA.js → chunk-RR7EOKGZ.js} +10 -10
- package/Build/Workers/{chunk-F3YA3Y2Z.js → chunk-S4XDCPKD.js} +1 -1
- package/Build/Workers/{chunk-PPH7OFP3.js → chunk-TMMOULW3.js} +5 -5
- package/Build/Workers/{chunk-XGI5BXZY.js → chunk-U4IMCOF5.js} +2 -2
- package/Build/Workers/{chunk-4DO5W5XZ.js → chunk-UAJEGIWA.js} +6 -6
- package/Build/Workers/{chunk-BBWDMCVU.js → chunk-UCPPWV64.js} +1 -1
- package/Build/Workers/{chunk-FZRIVR7Y.js → chunk-V7JB576Q.js} +5 -5
- package/Build/Workers/{chunk-2UPKWTMJ.js → chunk-WEGCQ5DY.js} +6 -6
- package/Build/Workers/{chunk-STW2DGFI.js → chunk-WFICTTOE.js} +2 -2
- package/Build/Workers/{chunk-LPR3YNP2.js → chunk-WWP3I7R5.js} +5 -5
- package/Build/Workers/{chunk-A5DWLWCY.js → chunk-XHLDDE65.js} +10 -10
- package/Build/Workers/{chunk-UEXTBDBE.js → chunk-XWML5Y7N.js} +11 -13
- package/Build/Workers/{chunk-EHWHNOEX.js → chunk-YLZTCEBJ.js} +1 -1
- package/Build/Workers/{chunk-34FXV7D7.js → chunk-ZC4AGBZK.js} +2 -2
- package/Build/Workers/{chunk-GATZHF3K.js → chunk-ZDP32RQI.js} +2 -2
- package/Build/Workers/{chunk-KKCR2YOP.js → chunk-ZWPIM77Q.js} +11 -11
- package/Build/Workers/combineGeometry.js +22 -24
- package/Build/Workers/createBoxGeometry.js +16 -18
- package/Build/Workers/createBoxOutlineGeometry.js +14 -16
- package/Build/Workers/createCircleGeometry.js +24 -26
- package/Build/Workers/createCircleOutlineGeometry.js +17 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +33 -34
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +29 -31
- package/Build/Workers/createCorridorGeometry.js +27 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +26 -28
- package/Build/Workers/createCylinderGeometry.js +18 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +16 -18
- package/Build/Workers/createEllipseGeometry.js +24 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +17 -19
- package/Build/Workers/createEllipsoidGeometry.js +17 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +16 -18
- package/Build/Workers/createFrustumGeometry.js +16 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -19
- package/Build/Workers/createGeometry.js +23 -25
- package/Build/Workers/createGroundPolylineGeometry.js +23 -25
- package/Build/Workers/createPlaneGeometry.js +14 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +13 -15
- package/Build/Workers/createPolygonGeometry.js +33 -35
- package/Build/Workers/createPolygonOutlineGeometry.js +28 -30
- package/Build/Workers/createPolylineGeometry.js +23 -25
- package/Build/Workers/createPolylineVolumeGeometry.js +29 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +25 -27
- package/Build/Workers/createRectangleGeometry.js +27 -29
- package/Build/Workers/createRectangleOutlineGeometry.js +18 -20
- package/Build/Workers/createSimplePolylineGeometry.js +21 -23
- package/Build/Workers/createSphereGeometry.js +17 -19
- package/Build/Workers/createSphereOutlineGeometry.js +16 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -16
- package/Build/Workers/createVectorTileGeometries.js +22 -24
- package/Build/Workers/createVectorTilePoints.js +12 -12
- package/Build/Workers/createVectorTilePolygons.js +20 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -16
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +23 -25
- package/Build/Workers/createVerticesFromHeightmap.js +23 -25
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -22
- package/Build/Workers/createWallGeometry.js +22 -24
- package/Build/Workers/createWallOutlineGeometry.js +21 -23
- package/Build/Workers/decodeDraco.js +11 -11
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +10 -11
- package/Build/Workers/transcodeKTX2.js +8 -8
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +20 -22
- package/Source/Core/Check.d.ts +127 -0
- package/Source/Core/Check.js +0 -1
- package/Source/Core/Geometry.js +1 -1
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/PixelFormat.js +1 -0
- package/Source/Core/PolygonGeometry.js +1 -1
- package/Source/Core/Rectangle.js +89 -0
- package/Source/Core/VerticalExaggeration.js +2 -1
- package/Source/DataSources/DataSourceDisplay.js +5 -0
- package/Source/Renderer/ShaderBuilder.js +6 -3
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/Billboard.js +37 -3
- package/Source/Scene/BillboardCollection.js +1 -1
- package/Source/Scene/BingMapsImageryProvider.js +4 -0
- package/Source/Scene/Cesium3DTile.js +65 -0
- package/Source/Scene/Cesium3DTilesVoxelProvider.js +2 -9
- package/Source/Scene/Cesium3DTileset.js +52 -40
- package/Source/Scene/ClippingPolygon.js +212 -0
- package/Source/Scene/ClippingPolygonCollection.js +968 -0
- package/Source/Scene/Globe.js +14 -67
- package/Source/Scene/GlobeSurfaceShaderSet.js +81 -15
- package/Source/Scene/GlobeSurfaceTileProvider.js +81 -1
- package/Source/Scene/Label.js +33 -0
- package/Source/Scene/LabelCollection.js +2 -1
- package/Source/Scene/Model/Model.js +83 -0
- package/Source/Scene/Model/Model3DTileContent.js +21 -0
- package/Source/Scene/Model/ModelClippingPolygonsPipelineStage.js +92 -0
- package/Source/Scene/Model/ModelSceneGraph.js +5 -0
- package/Source/Scene/Primitive.js +0 -3
- package/Source/Scene/SensorVolumePortionToDisplay.js +1 -1
- package/Source/Scene/Terrain.js +2 -2
- package/Source/Scene/VoxelBoxShape.js +0 -15
- package/Source/Scene/VoxelCylinderShape.js +14 -131
- package/Source/Scene/VoxelEllipsoidShape.js +136 -227
- package/Source/Scene/VoxelPrimitive.js +106 -14
- package/Source/Scene/VoxelRenderResources.js +9 -3
- package/Source/Scene/VoxelShape.js +0 -10
- package/Source/Scene/processVoxelProperties.js +1 -0
- package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
- package/Source/Shaders/Builtin/Functions/clipPolygons.glsl +37 -0
- package/Source/Shaders/Builtin/Functions/clipPolygons.js +39 -0
- package/Source/Shaders/Builtin/Functions/unpackClippingExtents.glsl +14 -0
- package/Source/Shaders/Builtin/Functions/unpackClippingExtents.js +15 -0
- package/Source/Shaders/GlobeFS.glsl +12 -0
- package/Source/Shaders/GlobeFS.js +12 -0
- package/Source/Shaders/GlobeVS.glsl +32 -0
- package/Source/Shaders/GlobeVS.js +32 -0
- package/Source/Shaders/Model/GeometryStageVS.glsl +1 -1
- package/Source/Shaders/Model/GeometryStageVS.js +1 -1
- package/Source/Shaders/Model/ModelClippingPolygonsStageFS.glsl +6 -0
- package/Source/Shaders/Model/ModelClippingPolygonsStageFS.js +8 -0
- package/Source/Shaders/Model/ModelClippingPolygonsStageVS.glsl +27 -0
- package/Source/Shaders/Model/ModelClippingPolygonsStageVS.js +29 -0
- package/Source/Shaders/Model/ModelFS.glsl +6 -0
- package/Source/Shaders/Model/ModelFS.js +7 -1
- package/Source/Shaders/Model/ModelVS.glsl +4 -0
- package/Source/Shaders/Model/ModelVS.js +4 -0
- package/Source/Shaders/PolygonSignedDistanceFS.glsl +100 -0
- package/Source/Shaders/PolygonSignedDistanceFS.js +101 -0
- package/Source/Shaders/Voxels/IntersectBox.glsl +21 -47
- package/Source/Shaders/Voxels/IntersectBox.js +21 -47
- package/Source/Shaders/Voxels/IntersectClippingPlanes.glsl +1 -1
- package/Source/Shaders/Voxels/IntersectClippingPlanes.js +1 -1
- package/Source/Shaders/Voxels/IntersectCylinder.glsl +66 -96
- package/Source/Shaders/Voxels/IntersectCylinder.js +66 -96
- package/Source/Shaders/Voxels/IntersectEllipsoid.glsl +226 -154
- package/Source/Shaders/Voxels/IntersectEllipsoid.js +226 -154
- package/Source/Shaders/Voxels/IntersectionUtils.glsl +33 -11
- package/Source/Shaders/Voxels/IntersectionUtils.js +33 -11
- package/Source/Shaders/Voxels/Megatexture.glsl +1 -2
- package/Source/Shaders/Voxels/Megatexture.js +1 -2
- package/Source/Shaders/Voxels/Octree.glsl +14 -9
- package/Source/Shaders/Voxels/Octree.js +14 -9
- package/Source/Shaders/Voxels/VoxelFS.glsl +93 -43
- package/Source/Shaders/Voxels/VoxelFS.js +93 -43
- package/Source/Shaders/Voxels/VoxelUtils.glsl +31 -0
- package/Source/Shaders/Voxels/VoxelUtils.js +33 -0
- package/Source/Shaders/Voxels/convertUvToBox.glsl +24 -3
- package/Source/Shaders/Voxels/convertUvToBox.js +24 -4
- package/Source/Shaders/Voxels/convertUvToCylinder.glsl +50 -8
- package/Source/Shaders/Voxels/convertUvToCylinder.js +50 -8
- package/Source/Shaders/Voxels/convertUvToEllipsoid.glsl +82 -53
- package/Source/Shaders/Voxels/convertUvToEllipsoid.js +82 -53
- package/Source/ThirdParty/Workers/z-worker-pako.js +1 -1
- package/Source/Workers/createGeometry.js +1 -1
- package/index.d.ts +478 -35
- package/index.js +61 -52
- package/package.json +2 -2
- package/Build/Workers/chunk-BG4UCVXN.js +0 -73
- package/Build/Workers/chunk-TTUZP4BO.js +0 -501
- package/Build/Workers/chunk-YJEBABKH.js +0 -2977
|
@@ -255,6 +255,27 @@ Model3DTileContent.prototype.update = function (tileset, frameState) {
|
|
|
255
255
|
model._clippingPlanesState = 0;
|
|
256
256
|
}
|
|
257
257
|
|
|
258
|
+
// Updating clipping polygons requires more effort because of ownership checks
|
|
259
|
+
const tilesetClippingPolygons = tileset.clippingPolygons;
|
|
260
|
+
if (defined(tilesetClippingPolygons) && tile.clippingPolygonsDirty) {
|
|
261
|
+
// Dereference the clipping polygons from the model if they are irrelevant.
|
|
262
|
+
model._clippingPolygons =
|
|
263
|
+
tilesetClippingPolygons.enabled && tile._isClippedByPolygon
|
|
264
|
+
? tilesetClippingPolygons
|
|
265
|
+
: undefined;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// If the model references a different ClippingPolygonCollection from the tileset,
|
|
269
|
+
// update the model to use the new ClippingPolygonCollection.
|
|
270
|
+
if (
|
|
271
|
+
defined(tilesetClippingPolygons) &&
|
|
272
|
+
defined(model._clippingPolygons) &&
|
|
273
|
+
model._clippingPolygons !== tilesetClippingPolygons
|
|
274
|
+
) {
|
|
275
|
+
model._clippingPolygons = tilesetClippingPolygons;
|
|
276
|
+
model._clippingPolygonsState = 0;
|
|
277
|
+
}
|
|
278
|
+
|
|
258
279
|
model.update(frameState);
|
|
259
280
|
|
|
260
281
|
if (!this._ready && model.ready) {
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import combine from "../../Core/combine.js";
|
|
2
|
+
import ModelClippingPolygonsStageVS from "../../Shaders/Model/ModelClippingPolygonsStageVS.js";
|
|
3
|
+
import ModelClippingPolygonsStageFS from "../../Shaders/Model/ModelClippingPolygonsStageFS.js";
|
|
4
|
+
import ShaderDestination from "../../Renderer/ShaderDestination.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The model clipping planes stage is responsible for applying clipping planes to the model.
|
|
8
|
+
*
|
|
9
|
+
* @namespace ModelClippingPolygonsPipelineStage
|
|
10
|
+
*
|
|
11
|
+
* @private
|
|
12
|
+
*/
|
|
13
|
+
const ModelClippingPolygonsPipelineStage = {
|
|
14
|
+
name: "ModelClippingPolygonsPipelineStage", // Helps with debugging
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Process a model for polygon clipping. This modifies the following parts of the render resources:
|
|
19
|
+
*
|
|
20
|
+
* <ul>
|
|
21
|
+
* <li>adds a define to both the vertex and fragment shaders to indicate that the model has clipping polygons</li>
|
|
22
|
+
* <li>adds the defines to both the vertex and fragment shaders for parameters related to clipping polygons, such as the number of polygons</li>
|
|
23
|
+
* <li>adds a function to the vertex shader to determine lookup uvs</li>
|
|
24
|
+
* <li>adds a function to the fragment shader to discard clipped regions</li>
|
|
25
|
+
* <li>adds the uniforms to the vertex and fragment shaders for the clipping extents texture and clipping distance respectively</li>
|
|
26
|
+
* <li>adds a varying for lookup uvs in the clipping texture</li>
|
|
27
|
+
*</ul>
|
|
28
|
+
*
|
|
29
|
+
* @param {ModelRenderResources} renderResources The render resources for this model.
|
|
30
|
+
* @param {Model} model The model.
|
|
31
|
+
* @param {FrameState} frameState The frameState.
|
|
32
|
+
*
|
|
33
|
+
* @private
|
|
34
|
+
*/
|
|
35
|
+
ModelClippingPolygonsPipelineStage.process = function (
|
|
36
|
+
renderResources,
|
|
37
|
+
model,
|
|
38
|
+
frameState
|
|
39
|
+
) {
|
|
40
|
+
const clippingPolygons = model.clippingPolygons;
|
|
41
|
+
const shaderBuilder = renderResources.shaderBuilder;
|
|
42
|
+
|
|
43
|
+
shaderBuilder.addDefine(
|
|
44
|
+
"ENABLE_CLIPPING_POLYGONS",
|
|
45
|
+
undefined,
|
|
46
|
+
ShaderDestination.BOTH
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
if (clippingPolygons.inverse) {
|
|
50
|
+
shaderBuilder.addDefine(
|
|
51
|
+
"CLIPPING_INVERSE",
|
|
52
|
+
undefined,
|
|
53
|
+
ShaderDestination.FRAGMENT
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
shaderBuilder.addDefine(
|
|
58
|
+
"CLIPPING_POLYGON_REGIONS_LENGTH",
|
|
59
|
+
clippingPolygons.extentsCount,
|
|
60
|
+
ShaderDestination.BOTH
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
shaderBuilder.addUniform(
|
|
64
|
+
"sampler2D",
|
|
65
|
+
"model_clippingDistance",
|
|
66
|
+
ShaderDestination.FRAGMENT
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
shaderBuilder.addUniform(
|
|
70
|
+
"sampler2D",
|
|
71
|
+
"model_clippingExtents",
|
|
72
|
+
ShaderDestination.VERTEX
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
shaderBuilder.addVarying("vec2", "v_clippingPosition");
|
|
76
|
+
shaderBuilder.addVarying("int", "v_regionIndex", "flat");
|
|
77
|
+
shaderBuilder.addVertexLines(ModelClippingPolygonsStageVS);
|
|
78
|
+
shaderBuilder.addFragmentLines(ModelClippingPolygonsStageFS);
|
|
79
|
+
|
|
80
|
+
const uniformMap = {
|
|
81
|
+
model_clippingDistance: function () {
|
|
82
|
+
return clippingPolygons.clippingTexture;
|
|
83
|
+
},
|
|
84
|
+
model_clippingExtents: function () {
|
|
85
|
+
return clippingPolygons.extentsTexture;
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
renderResources.uniformMap = combine(uniformMap, renderResources.uniformMap);
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export default ModelClippingPolygonsPipelineStage;
|
|
@@ -14,6 +14,7 @@ import ImageBasedLightingPipelineStage from "./ImageBasedLightingPipelineStage.j
|
|
|
14
14
|
import ModelArticulation from "./ModelArticulation.js";
|
|
15
15
|
import ModelColorPipelineStage from "./ModelColorPipelineStage.js";
|
|
16
16
|
import ModelClippingPlanesPipelineStage from "./ModelClippingPlanesPipelineStage.js";
|
|
17
|
+
import ModelClippingPolygonsPipelineStage from "./ModelClippingPolygonsPipelineStage.js";
|
|
17
18
|
import ModelNode from "./ModelNode.js";
|
|
18
19
|
import ModelRuntimeNode from "./ModelRuntimeNode.js";
|
|
19
20
|
import ModelRuntimePrimitive from "./ModelRuntimePrimitive.js";
|
|
@@ -626,6 +627,10 @@ ModelSceneGraph.prototype.configurePipeline = function (frameState) {
|
|
|
626
627
|
modelPipelineStages.push(ModelClippingPlanesPipelineStage);
|
|
627
628
|
}
|
|
628
629
|
|
|
630
|
+
if (model.isClippingPolygonsEnabled()) {
|
|
631
|
+
modelPipelineStages.push(ModelClippingPolygonsPipelineStage);
|
|
632
|
+
}
|
|
633
|
+
|
|
629
634
|
if (model.hasSilhouette(frameState)) {
|
|
630
635
|
modelPipelineStages.push(ModelSilhouettePipelineStage);
|
|
631
636
|
}
|
|
@@ -2515,9 +2515,6 @@ function setReady(primitive, frameState, state, error) {
|
|
|
2515
2515
|
primitive._ready =
|
|
2516
2516
|
primitive._state === PrimitiveState.COMPLETE ||
|
|
2517
2517
|
primitive._state === PrimitiveState.FAILED;
|
|
2518
|
-
if (!defined(error)) {
|
|
2519
|
-
return true;
|
|
2520
|
-
}
|
|
2521
2518
|
});
|
|
2522
2519
|
}
|
|
2523
2520
|
export default Primitive;
|
package/Source/Scene/Terrain.js
CHANGED
|
@@ -83,7 +83,7 @@ Object.defineProperties(Terrain.prototype, {
|
|
|
83
83
|
|
|
84
84
|
/**
|
|
85
85
|
* Returns true when the terrain provider has been successfully created. Otherwise, returns false.
|
|
86
|
-
* @memberof
|
|
86
|
+
* @memberof Terrain.prototype
|
|
87
87
|
*
|
|
88
88
|
* @type {boolean}
|
|
89
89
|
* @readonly
|
|
@@ -96,7 +96,7 @@ Object.defineProperties(Terrain.prototype, {
|
|
|
96
96
|
|
|
97
97
|
/**
|
|
98
98
|
* The terrain provider providing surface geometry to a globe. Do not use until {@link Terrain.readyEvent} is raised.
|
|
99
|
-
* @memberof
|
|
99
|
+
* @memberof Terrain.prototype
|
|
100
100
|
*
|
|
101
101
|
* @type {TerrainProvider}
|
|
102
102
|
* @readonly
|
|
@@ -427,21 +427,6 @@ VoxelBoxShape.prototype.computeOrientedBoundingBoxForSample = function (
|
|
|
427
427
|
);
|
|
428
428
|
};
|
|
429
429
|
|
|
430
|
-
/**
|
|
431
|
-
* Computes an approximate step size for raymarching the root tile of a voxel grid.
|
|
432
|
-
* The update function must be called before calling this function.
|
|
433
|
-
*
|
|
434
|
-
* @param {Cartesian3} dimensions The voxel grid dimensions for a tile.
|
|
435
|
-
* @returns {number} The step size.
|
|
436
|
-
*/
|
|
437
|
-
VoxelBoxShape.prototype.computeApproximateStepSize = function (dimensions) {
|
|
438
|
-
//>>includeStart('debug', pragmas.debug);
|
|
439
|
-
Check.typeOf.object("dimensions", dimensions);
|
|
440
|
-
//>>includeEnd('debug');
|
|
441
|
-
|
|
442
|
-
return 1.0 / Cartesian3.maximumComponent(dimensions);
|
|
443
|
-
};
|
|
444
|
-
|
|
445
430
|
/**
|
|
446
431
|
* Defines the minimum bounds of the shape. Corresponds to minimum X, Y, Z.
|
|
447
432
|
*
|
|
@@ -96,9 +96,8 @@ function VoxelCylinderShape() {
|
|
|
96
96
|
* @readonly
|
|
97
97
|
*/
|
|
98
98
|
this.shaderUniforms = {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
cylinderUvToRenderRadiusMin: 0.0,
|
|
99
|
+
cylinderRenderHeightMinMax: new Cartesian2(),
|
|
100
|
+
cylinderRenderRadiusMinMax: new Cartesian2(),
|
|
102
101
|
cylinderRenderAngleMinMax: new Cartesian2(),
|
|
103
102
|
cylinderUvToShapeUvRadius: new Cartesian2(),
|
|
104
103
|
cylinderUvToShapeUvHeight: new Cartesian2(),
|
|
@@ -113,10 +112,7 @@ function VoxelCylinderShape() {
|
|
|
113
112
|
*/
|
|
114
113
|
this.shaderDefines = {
|
|
115
114
|
CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN: undefined,
|
|
116
|
-
CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MAX: undefined,
|
|
117
115
|
CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT: undefined,
|
|
118
|
-
CYLINDER_HAS_RENDER_BOUNDS_HEIGHT: undefined,
|
|
119
|
-
CYLINDER_HAS_RENDER_BOUNDS_HEIGHT_FLAT: undefined,
|
|
120
116
|
CYLINDER_HAS_RENDER_BOUNDS_ANGLE: undefined,
|
|
121
117
|
CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO: undefined,
|
|
122
118
|
CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF: undefined,
|
|
@@ -143,17 +139,6 @@ function VoxelCylinderShape() {
|
|
|
143
139
|
}
|
|
144
140
|
|
|
145
141
|
const scratchScale = new Cartesian3();
|
|
146
|
-
const scratchBoundsTranslation = new Cartesian3();
|
|
147
|
-
const scratchBoundsScale = new Cartesian3();
|
|
148
|
-
const scratchBoundsScaleMatrix = new Matrix3();
|
|
149
|
-
const scratchTransformLocalToBounds = new Matrix4();
|
|
150
|
-
const scratchTransformUvToBounds = new Matrix4();
|
|
151
|
-
|
|
152
|
-
const transformUvToLocal = Matrix4.fromRotationTranslation(
|
|
153
|
-
Matrix3.fromUniformScale(2.0, new Matrix3()),
|
|
154
|
-
new Cartesian3(-1.0, -1.0, -1.0),
|
|
155
|
-
new Matrix4()
|
|
156
|
-
);
|
|
157
142
|
|
|
158
143
|
/**
|
|
159
144
|
* Update the shape's state.
|
|
@@ -339,11 +324,7 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
339
324
|
epsilonAngleDiscontinuity
|
|
340
325
|
);
|
|
341
326
|
|
|
342
|
-
const renderIsDefaultMaxRadius = renderMaxRadius === defaultMaxRadius;
|
|
343
327
|
const renderIsDefaultMinRadius = renderMinRadius === defaultMinRadius;
|
|
344
|
-
const renderIsDefaultHeight =
|
|
345
|
-
renderMinHeight === defaultMinHeight &&
|
|
346
|
-
renderMaxHeight === defaultMaxHeight;
|
|
347
328
|
const renderIsAngleReversed = renderMaxAngle < renderMinAngle;
|
|
348
329
|
const renderAngleRange =
|
|
349
330
|
renderMaxAngle - renderMinAngle + renderIsAngleReversed * defaultAngleRange;
|
|
@@ -376,22 +357,16 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
376
357
|
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN"] = true;
|
|
377
358
|
shaderDefines["CYLINDER_INTERSECTION_INDEX_RADIUS_MIN"] = intersectionCount;
|
|
378
359
|
intersectionCount += 1;
|
|
379
|
-
|
|
380
|
-
shaderUniforms.cylinderUvToRenderRadiusMin =
|
|
381
|
-
renderMaxRadius / renderMinRadius;
|
|
382
|
-
}
|
|
383
|
-
if (!renderIsDefaultMaxRadius) {
|
|
384
|
-
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MAX"] = true;
|
|
385
360
|
}
|
|
361
|
+
shaderUniforms.cylinderRenderRadiusMinMax = Cartesian2.fromElements(
|
|
362
|
+
renderMinRadius,
|
|
363
|
+
renderMaxRadius,
|
|
364
|
+
shaderUniforms.cylinderRenderRadiusMinMax
|
|
365
|
+
);
|
|
366
|
+
|
|
386
367
|
if (renderMinRadius === renderMaxRadius) {
|
|
387
368
|
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT"] = true;
|
|
388
369
|
}
|
|
389
|
-
if (!renderIsDefaultHeight) {
|
|
390
|
-
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_HEIGHT"] = true;
|
|
391
|
-
}
|
|
392
|
-
if (renderMinHeight === renderMaxHeight) {
|
|
393
|
-
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_HEIGHT_FLAT"] = true;
|
|
394
|
-
}
|
|
395
370
|
if (!shapeIsDefaultRadius) {
|
|
396
371
|
shaderDefines["CYLINDER_HAS_SHAPE_BOUNDS_RADIUS"] = true;
|
|
397
372
|
|
|
@@ -442,42 +417,11 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
442
417
|
shaderUniforms.cylinderUvToShapeUvHeight
|
|
443
418
|
);
|
|
444
419
|
}
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
1.0 / renderMaxRadius,
|
|
451
|
-
1.0 / (heightScale === 0.0 ? 1.0 : heightScale),
|
|
452
|
-
scratchBoundsScale
|
|
453
|
-
);
|
|
454
|
-
// -inverse(scale) * translation // affine inverse
|
|
455
|
-
// -inverse(scale) * 0.5 * (minHeight + maxHeight)
|
|
456
|
-
const translateLocalToBounds = Cartesian3.fromElements(
|
|
457
|
-
0.0,
|
|
458
|
-
0.0,
|
|
459
|
-
-scaleLocalToBounds.z * 0.5 * (renderMinHeight + renderMaxHeight),
|
|
460
|
-
scratchBoundsTranslation
|
|
461
|
-
);
|
|
462
|
-
const transformLocalToBounds = Matrix4.fromRotationTranslation(
|
|
463
|
-
Matrix3.fromScale(scaleLocalToBounds, scratchBoundsScaleMatrix),
|
|
464
|
-
translateLocalToBounds,
|
|
465
|
-
scratchTransformLocalToBounds
|
|
466
|
-
);
|
|
467
|
-
const transformUvToBounds = Matrix4.multiplyTransformation(
|
|
468
|
-
transformLocalToBounds,
|
|
469
|
-
transformUvToLocal,
|
|
470
|
-
scratchTransformUvToBounds
|
|
471
|
-
);
|
|
472
|
-
shaderUniforms.cylinderUvToRenderBoundsScale = Matrix4.getScale(
|
|
473
|
-
transformUvToBounds,
|
|
474
|
-
shaderUniforms.cylinderUvToRenderBoundsScale
|
|
475
|
-
);
|
|
476
|
-
shaderUniforms.cylinderUvToRenderBoundsTranslate = Matrix4.getTranslation(
|
|
477
|
-
transformUvToBounds,
|
|
478
|
-
shaderUniforms.cylinderUvToRenderBoundsTranslate
|
|
479
|
-
);
|
|
480
|
-
}
|
|
420
|
+
shaderUniforms.cylinderRenderHeightMinMax = Cartesian2.fromElements(
|
|
421
|
+
renderMinHeight,
|
|
422
|
+
renderMaxHeight,
|
|
423
|
+
shaderUniforms.cylinderRenderHeightMinMax
|
|
424
|
+
);
|
|
481
425
|
|
|
482
426
|
if (shapeIsAngleReversed) {
|
|
483
427
|
shaderDefines["CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED"] = true;
|
|
@@ -501,7 +445,7 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
501
445
|
shaderUniforms.cylinderRenderAngleMinMax = Cartesian2.fromElements(
|
|
502
446
|
renderMinAngle,
|
|
503
447
|
renderMaxAngle,
|
|
504
|
-
shaderUniforms.
|
|
448
|
+
shaderUniforms.cylinderRenderAngleMinMax
|
|
505
449
|
);
|
|
506
450
|
}
|
|
507
451
|
|
|
@@ -716,67 +660,6 @@ VoxelCylinderShape.prototype.computeOrientedBoundingBoxForSample = function (
|
|
|
716
660
|
);
|
|
717
661
|
};
|
|
718
662
|
|
|
719
|
-
const scratchOrientedBoundingBox = new OrientedBoundingBox();
|
|
720
|
-
const scratchVoxelScale = new Cartesian3();
|
|
721
|
-
const scratchRootScale = new Cartesian3();
|
|
722
|
-
const scratchScaleRatio = new Cartesian3();
|
|
723
|
-
|
|
724
|
-
/**
|
|
725
|
-
* Computes an approximate step size for raymarching the root tile of a voxel grid.
|
|
726
|
-
* The update function must be called before calling this function.
|
|
727
|
-
*
|
|
728
|
-
* @param {Cartesian3} dimensions The voxel grid dimensions for a tile.
|
|
729
|
-
* @returns {number} The step size.
|
|
730
|
-
*/
|
|
731
|
-
VoxelCylinderShape.prototype.computeApproximateStepSize = function (
|
|
732
|
-
dimensions
|
|
733
|
-
) {
|
|
734
|
-
//>>includeStart('debug', pragmas.debug);
|
|
735
|
-
Check.typeOf.object("dimensions", dimensions);
|
|
736
|
-
//>>includeEnd('debug');
|
|
737
|
-
|
|
738
|
-
const shapeTransform = this.shapeTransform;
|
|
739
|
-
const minRadius = this._minimumRadius;
|
|
740
|
-
const maxRadius = this._maximumRadius;
|
|
741
|
-
const minHeight = this._minimumHeight;
|
|
742
|
-
const maxHeight = this._maximumHeight;
|
|
743
|
-
const minAngle = this._minimumAngle;
|
|
744
|
-
const maxAngle = this._maximumAngle;
|
|
745
|
-
|
|
746
|
-
const lerpRadius = 1.0 - 1.0 / dimensions.x;
|
|
747
|
-
const lerpHeight = 1.0 - 1.0 / dimensions.y;
|
|
748
|
-
const lerpAngle = 1.0 - 1.0 / dimensions.z;
|
|
749
|
-
|
|
750
|
-
// Compare the size of an outermost cylinder voxel to the total cylinder
|
|
751
|
-
const voxelMinimumRadius = CesiumMath.lerp(minRadius, maxRadius, lerpRadius);
|
|
752
|
-
const voxelMinimumHeight = CesiumMath.lerp(minHeight, maxHeight, lerpHeight);
|
|
753
|
-
const voxelMinimumAngle = CesiumMath.lerp(minAngle, maxAngle, lerpAngle);
|
|
754
|
-
const voxelMaximumRadius = maxRadius;
|
|
755
|
-
const voxelMaximumHeight = maxHeight;
|
|
756
|
-
const voxelMaximumAngle = maxAngle;
|
|
757
|
-
|
|
758
|
-
const voxelObb = getCylinderChunkObb(
|
|
759
|
-
voxelMinimumRadius,
|
|
760
|
-
voxelMaximumRadius,
|
|
761
|
-
voxelMinimumHeight,
|
|
762
|
-
voxelMaximumHeight,
|
|
763
|
-
voxelMinimumAngle,
|
|
764
|
-
voxelMaximumAngle,
|
|
765
|
-
shapeTransform,
|
|
766
|
-
scratchOrientedBoundingBox
|
|
767
|
-
);
|
|
768
|
-
|
|
769
|
-
const voxelScale = Matrix3.getScale(voxelObb.halfAxes, scratchVoxelScale);
|
|
770
|
-
const rootScale = Matrix4.getScale(shapeTransform, scratchRootScale);
|
|
771
|
-
const scaleRatio = Cartesian3.divideComponents(
|
|
772
|
-
voxelScale,
|
|
773
|
-
rootScale,
|
|
774
|
-
scratchScaleRatio
|
|
775
|
-
);
|
|
776
|
-
const stepSize = Cartesian3.minimumComponent(scaleRatio);
|
|
777
|
-
return stepSize;
|
|
778
|
-
};
|
|
779
|
-
|
|
780
663
|
/**
|
|
781
664
|
* Defines the minimum bounds of the shape. Corresponds to minimum radius, height, angle.
|
|
782
665
|
*
|