@cesium/engine 7.0.0 → 8.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/Workers/{chunk-MY3VNFGQ.js → chunk-23UFSGND.js} +7 -7
- package/Build/Workers/{chunk-IQBYFRVW.js → chunk-2A75IWRS.js} +7 -7
- package/Build/Workers/{chunk-VRGFV2UO.js → chunk-2FRVPMCS.js} +10 -10
- package/Build/Workers/{chunk-46UD5ABS.js → chunk-2FWRMUTY.js} +4 -4
- package/Build/Workers/{chunk-DTAIXKTO.js → chunk-2UPKWTMJ.js} +6 -6
- package/Build/Workers/{chunk-6VJVYK2V.js → chunk-34FXV7D7.js} +2 -2
- package/Build/Workers/{chunk-ODW7WYM4.js → chunk-3VAZEH7M.js} +2 -2
- package/Build/Workers/{chunk-U2VCRRQW.js → chunk-4DO5W5XZ.js} +6 -6
- package/Build/Workers/{chunk-VK3EJHWI.js → chunk-4H7PY4U5.js} +2 -2
- package/Build/Workers/{chunk-RV7ZYPFT.js → chunk-5QULIR53.js} +4 -4
- package/Build/Workers/{chunk-JY5YEZFA.js → chunk-7TC63SJW.js} +8 -8
- package/Build/Workers/{chunk-JJ4VBOQ3.js → chunk-7ZFGPDJA.js} +4 -4
- package/Build/Workers/{chunk-FP6GYBFX.js → chunk-A5DWLWCY.js} +10 -10
- package/Build/Workers/{chunk-5M3U6ZMA.js → chunk-BBWDMCVU.js} +1 -1
- package/Build/Workers/{chunk-WZU2YLWG.js → chunk-BG4UCVXN.js} +3 -3
- package/Build/Workers/{chunk-5WQ523AW.js → chunk-BIKA3NRA.js} +5 -5
- package/Build/Workers/{chunk-PTQQUQC3.js → chunk-BROJAZRZ.js} +13 -13
- package/Build/Workers/{chunk-YUCVWAY6.js → chunk-DDUQAJ4P.js} +7 -7
- package/Build/Workers/{chunk-2HJWSU7B.js → chunk-EERJKOAF.js} +4 -4
- package/Build/Workers/{chunk-LZGHD6NY.js → chunk-EG6PTBY2.js} +15 -15
- package/Build/Workers/{chunk-IX2JCCNM.js → chunk-EHWHNOEX.js} +1 -1
- package/Build/Workers/{chunk-NKPBIX7F.js → chunk-F3YA3Y2Z.js} +1 -1
- package/Build/Workers/{chunk-L2ZN645J.js → chunk-F4HFJMGM.js} +6 -6
- package/Build/Workers/{chunk-F6SE42BK.js → chunk-FJKNFAKQ.js} +15 -472
- package/Build/Workers/{chunk-PNBGBETF.js → chunk-FNIRWHJB.js} +10 -10
- package/Build/Workers/{chunk-RAEV7K66.js → chunk-FZRIVR7Y.js} +5 -5
- package/Build/Workers/{chunk-AIPU2VSX.js → chunk-G43QFN4Q.js} +6 -6
- package/Build/Workers/{chunk-ZUA2UUNV.js → chunk-GATZHF3K.js} +2 -2
- package/Build/Workers/{chunk-ZK5JOS3D.js → chunk-GRC2ZTAF.js} +14 -14
- package/Build/Workers/{chunk-5YLJ77FF.js → chunk-HU6N6EXB.js} +10 -10
- package/Build/Workers/{chunk-4EBHOMFX.js → chunk-I46ZRR5W.js} +17 -17
- package/Build/Workers/{chunk-LZ7JIV3K.js → chunk-JURN7NPV.js} +17 -17
- package/Build/Workers/{chunk-JCNXK6EL.js → chunk-KKCR2YOP.js} +11 -11
- package/Build/Workers/{chunk-S6SKF6DT.js → chunk-LPR3YNP2.js} +5 -5
- package/Build/Workers/{chunk-UDO6BFSF.js → chunk-M7ERACJJ.js} +13 -13
- package/Build/Workers/{chunk-BZP4T2JJ.js → chunk-MDWEGWPA.js} +10 -10
- package/Build/Workers/{chunk-72SANQJV.js → chunk-OGXZVPPM.js} +9 -5
- package/Build/Workers/{chunk-AR5DNBJ4.js → chunk-PGSJK77E.js} +6 -6
- package/Build/Workers/{chunk-GEJTYLCO.js → chunk-PPH7OFP3.js} +5 -5
- package/Build/Workers/{chunk-OVLG3FRS.js → chunk-SH5USDPI.js} +6 -6
- package/Build/Workers/{chunk-6HZQPRUS.js → chunk-SOWMRMWA.js} +1 -1
- package/Build/Workers/{chunk-JXDC723O.js → chunk-STW2DGFI.js} +2 -2
- package/Build/Workers/{chunk-5HDYHG3F.js → chunk-T3XIFPYR.js} +13 -13
- package/Build/Workers/chunk-TTUZP4BO.js +501 -0
- package/Build/Workers/{chunk-7XEAYGZK.js → chunk-UEXTBDBE.js} +10 -10
- package/Build/Workers/{chunk-GV56Q4LU.js → chunk-VOXYEYJT.js} +11 -11
- package/Build/Workers/{chunk-NY3K4IM3.js → chunk-X4356LRH.js} +12 -12
- package/Build/Workers/{chunk-S4MAZ3SS.js → chunk-XGI5BXZY.js} +2 -2
- package/Build/Workers/{chunk-UAEW6HKG.js → chunk-Y2ME2IJV.js} +13 -13
- package/Build/Workers/{chunk-XWXM2O2R.js → chunk-Y5UQJLYE.js} +6 -6
- package/Build/Workers/{chunk-QZAD5O7I.js → chunk-YJEBABKH.js} +7 -7
- package/Build/Workers/{chunk-UGK3FCDY.js → chunk-YWTJ2B4B.js} +1 -1
- package/Build/Workers/{chunk-R5X4OQT4.js → chunk-Z3TIFFGF.js} +7 -7
- package/Build/Workers/{chunk-WBQCVXR3.js → chunk-ZT7KWISZ.js} +4 -4
- 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 +32 -31
- 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/Ellipsoid.js +6 -0
- package/Source/Core/IntersectionTests.js +6 -3
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/PixelFormat.js +5 -0
- package/Source/Core/Transforms.js +3 -0
- 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/Camera.js +46 -4
- package/Source/Scene/Cesium3DTileset.js +44 -6
- package/Source/Scene/Cesium3DTilesetBaseTraversal.js +2 -4
- package/Source/Scene/FrameState.js +5 -0
- 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/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 -2
- 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 +76 -0
- package/Source/Scene/VoxelCell.js +273 -0
- package/Source/Scene/VoxelCylinderShape.js +114 -43
- package/Source/Scene/VoxelEllipsoidShape.js +158 -116
- package/Source/Scene/VoxelPrimitive.js +3 -1
- package/Source/Scene/VoxelRenderResources.js +3 -0
- package/Source/Scene/VoxelShape.js +13 -0
- 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 +2 -0
- package/Source/Shaders/Voxels/IntersectCylinder.glsl +14 -111
- package/Source/Shaders/Voxels/IntersectCylinder.js +14 -111
- package/Source/Shaders/Voxels/IntersectEllipsoid.glsl +32 -113
- package/Source/Shaders/Voxels/IntersectEllipsoid.js +32 -113
- package/Source/Shaders/Voxels/IntersectLongitude.glsl +102 -0
- package/Source/Shaders/Voxels/IntersectLongitude.js +104 -0
- package/Source/Shaders/Voxels/VoxelFS.glsl +39 -1
- package/Source/Shaders/Voxels/VoxelFS.js +39 -1
- package/Source/Shaders/Voxels/convertUvToCylinder.glsl +19 -37
- package/Source/Shaders/Voxels/convertUvToCylinder.js +19 -37
- package/Source/Shaders/Voxels/convertUvToEllipsoid.glsl +24 -44
- package/Source/Shaders/Voxels/convertUvToEllipsoid.js +24 -44
- package/Source/Workers/createGeometry.js +40 -11
- package/Source/Workers/decodeI3S.js +720 -94
- package/index.d.ts +296 -11
- package/index.js +102 -94
- package/package.json +1 -1
|
@@ -10,7 +10,11 @@ export default "// See Intersection.glsl for the definition of intersectScene\n\
|
|
|
10
10
|
// See Megatexture.glsl for the definition of accumulatePropertiesFromMegatexture\n\
|
|
11
11
|
\n\
|
|
12
12
|
#define STEP_COUNT_MAX 1000 // Harcoded value because GLSL doesn't like variable length loops\n\
|
|
13
|
-
#
|
|
13
|
+
#if defined(PICKING_VOXEL)\n\
|
|
14
|
+
#define ALPHA_ACCUM_MAX 0.1\n\
|
|
15
|
+
#else\n\
|
|
16
|
+
#define ALPHA_ACCUM_MAX 0.98 // Must be > 0.0 and <= 1.0\n\
|
|
17
|
+
#endif\n\
|
|
14
18
|
\n\
|
|
15
19
|
uniform mat3 u_transformDirectionViewToLocal;\n\
|
|
16
20
|
uniform vec3 u_cameraPositionUv;\n\
|
|
@@ -43,6 +47,30 @@ vec4 getStepSize(in SampleData sampleData, in Ray viewRay, in RayShapeIntersecti
|
|
|
43
47
|
#endif\n\
|
|
44
48
|
}\n\
|
|
45
49
|
\n\
|
|
50
|
+
vec2 packIntToVec2(int value) {\n\
|
|
51
|
+
float shifted = float(value) / 255.0;\n\
|
|
52
|
+
float lowBits = fract(shifted);\n\
|
|
53
|
+
float highBits = floor(shifted) / 255.0;\n\
|
|
54
|
+
return vec2(highBits, lowBits);\n\
|
|
55
|
+
}\n\
|
|
56
|
+
\n\
|
|
57
|
+
vec2 packFloatToVec2(float value) {\n\
|
|
58
|
+
float lowBits = fract(value);\n\
|
|
59
|
+
float highBits = floor(value) / 255.0;\n\
|
|
60
|
+
return vec2(highBits, lowBits);\n\
|
|
61
|
+
}\n\
|
|
62
|
+
\n\
|
|
63
|
+
int getSampleIndex(in vec3 tileUv) {\n\
|
|
64
|
+
ivec3 voxelDimensions = u_dimensions;\n\
|
|
65
|
+
vec3 tileCoordinate = clamp(tileUv, 0.0, 1.0) * vec3(voxelDimensions);\n\
|
|
66
|
+
ivec3 tileIndex = ivec3(floor(tileCoordinate));\n\
|
|
67
|
+
#if defined(PADDING)\n\
|
|
68
|
+
voxelDimensions += u_paddingBefore + u_paddingAfter;\n\
|
|
69
|
+
tileIndex += u_paddingBefore;\n\
|
|
70
|
+
#endif\n\
|
|
71
|
+
return tileIndex.x + voxelDimensions.x * (tileIndex.y + voxelDimensions.y * tileIndex.z);\n\
|
|
72
|
+
}\n\
|
|
73
|
+
\n\
|
|
46
74
|
void main()\n\
|
|
47
75
|
{\n\
|
|
48
76
|
vec4 fragCoord = gl_FragCoord;\n\
|
|
@@ -103,6 +131,8 @@ void main()\n\
|
|
|
103
131
|
fragmentInput.voxel.viewDirWorld = viewDirWorld;\n\
|
|
104
132
|
fragmentInput.voxel.surfaceNormal = step.xyz;\n\
|
|
105
133
|
fragmentInput.voxel.travelDistance = step.w;\n\
|
|
134
|
+
fragmentInput.voxel.tileIndex = sampleDatas[0].megatextureIndex;\n\
|
|
135
|
+
fragmentInput.voxel.sampleIndex = getSampleIndex(sampleDatas[0].tileUv);\n\
|
|
106
136
|
\n\
|
|
107
137
|
// Run the custom shader\n\
|
|
108
138
|
czm_modelMaterial materialOutput;\n\
|
|
@@ -165,6 +195,14 @@ void main()\n\
|
|
|
165
195
|
discard;\n\
|
|
166
196
|
}\n\
|
|
167
197
|
out_FragColor = u_pickColor;\n\
|
|
198
|
+
#elif defined(PICKING_VOXEL)\n\
|
|
199
|
+
// If alpha is 0.0 there is nothing to pick\n\
|
|
200
|
+
if (colorAccum.a == 0.0) {\n\
|
|
201
|
+
discard;\n\
|
|
202
|
+
}\n\
|
|
203
|
+
vec2 megatextureId = packIntToVec2(sampleDatas[0].megatextureIndex);\n\
|
|
204
|
+
vec2 sampleIndex = packIntToVec2(getSampleIndex(sampleDatas[0].tileUv));\n\
|
|
205
|
+
out_FragColor = vec4(megatextureId, sampleIndex);\n\
|
|
168
206
|
#else\n\
|
|
169
207
|
out_FragColor = colorAccum;\n\
|
|
170
208
|
#endif\n\
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/* Cylinder defines (set in Scene/VoxelCylinderShape.js)
|
|
2
2
|
#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS
|
|
3
|
-
#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS_FLAT
|
|
4
3
|
#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT
|
|
5
|
-
#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT_FLAT
|
|
6
4
|
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE
|
|
7
|
-
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_RANGE_EQUAL_ZERO
|
|
8
5
|
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY
|
|
9
6
|
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY
|
|
10
7
|
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED
|
|
@@ -29,46 +26,31 @@
|
|
|
29
26
|
vec3 convertUvToShapeUvSpace(in vec3 positionUv) {
|
|
30
27
|
vec3 positionLocal = positionUv * 2.0 - 1.0; // [-1,+1]
|
|
31
28
|
|
|
32
|
-
//
|
|
33
|
-
#if defined(
|
|
34
|
-
|
|
35
|
-
#else
|
|
36
|
-
float radius = length(positionLocal.xy); // [0,1]
|
|
37
|
-
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS)
|
|
38
|
-
radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y; // x = scale, y = offset
|
|
39
|
-
#endif
|
|
29
|
+
float radius = length(positionLocal.xy); // [0,1]
|
|
30
|
+
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS)
|
|
31
|
+
radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y; // x = scale, y = offset
|
|
40
32
|
#endif
|
|
41
33
|
|
|
42
|
-
//
|
|
43
|
-
#if defined(
|
|
44
|
-
|
|
45
|
-
#else
|
|
46
|
-
float height = positionUv.z; // [0,1]
|
|
47
|
-
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT)
|
|
48
|
-
height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y; // x = scale, y = offset
|
|
49
|
-
#endif
|
|
34
|
+
float height = positionUv.z; // [0,1]
|
|
35
|
+
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT)
|
|
36
|
+
height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y; // x = scale, y = offset
|
|
50
37
|
#endif
|
|
51
38
|
|
|
52
|
-
//
|
|
53
|
-
#if defined(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
#
|
|
58
|
-
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED)
|
|
59
|
-
// Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative.
|
|
60
|
-
angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid);
|
|
61
|
-
#endif
|
|
62
|
-
|
|
63
|
-
// Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity.
|
|
64
|
-
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY)
|
|
65
|
-
angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle;
|
|
66
|
-
#elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY)
|
|
67
|
-
angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle;
|
|
68
|
-
#endif
|
|
39
|
+
float angle = (atan(positionLocal.y, positionLocal.x) + czm_pi) / czm_twoPi; // [0,1]
|
|
40
|
+
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)
|
|
41
|
+
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED)
|
|
42
|
+
// Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative.
|
|
43
|
+
angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid);
|
|
44
|
+
#endif
|
|
69
45
|
|
|
70
|
-
|
|
46
|
+
// Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity.
|
|
47
|
+
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY)
|
|
48
|
+
angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle;
|
|
49
|
+
#elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY)
|
|
50
|
+
angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle;
|
|
71
51
|
#endif
|
|
52
|
+
|
|
53
|
+
angle = angle * u_cylinderUvToShapeUvAngle.x + u_cylinderUvToShapeUvAngle.y; // x = scale, y = offset
|
|
72
54
|
#endif
|
|
73
55
|
|
|
74
56
|
return vec3(radius, height, angle);
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
//This file is automatically rebuilt by the Cesium build process.
|
|
2
2
|
export default "/* Cylinder defines (set in Scene/VoxelCylinderShape.js)\n\
|
|
3
3
|
#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS\n\
|
|
4
|
-
#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS_FLAT\n\
|
|
5
4
|
#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT\n\
|
|
6
|
-
#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT_FLAT\n\
|
|
7
5
|
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE\n\
|
|
8
|
-
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_RANGE_EQUAL_ZERO\n\
|
|
9
6
|
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY\n\
|
|
10
7
|
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY\n\
|
|
11
8
|
#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED\n\
|
|
@@ -30,46 +27,31 @@ export default "/* Cylinder defines (set in Scene/VoxelCylinderShape.js)\n\
|
|
|
30
27
|
vec3 convertUvToShapeUvSpace(in vec3 positionUv) {\n\
|
|
31
28
|
vec3 positionLocal = positionUv * 2.0 - 1.0; // [-1,+1]\n\
|
|
32
29
|
\n\
|
|
33
|
-
//
|
|
34
|
-
#if defined(
|
|
35
|
-
|
|
36
|
-
#else\n\
|
|
37
|
-
float radius = length(positionLocal.xy); // [0,1]\n\
|
|
38
|
-
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS)\n\
|
|
39
|
-
radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y; // x = scale, y = offset\n\
|
|
40
|
-
#endif\n\
|
|
30
|
+
float radius = length(positionLocal.xy); // [0,1]\n\
|
|
31
|
+
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS)\n\
|
|
32
|
+
radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y; // x = scale, y = offset\n\
|
|
41
33
|
#endif\n\
|
|
42
34
|
\n\
|
|
43
|
-
//
|
|
44
|
-
#if defined(
|
|
45
|
-
|
|
46
|
-
#else\n\
|
|
47
|
-
float height = positionUv.z; // [0,1]\n\
|
|
48
|
-
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT)\n\
|
|
49
|
-
height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y; // x = scale, y = offset\n\
|
|
50
|
-
#endif\n\
|
|
35
|
+
float height = positionUv.z; // [0,1]\n\
|
|
36
|
+
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT)\n\
|
|
37
|
+
height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y; // x = scale, y = offset\n\
|
|
51
38
|
#endif\n\
|
|
52
39
|
\n\
|
|
53
|
-
//
|
|
54
|
-
#if defined(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
#
|
|
59
|
-
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED)\n\
|
|
60
|
-
// Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative.\n\
|
|
61
|
-
angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid);\n\
|
|
62
|
-
#endif\n\
|
|
63
|
-
\n\
|
|
64
|
-
// Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity.\n\
|
|
65
|
-
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY)\n\
|
|
66
|
-
angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle;\n\
|
|
67
|
-
#elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY)\n\
|
|
68
|
-
angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle;\n\
|
|
69
|
-
#endif\n\
|
|
40
|
+
float angle = (atan(positionLocal.y, positionLocal.x) + czm_pi) / czm_twoPi; // [0,1]\n\
|
|
41
|
+
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)\n\
|
|
42
|
+
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED)\n\
|
|
43
|
+
// Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative.\n\
|
|
44
|
+
angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid);\n\
|
|
45
|
+
#endif\n\
|
|
70
46
|
\n\
|
|
71
|
-
|
|
47
|
+
// Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity.\n\
|
|
48
|
+
#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY)\n\
|
|
49
|
+
angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle;\n\
|
|
50
|
+
#elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY)\n\
|
|
51
|
+
angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle;\n\
|
|
72
52
|
#endif\n\
|
|
53
|
+
\n\
|
|
54
|
+
angle = angle * u_cylinderUvToShapeUvAngle.x + u_cylinderUvToShapeUvAngle.y; // x = scale, y = offset\n\
|
|
73
55
|
#endif\n\
|
|
74
56
|
\n\
|
|
75
57
|
return vec3(radius, height, angle);\n\
|
|
@@ -2,11 +2,8 @@
|
|
|
2
2
|
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY
|
|
3
3
|
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY
|
|
4
4
|
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE
|
|
5
|
-
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO
|
|
6
5
|
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED
|
|
7
6
|
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE
|
|
8
|
-
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE_RANGE_EQUAL_ZERO
|
|
9
|
-
#define ELLIPSOID_HAS_SHAPE_BOUNDS_HEIGHT_MIN
|
|
10
7
|
#define ELLIPSOID_HAS_SHAPE_BOUNDS_HEIGHT_FLAT
|
|
11
8
|
#define ELLIPSOID_IS_SPHERE
|
|
12
9
|
*/
|
|
@@ -24,7 +21,7 @@ uniform vec3 u_ellipsoidRadiiUv; // [0,1]
|
|
|
24
21
|
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)
|
|
25
22
|
uniform vec2 u_ellipsoidUvToShapeUvLatitude; // x = scale, y = offset
|
|
26
23
|
#endif
|
|
27
|
-
#if
|
|
24
|
+
#if !defined(ELLIPSOID_HAS_SHAPE_BOUNDS_HEIGHT_FLAT)
|
|
28
25
|
uniform float u_ellipsoidInverseHeightDifferenceUv;
|
|
29
26
|
uniform vec2 u_ellipseInnerRadiiUv; // [0,1]
|
|
30
27
|
#endif
|
|
@@ -66,38 +63,30 @@ vec3 convertUvToShapeUvSpace(in vec3 positionUv) {
|
|
|
66
63
|
#endif
|
|
67
64
|
|
|
68
65
|
// Compute longitude
|
|
69
|
-
|
|
70
|
-
float longitude = 1.0;
|
|
71
|
-
#else
|
|
72
|
-
float longitude = (atan(normal.y, normal.x) + czm_pi) / czm_twoPi;
|
|
66
|
+
float longitude = (atan(normal.y, normal.x) + czm_pi) / czm_twoPi;
|
|
73
67
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
68
|
+
// Correct the angle when max < min
|
|
69
|
+
// Technically this should compare against min longitude - but it has precision problems so compare against the middle of empty space.
|
|
70
|
+
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED)
|
|
71
|
+
longitude += float(longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z);
|
|
72
|
+
#endif
|
|
79
73
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
74
|
+
// Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity.
|
|
75
|
+
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY)
|
|
76
|
+
longitude = longitude > u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.x : longitude;
|
|
77
|
+
#endif
|
|
78
|
+
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY)
|
|
79
|
+
longitude = longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.y : longitude;
|
|
80
|
+
#endif
|
|
87
81
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
#endif
|
|
82
|
+
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE)
|
|
83
|
+
longitude = longitude * u_ellipsoidUvToShapeUvLongitude.x + u_ellipsoidUvToShapeUvLongitude.y;
|
|
91
84
|
#endif
|
|
92
85
|
|
|
93
86
|
// Compute latitude
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
float latitude = (asin(normal.z) + czm_piOverTwo) / czm_pi;
|
|
98
|
-
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)
|
|
99
|
-
latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y;
|
|
100
|
-
#endif
|
|
87
|
+
float latitude = (asin(normal.z) + czm_piOverTwo) / czm_pi;
|
|
88
|
+
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)
|
|
89
|
+
latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y;
|
|
101
90
|
#endif
|
|
102
91
|
|
|
103
92
|
// Compute height
|
|
@@ -108,21 +97,12 @@ vec3 convertUvToShapeUvSpace(in vec3 positionUv) {
|
|
|
108
97
|
float height = 1.0;
|
|
109
98
|
#else
|
|
110
99
|
#if defined(ELLIPSOID_IS_SPHERE)
|
|
111
|
-
|
|
112
|
-
float height = (length(posEllipsoid) - u_ellipseInnerRadiiUv.x) * u_ellipsoidInverseHeightDifferenceUv;
|
|
113
|
-
#else
|
|
114
|
-
float height = length(posEllipsoid);
|
|
115
|
-
#endif
|
|
100
|
+
float height = (length(posEllipsoid) - u_ellipseInnerRadiiUv.x) * u_ellipsoidInverseHeightDifferenceUv;
|
|
116
101
|
#else
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
float height = ellipseDistanceIterative(posEllipse, u_ellipseInnerRadiiUv) * u_ellipsoidInverseHeightDifferenceUv;
|
|
122
|
-
#else
|
|
123
|
-
// TODO: this is probably not correct
|
|
124
|
-
float height = length(posEllipsoid);
|
|
125
|
-
#endif
|
|
102
|
+
// Convert the 3D position to a 2D position relative to the ellipse (radii.x, radii.z) (assuming radii.x == radii.y which is true for WGS84).
|
|
103
|
+
// This is an optimization so that math can be done with ellipses instead of ellipsoids.
|
|
104
|
+
vec2 posEllipse = vec2(length(posEllipsoid.xy), posEllipsoid.z);
|
|
105
|
+
float height = ellipseDistanceIterative(posEllipse, u_ellipseInnerRadiiUv) * u_ellipsoidInverseHeightDifferenceUv;
|
|
126
106
|
#endif
|
|
127
107
|
#endif
|
|
128
108
|
|
|
@@ -3,11 +3,8 @@ export default "/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js)\n\
|
|
|
3
3
|
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY\n\
|
|
4
4
|
#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY\n\
|
|
5
5
|
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE\n\
|
|
6
|
-
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO\n\
|
|
7
6
|
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED\n\
|
|
8
7
|
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE\n\
|
|
9
|
-
#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE_RANGE_EQUAL_ZERO\n\
|
|
10
|
-
#define ELLIPSOID_HAS_SHAPE_BOUNDS_HEIGHT_MIN\n\
|
|
11
8
|
#define ELLIPSOID_HAS_SHAPE_BOUNDS_HEIGHT_FLAT\n\
|
|
12
9
|
#define ELLIPSOID_IS_SPHERE\n\
|
|
13
10
|
*/\n\
|
|
@@ -25,7 +22,7 @@ uniform vec3 u_ellipsoidRadiiUv; // [0,1]\n\
|
|
|
25
22
|
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)\n\
|
|
26
23
|
uniform vec2 u_ellipsoidUvToShapeUvLatitude; // x = scale, y = offset\n\
|
|
27
24
|
#endif\n\
|
|
28
|
-
#if
|
|
25
|
+
#if !defined(ELLIPSOID_HAS_SHAPE_BOUNDS_HEIGHT_FLAT)\n\
|
|
29
26
|
uniform float u_ellipsoidInverseHeightDifferenceUv;\n\
|
|
30
27
|
uniform vec2 u_ellipseInnerRadiiUv; // [0,1]\n\
|
|
31
28
|
#endif\n\
|
|
@@ -67,38 +64,30 @@ vec3 convertUvToShapeUvSpace(in vec3 positionUv) {\n\
|
|
|
67
64
|
#endif\n\
|
|
68
65
|
\n\
|
|
69
66
|
// Compute longitude\n\
|
|
70
|
-
|
|
71
|
-
float longitude = 1.0;\n\
|
|
72
|
-
#else\n\
|
|
73
|
-
float longitude = (atan(normal.y, normal.x) + czm_pi) / czm_twoPi;\n\
|
|
67
|
+
float longitude = (atan(normal.y, normal.x) + czm_pi) / czm_twoPi;\n\
|
|
74
68
|
\n\
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
69
|
+
// Correct the angle when max < min\n\
|
|
70
|
+
// Technically this should compare against min longitude - but it has precision problems so compare against the middle of empty space.\n\
|
|
71
|
+
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED)\n\
|
|
72
|
+
longitude += float(longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z);\n\
|
|
73
|
+
#endif\n\
|
|
80
74
|
\n\
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
75
|
+
// Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity.\n\
|
|
76
|
+
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY)\n\
|
|
77
|
+
longitude = longitude > u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.x : longitude;\n\
|
|
78
|
+
#endif\n\
|
|
79
|
+
#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY)\n\
|
|
80
|
+
longitude = longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.y : longitude;\n\
|
|
81
|
+
#endif\n\
|
|
88
82
|
\n\
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
#endif\n\
|
|
83
|
+
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE)\n\
|
|
84
|
+
longitude = longitude * u_ellipsoidUvToShapeUvLongitude.x + u_ellipsoidUvToShapeUvLongitude.y;\n\
|
|
92
85
|
#endif\n\
|
|
93
86
|
\n\
|
|
94
87
|
// Compute latitude\n\
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
float latitude = (asin(normal.z) + czm_piOverTwo) / czm_pi;\n\
|
|
99
|
-
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)\n\
|
|
100
|
-
latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y;\n\
|
|
101
|
-
#endif\n\
|
|
88
|
+
float latitude = (asin(normal.z) + czm_piOverTwo) / czm_pi;\n\
|
|
89
|
+
#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE)\n\
|
|
90
|
+
latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y;\n\
|
|
102
91
|
#endif\n\
|
|
103
92
|
\n\
|
|
104
93
|
// Compute height\n\
|
|
@@ -109,21 +98,12 @@ vec3 convertUvToShapeUvSpace(in vec3 positionUv) {\n\
|
|
|
109
98
|
float height = 1.0;\n\
|
|
110
99
|
#else\n\
|
|
111
100
|
#if defined(ELLIPSOID_IS_SPHERE)\n\
|
|
112
|
-
|
|
113
|
-
float height = (length(posEllipsoid) - u_ellipseInnerRadiiUv.x) * u_ellipsoidInverseHeightDifferenceUv;\n\
|
|
114
|
-
#else\n\
|
|
115
|
-
float height = length(posEllipsoid);\n\
|
|
116
|
-
#endif\n\
|
|
101
|
+
float height = (length(posEllipsoid) - u_ellipseInnerRadiiUv.x) * u_ellipsoidInverseHeightDifferenceUv;\n\
|
|
117
102
|
#else\n\
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
float height = ellipseDistanceIterative(posEllipse, u_ellipseInnerRadiiUv) * u_ellipsoidInverseHeightDifferenceUv;\n\
|
|
123
|
-
#else\n\
|
|
124
|
-
// TODO: this is probably not correct\n\
|
|
125
|
-
float height = length(posEllipsoid);\n\
|
|
126
|
-
#endif\n\
|
|
103
|
+
// Convert the 3D position to a 2D position relative to the ellipse (radii.x, radii.z) (assuming radii.x == radii.y which is true for WGS84).\n\
|
|
104
|
+
// This is an optimization so that math can be done with ellipses instead of ellipsoids.\n\
|
|
105
|
+
vec2 posEllipse = vec2(length(posEllipsoid.xy), posEllipsoid.z);\n\
|
|
106
|
+
float height = ellipseDistanceIterative(posEllipse, u_ellipseInnerRadiiUv) * u_ellipsoidInverseHeightDifferenceUv;\n\
|
|
127
107
|
#endif\n\
|
|
128
108
|
#endif\n\
|
|
129
109
|
\n\
|
|
@@ -1,23 +1,46 @@
|
|
|
1
|
+
import DeveloperError from "../Core/DeveloperError.js";
|
|
2
|
+
import defaultValue from "../Core/defaultValue.js";
|
|
1
3
|
import defined from "../Core/defined.js";
|
|
2
4
|
import PrimitivePipeline from "../Scene/PrimitivePipeline.js";
|
|
3
5
|
import createTaskProcessorWorker from "./createTaskProcessorWorker.js";
|
|
6
|
+
/* global require */
|
|
4
7
|
|
|
5
8
|
const moduleCache = {};
|
|
6
9
|
|
|
7
|
-
async function getModule(moduleName) {
|
|
8
|
-
let module = moduleCache[moduleName];
|
|
9
|
-
|
|
10
|
+
async function getModule(moduleName, modulePath) {
|
|
11
|
+
let module = defaultValue(moduleCache[modulePath] ?? moduleCache[moduleName]);
|
|
12
|
+
|
|
13
|
+
if (defined(module)) {
|
|
14
|
+
return module;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (defined(modulePath)) {
|
|
18
|
+
// ignore moduleName and use the path to import
|
|
10
19
|
if (typeof exports === "object") {
|
|
11
20
|
// Use CommonJS-style require.
|
|
12
|
-
|
|
13
|
-
moduleCache[module] = module = require(`Workers/${moduleName}`);
|
|
21
|
+
module = require(modulePath);
|
|
14
22
|
} else {
|
|
15
23
|
// Use ESM-style dynamic import
|
|
16
|
-
const result = await import(
|
|
24
|
+
const result = await import(modulePath);
|
|
17
25
|
module = result.default;
|
|
18
|
-
moduleCache[module] = module;
|
|
19
26
|
}
|
|
27
|
+
|
|
28
|
+
moduleCache[modulePath] = module;
|
|
29
|
+
return module;
|
|
20
30
|
}
|
|
31
|
+
|
|
32
|
+
if (typeof exports === "object") {
|
|
33
|
+
// Use CommonJS-style require.
|
|
34
|
+
module = require(`Workers/${moduleName}`);
|
|
35
|
+
} else {
|
|
36
|
+
// Use ESM-style dynamic import
|
|
37
|
+
const result = defined(modulePath)
|
|
38
|
+
? await import(modulePath)
|
|
39
|
+
: await import(`./${moduleName}.js`);
|
|
40
|
+
module = result.default;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
moduleCache[moduleName] = module;
|
|
21
44
|
return module;
|
|
22
45
|
}
|
|
23
46
|
|
|
@@ -30,11 +53,17 @@ async function createGeometry(parameters, transferableObjects) {
|
|
|
30
53
|
const task = subTasks[i];
|
|
31
54
|
const geometry = task.geometry;
|
|
32
55
|
const moduleName = task.moduleName;
|
|
56
|
+
const modulePath = task.modulePath;
|
|
57
|
+
|
|
58
|
+
if (defined(moduleName) && defined(modulePath)) {
|
|
59
|
+
throw new DeveloperError("Must only set moduleName or modulePath");
|
|
60
|
+
}
|
|
33
61
|
|
|
34
|
-
if (defined(moduleName)) {
|
|
35
|
-
resultsOrPromises[i] = getModule(
|
|
36
|
-
|
|
37
|
-
|
|
62
|
+
if (defined(moduleName) || defined(modulePath)) {
|
|
63
|
+
resultsOrPromises[i] = getModule(
|
|
64
|
+
moduleName,
|
|
65
|
+
modulePath
|
|
66
|
+
).then((createFunction) => createFunction(geometry, task.offset));
|
|
38
67
|
} else {
|
|
39
68
|
// Already created geometry
|
|
40
69
|
resultsOrPromises[i] = geometry;
|