@cesium/engine 7.0.0 → 9.0.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 +1 -5
- package/Build/Workers/{chunk-7XEAYGZK.js → chunk-24YTYWNB.js} +10 -10
- package/Build/Workers/{chunk-IQBYFRVW.js → chunk-2632RVPI.js} +7 -7
- package/Build/Workers/chunk-2KACWKS4.js +501 -0
- package/Build/Workers/{chunk-QZAD5O7I.js → chunk-2XPLH3JY.js} +7 -7
- package/Build/Workers/{chunk-JY5YEZFA.js → chunk-2ZBL3MVO.js} +8 -8
- package/Build/Workers/{chunk-ZK5JOS3D.js → chunk-3NCVAGDA.js} +14 -14
- package/Build/Workers/{chunk-AR5DNBJ4.js → chunk-5R6VWLMH.js} +6 -6
- package/Build/Workers/{chunk-PTQQUQC3.js → chunk-5TIV3L26.js} +13 -13
- package/Build/Workers/{chunk-BZP4T2JJ.js → chunk-6WF3KIF5.js} +10 -10
- package/Build/Workers/{chunk-5WQ523AW.js → chunk-73FKKY52.js} +5 -5
- package/Build/Workers/{chunk-F6SE42BK.js → chunk-7COR472O.js} +15 -472
- package/Build/Workers/{chunk-72SANQJV.js → chunk-ADOVHYWO.js} +9 -5
- package/Build/Workers/{chunk-5YLJ77FF.js → chunk-BCU2LH5T.js} +12 -11
- package/Build/Workers/{chunk-4EBHOMFX.js → chunk-C3XBUYBO.js} +17 -17
- package/Build/Workers/{chunk-IX2JCCNM.js → chunk-C6OI26DR.js} +1 -1
- package/Build/Workers/{chunk-2HJWSU7B.js → chunk-CO35JNNE.js} +4 -4
- package/Build/Workers/{chunk-OVLG3FRS.js → chunk-DGDUKCJJ.js} +6 -6
- package/Build/Workers/{chunk-DTAIXKTO.js → chunk-DPUSFA7S.js} +6 -6
- package/Build/Workers/{chunk-R5X4OQT4.js → chunk-E6WXPSJS.js} +7 -7
- package/Build/Workers/{chunk-VK3EJHWI.js → chunk-EOXYZ34O.js} +2 -2
- package/Build/Workers/{chunk-RAEV7K66.js → chunk-EPKE7GE3.js} +5 -5
- package/Build/Workers/{chunk-GV56Q4LU.js → chunk-GFA4SMXV.js} +11 -11
- package/Build/Workers/{chunk-NKPBIX7F.js → chunk-GXUXEOE2.js} +1 -1
- package/Build/Workers/{chunk-NY3K4IM3.js → chunk-HBQPB6IH.js} +12 -12
- package/Build/Workers/{chunk-6HZQPRUS.js → chunk-I37B3MZ2.js} +1 -1
- package/Build/Workers/{chunk-VRGFV2UO.js → chunk-L4BW3RUA.js} +10 -10
- package/Build/Workers/{chunk-6VJVYK2V.js → chunk-LAQP3SCC.js} +2 -2
- package/Build/Workers/{chunk-PNBGBETF.js → chunk-LQJ5FFFR.js} +10 -10
- package/Build/Workers/{chunk-UAEW6HKG.js → chunk-M2AYBTNH.js} +13 -13
- package/Build/Workers/{chunk-YUCVWAY6.js → chunk-MWV7IZK4.js} +7 -7
- package/Build/Workers/{chunk-JXDC723O.js → chunk-N4KXMWQU.js} +2 -2
- package/Build/Workers/{chunk-XWXM2O2R.js → chunk-NP2GYYE5.js} +6 -6
- package/Build/Workers/{chunk-GEJTYLCO.js → chunk-NZWNZA6S.js} +5 -5
- package/Build/Workers/{chunk-LZGHD6NY.js → chunk-P2YAAMT2.js} +15 -15
- package/Build/Workers/{chunk-S6SKF6DT.js → chunk-P4XKB3QZ.js} +5 -5
- package/Build/Workers/{chunk-U2VCRRQW.js → chunk-PXB7T27O.js} +6 -6
- package/Build/Workers/{chunk-RV7ZYPFT.js → chunk-QCQUZGXI.js} +4 -4
- package/Build/Workers/{chunk-JJ4VBOQ3.js → chunk-QKBGRKKG.js} +4 -4
- package/Build/Workers/{chunk-ODW7WYM4.js → chunk-RMOEYCZW.js} +2 -2
- package/Build/Workers/{chunk-ZUA2UUNV.js → chunk-RSJXEO2A.js} +2 -2
- package/Build/Workers/{chunk-UDO6BFSF.js → chunk-RV7ZOSS6.js} +13 -13
- package/Build/Workers/{chunk-LZ7JIV3K.js → chunk-SE4PXOEA.js} +17 -17
- package/Build/Workers/{chunk-S4MAZ3SS.js → chunk-SS4ESNE3.js} +2 -2
- package/Build/Workers/{chunk-AIPU2VSX.js → chunk-TJBU6GML.js} +6 -6
- package/Build/Workers/{chunk-5M3U6ZMA.js → chunk-TZORKRNK.js} +1 -1
- package/Build/Workers/{chunk-MY3VNFGQ.js → chunk-VR5RBW52.js} +7 -7
- package/Build/Workers/{chunk-FP6GYBFX.js → chunk-WHUSTDIB.js} +10 -10
- package/Build/Workers/{chunk-5HDYHG3F.js → chunk-X2F6BEPY.js} +13 -13
- package/Build/Workers/{chunk-WZU2YLWG.js → chunk-X6XOMPWL.js} +3 -3
- package/Build/Workers/{chunk-UGK3FCDY.js → chunk-YDVSBWEO.js} +1 -1
- package/Build/Workers/{chunk-46UD5ABS.js → chunk-YV4H2Y7M.js} +4 -4
- package/Build/Workers/{chunk-WBQCVXR3.js → chunk-Z7FQLK6N.js} +4 -4
- package/Build/Workers/{chunk-L2ZN645J.js → chunk-ZNVSKMQ2.js} +6 -6
- package/Build/Workers/{chunk-JCNXK6EL.js → chunk-ZYPTP7GS.js} +11 -11
- package/Build/Workers/combineGeometry.js +24 -23
- package/Build/Workers/createBoxGeometry.js +18 -17
- package/Build/Workers/createBoxOutlineGeometry.js +16 -15
- package/Build/Workers/createCircleGeometry.js +26 -25
- package/Build/Workers/createCircleOutlineGeometry.js +19 -18
- package/Build/Workers/createCoplanarPolygonGeometry.js +33 -32
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -30
- package/Build/Workers/createCorridorGeometry.js +29 -28
- package/Build/Workers/createCorridorOutlineGeometry.js +28 -27
- package/Build/Workers/createCylinderGeometry.js +20 -19
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -17
- package/Build/Workers/createEllipseGeometry.js +26 -25
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -18
- package/Build/Workers/createEllipsoidGeometry.js +19 -18
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -17
- package/Build/Workers/createFrustumGeometry.js +18 -17
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -17
- package/Build/Workers/createGeometry.js +54 -33
- package/Build/Workers/createGroundPolylineGeometry.js +22 -21
- package/Build/Workers/createPlaneGeometry.js +16 -15
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -14
- package/Build/Workers/createPolygonGeometry.js +33 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +30 -29
- package/Build/Workers/createPolylineGeometry.js +25 -24
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -30
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -26
- package/Build/Workers/createRectangleGeometry.js +27 -26
- package/Build/Workers/createRectangleOutlineGeometry.js +20 -19
- package/Build/Workers/createSimplePolylineGeometry.js +23 -22
- package/Build/Workers/createSphereGeometry.js +19 -18
- package/Build/Workers/createSphereOutlineGeometry.js +18 -17
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -23
- package/Build/Workers/createVectorTilePoints.js +12 -12
- package/Build/Workers/createVectorTilePolygons.js +22 -21
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -21
- package/Build/Workers/createVerticesFromHeightmap.js +22 -21
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +19 -18
- package/Build/Workers/createWallGeometry.js +24 -23
- package/Build/Workers/createWallOutlineGeometry.js +23 -22
- package/Build/Workers/decodeDraco.js +11 -11
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +601 -92
- package/Build/Workers/transcodeKTX2.js +7 -7
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -21
- package/Source/Core/Check.d.ts +127 -0
- package/Source/Core/Check.js +0 -1
- package/Source/Core/Ellipsoid.js +6 -0
- package/Source/Core/Geometry.js +1 -1
- package/Source/Core/IntersectionTests.js +6 -3
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/PixelFormat.js +5 -0
- package/Source/Core/PolygonGeometry.js +1 -1
- package/Source/Core/Transforms.js +3 -0
- package/Source/Core/VerticalExaggeration.js +2 -1
- package/Source/Core/srgbToLinear.js +32 -0
- package/Source/DataSources/CzmlDataSource.js +51 -23
- package/Source/DataSources/DataSourceDisplay.js +27 -0
- package/Source/DataSources/Entity.js +20 -2
- package/Source/DataSources/GeometryUpdaterSet.js +114 -0
- package/Source/DataSources/GeometryVisualizer.js +19 -83
- package/Source/Renderer/Context.js +10 -0
- package/Source/Renderer/ContextLimits.js +2 -0
- package/Source/Renderer/demodernizeShader.js +4 -1
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/Axis.js +12 -7
- package/Source/Scene/Billboard.js +32 -0
- package/Source/Scene/BillboardCollection.js +1 -1
- package/Source/Scene/BingMapsImageryProvider.js +4 -0
- package/Source/Scene/Camera.js +46 -4
- package/Source/Scene/Cesium3DTilesVoxelProvider.js +2 -9
- package/Source/Scene/Cesium3DTileset.js +10 -7
- package/Source/Scene/Cesium3DTilesetBaseTraversal.js +2 -4
- package/Source/Scene/FrameState.js +5 -0
- package/Source/Scene/Globe.js +0 -67
- package/Source/Scene/GlobeTranslucencyState.js +1 -1
- package/Source/Scene/GltfPipeline/updateVersion.js +69 -68
- package/Source/Scene/I3SDataProvider.js +270 -53
- package/Source/Scene/I3SDecoder.js +8 -1
- package/Source/Scene/I3SFeature.js +2 -5
- package/Source/Scene/I3SField.js +136 -31
- package/Source/Scene/I3SGeometry.js +70 -2
- package/Source/Scene/I3SLayer.js +55 -10
- package/Source/Scene/I3SNode.js +175 -18
- package/Source/Scene/I3SStatistics.js +94 -0
- package/Source/Scene/I3SSublayer.js +176 -0
- package/Source/Scene/I3SSymbology.js +337 -0
- package/Source/Scene/KeyframeNode.js +1 -1
- package/Source/Scene/Label.js +33 -0
- package/Source/Scene/LabelCollection.js +2 -1
- package/Source/Scene/Model/pickModel.js +25 -7
- package/Source/Scene/PickFramebuffer.js +37 -2
- package/Source/Scene/Picking.js +113 -39
- package/Source/Scene/Primitive.js +6 -5
- package/Source/Scene/Scene.js +126 -42
- package/Source/Scene/ScreenSpaceCameraController.js +21 -7
- package/Source/Scene/SensorVolumePortionToDisplay.js +69 -0
- package/Source/Scene/SpatialNode.js +12 -19
- package/Source/Scene/StructuralMetadata.js +1 -1
- package/Source/Scene/VoxelBoxShape.js +67 -6
- package/Source/Scene/VoxelCell.js +273 -0
- package/Source/Scene/VoxelCylinderShape.js +117 -163
- package/Source/Scene/VoxelEllipsoidShape.js +255 -304
- package/Source/Scene/VoxelPrimitive.js +109 -15
- package/Source/Scene/VoxelRenderResources.js +12 -3
- package/Source/Scene/VoxelShape.js +7 -4
- package/Source/Scene/VoxelTraversal.js +76 -54
- package/Source/Scene/buildVoxelDrawCommands.js +23 -0
- package/Source/Scene/createGooglePhotorealistic3DTileset.js +1 -0
- package/Source/Scene/processVoxelProperties.js +3 -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 +76 -203
- package/Source/Shaders/Voxels/IntersectCylinder.js +76 -203
- package/Source/Shaders/Voxels/IntersectEllipsoid.glsl +220 -229
- package/Source/Shaders/Voxels/IntersectEllipsoid.js +220 -229
- package/Source/Shaders/Voxels/IntersectLongitude.glsl +102 -0
- package/Source/Shaders/Voxels/IntersectLongitude.js +104 -0
- 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 +128 -40
- package/Source/Shaders/Voxels/VoxelFS.js +128 -40
- 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 +64 -40
- package/Source/Shaders/Voxels/convertUvToCylinder.js +64 -40
- package/Source/Shaders/Voxels/convertUvToEllipsoid.glsl +100 -91
- package/Source/Shaders/Voxels/convertUvToEllipsoid.js +100 -91
- package/Source/ThirdParty/Workers/z-worker-pako.js +1 -1
- package/Source/Workers/createGeometry.js +40 -11
- package/Source/Workers/decodeI3S.js +720 -94
- package/index.d.ts +542 -40
- package/index.js +75 -66
- package/package.json +2 -2
|
@@ -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,22 +112,15 @@ 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,
|
|
123
|
-
CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_HALF: undefined,
|
|
124
119
|
CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF: undefined,
|
|
125
120
|
|
|
126
121
|
CYLINDER_HAS_SHAPE_BOUNDS_RADIUS: undefined,
|
|
127
|
-
CYLINDER_HAS_SHAPE_BOUNDS_RADIUS_FLAT: undefined,
|
|
128
122
|
CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT: undefined,
|
|
129
|
-
CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT_FLAT: undefined,
|
|
130
123
|
CYLINDER_HAS_SHAPE_BOUNDS_ANGLE: undefined,
|
|
131
|
-
CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_RANGE_EQUAL_ZERO: undefined,
|
|
132
124
|
CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY: undefined,
|
|
133
125
|
CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY: undefined,
|
|
134
126
|
CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED: undefined,
|
|
@@ -147,17 +139,6 @@ function VoxelCylinderShape() {
|
|
|
147
139
|
}
|
|
148
140
|
|
|
149
141
|
const scratchScale = new Cartesian3();
|
|
150
|
-
const scratchBoundsTranslation = new Cartesian3();
|
|
151
|
-
const scratchBoundsScale = new Cartesian3();
|
|
152
|
-
const scratchBoundsScaleMatrix = new Matrix3();
|
|
153
|
-
const scratchTransformLocalToBounds = new Matrix4();
|
|
154
|
-
const scratchTransformUvToBounds = new Matrix4();
|
|
155
|
-
|
|
156
|
-
const transformUvToLocal = Matrix4.fromRotationTranslation(
|
|
157
|
-
Matrix3.fromUniformScale(2.0, new Matrix3()),
|
|
158
|
-
new Cartesian3(-1.0, -1.0, -1.0),
|
|
159
|
-
new Matrix4()
|
|
160
|
-
);
|
|
161
142
|
|
|
162
143
|
/**
|
|
163
144
|
* Update the shape's state.
|
|
@@ -324,17 +305,12 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
324
305
|
shapeAngleRange > defaultAngleRangeHalf + epsilonAngle &&
|
|
325
306
|
shapeAngleRange < defaultAngleRange - epsilonAngle;
|
|
326
307
|
const shapeIsAngleFlipped =
|
|
327
|
-
shapeAngleRange > epsilonAngle &&
|
|
328
308
|
shapeAngleRange < defaultAngleRangeHalf - epsilonAngle;
|
|
329
309
|
const shapeIsAngleRangeHalf =
|
|
330
310
|
shapeAngleRange >= defaultAngleRangeHalf - epsilonAngle &&
|
|
331
311
|
shapeAngleRange <= defaultAngleRangeHalf + epsilonAngle;
|
|
332
|
-
const shapeIsAngleRangeZero = shapeAngleRange <= epsilonAngle;
|
|
333
312
|
const shapeHasAngle =
|
|
334
|
-
shapeIsAngleRegular ||
|
|
335
|
-
shapeIsAngleFlipped ||
|
|
336
|
-
shapeIsAngleRangeHalf ||
|
|
337
|
-
shapeIsAngleRangeZero;
|
|
313
|
+
shapeIsAngleRegular || shapeIsAngleFlipped || shapeIsAngleRangeHalf;
|
|
338
314
|
const shapeIsMinAngleDiscontinuity = CesiumMath.equalsEpsilon(
|
|
339
315
|
shapeMinAngle,
|
|
340
316
|
defaultMinAngle,
|
|
@@ -348,32 +324,21 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
348
324
|
epsilonAngleDiscontinuity
|
|
349
325
|
);
|
|
350
326
|
|
|
351
|
-
const renderIsDefaultMaxRadius = renderMaxRadius === defaultMaxRadius;
|
|
352
327
|
const renderIsDefaultMinRadius = renderMinRadius === defaultMinRadius;
|
|
353
|
-
const renderIsDefaultHeight =
|
|
354
|
-
renderMinHeight === defaultMinHeight &&
|
|
355
|
-
renderMaxHeight === defaultMaxHeight;
|
|
356
328
|
const renderIsAngleReversed = renderMaxAngle < renderMinAngle;
|
|
357
329
|
const renderAngleRange =
|
|
358
330
|
renderMaxAngle - renderMinAngle + renderIsAngleReversed * defaultAngleRange;
|
|
359
331
|
const renderIsAngleRegular =
|
|
360
|
-
renderAngleRange
|
|
332
|
+
renderAngleRange >= defaultAngleRangeHalf - epsilonAngle &&
|
|
361
333
|
renderAngleRange < defaultAngleRange - epsilonAngle;
|
|
362
334
|
const renderIsAngleFlipped =
|
|
363
335
|
renderAngleRange > epsilonAngle &&
|
|
364
336
|
renderAngleRange < defaultAngleRangeHalf - epsilonAngle;
|
|
365
|
-
const renderIsAngleRangeHalf =
|
|
366
|
-
renderAngleRange >= defaultAngleRangeHalf - epsilonAngle &&
|
|
367
|
-
renderAngleRange <= defaultAngleRangeHalf + epsilonAngle;
|
|
368
337
|
const renderIsAngleRangeZero = renderAngleRange <= epsilonAngle;
|
|
369
338
|
const renderHasAngle =
|
|
370
|
-
renderIsAngleRegular ||
|
|
371
|
-
renderIsAngleFlipped ||
|
|
372
|
-
renderIsAngleRangeHalf ||
|
|
373
|
-
renderIsAngleRangeZero;
|
|
339
|
+
renderIsAngleRegular || renderIsAngleFlipped || renderIsAngleRangeZero;
|
|
374
340
|
|
|
375
|
-
const shaderUniforms = this
|
|
376
|
-
const shaderDefines = this.shaderDefines;
|
|
341
|
+
const { shaderUniforms, shaderDefines } = this;
|
|
377
342
|
|
|
378
343
|
// To keep things simple, clear the defines every time
|
|
379
344
|
for (const key in shaderDefines) {
|
|
@@ -392,28 +357,16 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
392
357
|
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN"] = true;
|
|
393
358
|
shaderDefines["CYLINDER_INTERSECTION_INDEX_RADIUS_MIN"] = intersectionCount;
|
|
394
359
|
intersectionCount += 1;
|
|
395
|
-
|
|
396
|
-
shaderUniforms.cylinderUvToRenderRadiusMin =
|
|
397
|
-
renderMaxRadius / renderMinRadius;
|
|
398
|
-
}
|
|
399
|
-
if (!renderIsDefaultMaxRadius) {
|
|
400
|
-
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MAX"] = true;
|
|
401
360
|
}
|
|
361
|
+
shaderUniforms.cylinderRenderRadiusMinMax = Cartesian2.fromElements(
|
|
362
|
+
renderMinRadius,
|
|
363
|
+
renderMaxRadius,
|
|
364
|
+
shaderUniforms.cylinderRenderRadiusMinMax
|
|
365
|
+
);
|
|
366
|
+
|
|
402
367
|
if (renderMinRadius === renderMaxRadius) {
|
|
403
368
|
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT"] = true;
|
|
404
369
|
}
|
|
405
|
-
if (!renderIsDefaultHeight) {
|
|
406
|
-
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_HEIGHT"] = true;
|
|
407
|
-
}
|
|
408
|
-
if (renderMinHeight === renderMaxHeight) {
|
|
409
|
-
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_HEIGHT_FLAT"] = true;
|
|
410
|
-
}
|
|
411
|
-
if (shapeMinHeight === shapeMaxHeight) {
|
|
412
|
-
shaderDefines["CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT_FLAT"] = true;
|
|
413
|
-
}
|
|
414
|
-
if (shapeMinRadius === shapeMaxRadius) {
|
|
415
|
-
shaderDefines["CYLINDER_HAS_SHAPE_BOUNDS_RADIUS_FLAT"] = true;
|
|
416
|
-
}
|
|
417
370
|
if (!shapeIsDefaultRadius) {
|
|
418
371
|
shaderDefines["CYLINDER_HAS_SHAPE_BOUNDS_RADIUS"] = true;
|
|
419
372
|
|
|
@@ -423,8 +376,13 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
423
376
|
// scale = 1.0 / (maxRadius - minRadius)
|
|
424
377
|
// offset = -minRadius / (maxRadius - minRadius)
|
|
425
378
|
// offset = minRadius / (minRadius - maxRadius)
|
|
426
|
-
const
|
|
427
|
-
|
|
379
|
+
const radiusRange = shapeMaxRadius - shapeMinRadius;
|
|
380
|
+
let scale = 0.0;
|
|
381
|
+
let offset = 1.0;
|
|
382
|
+
if (radiusRange !== 0.0) {
|
|
383
|
+
scale = 1.0 / radiusRange;
|
|
384
|
+
offset = -shapeMinRadius / radiusRange;
|
|
385
|
+
}
|
|
428
386
|
shaderUniforms.cylinderUvToShapeUvRadius = Cartesian2.fromElements(
|
|
429
387
|
scale,
|
|
430
388
|
offset,
|
|
@@ -446,50 +404,24 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
446
404
|
// offset = -2.0 * (minHeight * 0.5 + 0.5) / (maxHeight - minHeight)
|
|
447
405
|
// offset = -(minHeight + 1.0) / (maxHeight - minHeight)
|
|
448
406
|
// offset = (minHeight + 1.0) / (minHeight - maxHeight)
|
|
449
|
-
const
|
|
450
|
-
|
|
407
|
+
const heightRange = shapeMaxHeight - shapeMinHeight;
|
|
408
|
+
let scale = 0.0;
|
|
409
|
+
let offset = 1.0;
|
|
410
|
+
if (heightRange !== 0.0) {
|
|
411
|
+
scale = 2.0 / heightRange;
|
|
412
|
+
offset = -(shapeMinHeight + 1.0) / heightRange;
|
|
413
|
+
}
|
|
451
414
|
shaderUniforms.cylinderUvToShapeUvHeight = Cartesian2.fromElements(
|
|
452
415
|
scale,
|
|
453
416
|
offset,
|
|
454
417
|
shaderUniforms.cylinderUvToShapeUvHeight
|
|
455
418
|
);
|
|
456
419
|
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
1.0 / renderMaxRadius,
|
|
463
|
-
1.0 / (heightScale === 0.0 ? 1.0 : heightScale),
|
|
464
|
-
scratchBoundsScale
|
|
465
|
-
);
|
|
466
|
-
// -inverse(scale) * translation // affine inverse
|
|
467
|
-
// -inverse(scale) * 0.5 * (minHeight + maxHeight)
|
|
468
|
-
const translateLocalToBounds = Cartesian3.fromElements(
|
|
469
|
-
0.0,
|
|
470
|
-
0.0,
|
|
471
|
-
-scaleLocalToBounds.z * 0.5 * (renderMinHeight + renderMaxHeight),
|
|
472
|
-
scratchBoundsTranslation
|
|
473
|
-
);
|
|
474
|
-
const transformLocalToBounds = Matrix4.fromRotationTranslation(
|
|
475
|
-
Matrix3.fromScale(scaleLocalToBounds, scratchBoundsScaleMatrix),
|
|
476
|
-
translateLocalToBounds,
|
|
477
|
-
scratchTransformLocalToBounds
|
|
478
|
-
);
|
|
479
|
-
const transformUvToBounds = Matrix4.multiplyTransformation(
|
|
480
|
-
transformLocalToBounds,
|
|
481
|
-
transformUvToLocal,
|
|
482
|
-
scratchTransformUvToBounds
|
|
483
|
-
);
|
|
484
|
-
shaderUniforms.cylinderUvToRenderBoundsScale = Matrix4.getScale(
|
|
485
|
-
transformUvToBounds,
|
|
486
|
-
shaderUniforms.cylinderUvToRenderBoundsScale
|
|
487
|
-
);
|
|
488
|
-
shaderUniforms.cylinderUvToRenderBoundsTranslate = Matrix4.getTranslation(
|
|
489
|
-
transformUvToBounds,
|
|
490
|
-
shaderUniforms.cylinderUvToRenderBoundsTranslate
|
|
491
|
-
);
|
|
492
|
-
}
|
|
420
|
+
shaderUniforms.cylinderRenderHeightMinMax = Cartesian2.fromElements(
|
|
421
|
+
renderMinHeight,
|
|
422
|
+
renderMaxHeight,
|
|
423
|
+
shaderUniforms.cylinderRenderHeightMinMax
|
|
424
|
+
);
|
|
493
425
|
|
|
494
426
|
if (shapeIsAngleReversed) {
|
|
495
427
|
shaderDefines["CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED"] = true;
|
|
@@ -505,9 +437,6 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
505
437
|
} else if (renderIsAngleFlipped) {
|
|
506
438
|
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF"] = true;
|
|
507
439
|
intersectionCount += 2;
|
|
508
|
-
} else if (renderIsAngleRangeHalf) {
|
|
509
|
-
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_HALF"] = true;
|
|
510
|
-
intersectionCount += 1;
|
|
511
440
|
} else if (renderIsAngleRangeZero) {
|
|
512
441
|
shaderDefines["CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO"] = true;
|
|
513
442
|
intersectionCount += 2;
|
|
@@ -516,15 +445,12 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
516
445
|
shaderUniforms.cylinderRenderAngleMinMax = Cartesian2.fromElements(
|
|
517
446
|
renderMinAngle,
|
|
518
447
|
renderMaxAngle,
|
|
519
|
-
shaderUniforms.
|
|
448
|
+
shaderUniforms.cylinderRenderAngleMinMax
|
|
520
449
|
);
|
|
521
450
|
}
|
|
522
451
|
|
|
523
452
|
if (shapeHasAngle) {
|
|
524
453
|
shaderDefines["CYLINDER_HAS_SHAPE_BOUNDS_ANGLE"] = true;
|
|
525
|
-
if (shapeIsAngleRangeZero) {
|
|
526
|
-
shaderDefines["CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_RANGE_EQUAL_ZERO"] = true;
|
|
527
|
-
}
|
|
528
454
|
if (shapeIsMinAngleDiscontinuity) {
|
|
529
455
|
shaderDefines["CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY"] = true;
|
|
530
456
|
}
|
|
@@ -553,13 +479,21 @@ VoxelCylinderShape.prototype.update = function (
|
|
|
553
479
|
// offset = -uvMinAngle / (uvMaxAngle - uvMinAngle)
|
|
554
480
|
// offset = -((minAngle - pi) / (2.0 * pi)) / (((maxAngle - pi) / (2.0 * pi)) - ((minAngle - pi) / (2.0 * pi)))
|
|
555
481
|
// offset = -(minAngle - pi) / (maxAngle - minAngle)
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
482
|
+
if (shapeAngleRange <= epsilonAngle) {
|
|
483
|
+
shaderUniforms.cylinderUvToShapeUvAngle = Cartesian2.fromElements(
|
|
484
|
+
0.0,
|
|
485
|
+
1.0,
|
|
486
|
+
shaderUniforms.cylinderUvToShapeUvAngle
|
|
487
|
+
);
|
|
488
|
+
} else {
|
|
489
|
+
const scale = defaultAngleRange / shapeAngleRange;
|
|
490
|
+
const offset = -(shapeMinAngle - defaultMinAngle) / shapeAngleRange;
|
|
491
|
+
shaderUniforms.cylinderUvToShapeUvAngle = Cartesian2.fromElements(
|
|
492
|
+
scale,
|
|
493
|
+
offset,
|
|
494
|
+
shaderUniforms.cylinderUvToShapeUvAngle
|
|
495
|
+
);
|
|
496
|
+
}
|
|
563
497
|
}
|
|
564
498
|
|
|
565
499
|
this.shaderMaximumIntersectionsLength = intersectionCount;
|
|
@@ -645,65 +579,85 @@ VoxelCylinderShape.prototype.computeOrientedBoundingBoxForTile = function (
|
|
|
645
579
|
);
|
|
646
580
|
};
|
|
647
581
|
|
|
648
|
-
const
|
|
649
|
-
const
|
|
650
|
-
const
|
|
651
|
-
const scratchScaleRatio = new Cartesian3();
|
|
582
|
+
const sampleSizeScratch = new Cartesian3();
|
|
583
|
+
const scratchTileMinBounds = new Cartesian3();
|
|
584
|
+
const scratchTileMaxBounds = new Cartesian3();
|
|
652
585
|
|
|
653
586
|
/**
|
|
654
|
-
* Computes an
|
|
587
|
+
* Computes an oriented bounding box for a specified sample within a specified tile.
|
|
655
588
|
* The update function must be called before calling this function.
|
|
656
589
|
*
|
|
657
|
-
* @param {
|
|
658
|
-
* @
|
|
590
|
+
* @param {SpatialNode} spatialNode The spatial node containing the sample
|
|
591
|
+
* @param {Cartesian3} tileDimensions The size of the tile in number of samples, before padding
|
|
592
|
+
* @param {Cartesian3} tileUv The sample coordinate within the tile
|
|
593
|
+
* @param {OrientedBoundingBox} result The oriented bounding box that will be set to enclose the specified sample
|
|
594
|
+
* @returns {OrientedBoundingBox} The oriented bounding box.
|
|
659
595
|
*/
|
|
660
|
-
VoxelCylinderShape.prototype.
|
|
661
|
-
|
|
596
|
+
VoxelCylinderShape.prototype.computeOrientedBoundingBoxForSample = function (
|
|
597
|
+
spatialNode,
|
|
598
|
+
tileDimensions,
|
|
599
|
+
tileUv,
|
|
600
|
+
result
|
|
662
601
|
) {
|
|
663
602
|
//>>includeStart('debug', pragmas.debug);
|
|
664
|
-
Check.typeOf.object("
|
|
603
|
+
Check.typeOf.object("spatialNode", spatialNode);
|
|
604
|
+
Check.typeOf.object("tileDimensions", tileDimensions);
|
|
605
|
+
Check.typeOf.object("tileUv", tileUv);
|
|
606
|
+
Check.typeOf.object("result", result);
|
|
665
607
|
//>>includeEnd('debug');
|
|
666
608
|
|
|
667
|
-
const
|
|
668
|
-
const
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
const
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
const
|
|
699
|
-
const
|
|
700
|
-
const
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
);
|
|
705
|
-
const
|
|
706
|
-
|
|
609
|
+
const tileSizeAtLevel = 1.0 / Math.pow(2.0, spatialNode.level);
|
|
610
|
+
const sampleSize = Cartesian3.divideComponents(
|
|
611
|
+
Cartesian3.ONE,
|
|
612
|
+
tileDimensions,
|
|
613
|
+
sampleSizeScratch
|
|
614
|
+
);
|
|
615
|
+
const sampleSizeAtLevel = Cartesian3.multiplyByScalar(
|
|
616
|
+
sampleSize,
|
|
617
|
+
tileSizeAtLevel,
|
|
618
|
+
sampleSizeScratch
|
|
619
|
+
);
|
|
620
|
+
|
|
621
|
+
const minLerp = Cartesian3.multiplyByScalar(
|
|
622
|
+
Cartesian3.fromElements(
|
|
623
|
+
spatialNode.x + tileUv.x,
|
|
624
|
+
spatialNode.y + tileUv.y,
|
|
625
|
+
spatialNode.z + tileUv.z,
|
|
626
|
+
scratchTileMinBounds
|
|
627
|
+
),
|
|
628
|
+
tileSizeAtLevel,
|
|
629
|
+
scratchTileMinBounds
|
|
630
|
+
);
|
|
631
|
+
const maxLerp = Cartesian3.add(
|
|
632
|
+
minLerp,
|
|
633
|
+
sampleSizeAtLevel,
|
|
634
|
+
scratchTileMaxBounds
|
|
635
|
+
);
|
|
636
|
+
|
|
637
|
+
const minimumRadius = this._minimumRadius;
|
|
638
|
+
const maximumRadius = this._maximumRadius;
|
|
639
|
+
const minimumHeight = this._minimumHeight;
|
|
640
|
+
const maximumHeight = this._maximumHeight;
|
|
641
|
+
const minimumAngle = this._minimumAngle;
|
|
642
|
+
const maximumAngle = this._maximumAngle;
|
|
643
|
+
|
|
644
|
+
const radiusStart = CesiumMath.lerp(minimumRadius, maximumRadius, minLerp.x);
|
|
645
|
+
const radiusEnd = CesiumMath.lerp(minimumRadius, maximumRadius, maxLerp.x);
|
|
646
|
+
const heightStart = CesiumMath.lerp(minimumHeight, maximumHeight, minLerp.y);
|
|
647
|
+
const heightEnd = CesiumMath.lerp(minimumHeight, maximumHeight, maxLerp.y);
|
|
648
|
+
const angleStart = CesiumMath.lerp(minimumAngle, maximumAngle, minLerp.z);
|
|
649
|
+
const angleEnd = CesiumMath.lerp(minimumAngle, maximumAngle, maxLerp.z);
|
|
650
|
+
|
|
651
|
+
return getCylinderChunkObb(
|
|
652
|
+
radiusStart,
|
|
653
|
+
radiusEnd,
|
|
654
|
+
heightStart,
|
|
655
|
+
heightEnd,
|
|
656
|
+
angleStart,
|
|
657
|
+
angleEnd,
|
|
658
|
+
this.shapeTransform,
|
|
659
|
+
result
|
|
660
|
+
);
|
|
707
661
|
};
|
|
708
662
|
|
|
709
663
|
/**
|