@cesium/engine 22.1.0 → 22.3.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-YZWA5B4R.js → chunk-2MLJ46ZZ.js} +13 -13
- package/Build/Workers/{chunk-GKWOUMYA.js → chunk-4BBANFU6.js} +1 -1
- package/Build/Workers/{chunk-23T2IPHV.js → chunk-4O2ARYS7.js} +1 -1
- package/Build/Workers/{chunk-RXZDTDIY.js → chunk-4R6FGUFP.js} +9 -9
- package/Build/Workers/{chunk-UG2DPFOL.js → chunk-5PJB7ASO.js} +6 -6
- package/Build/Workers/{chunk-JKXPC5HD.js → chunk-6GBGEUWR.js} +3 -3
- package/Build/Workers/{chunk-YF2NVO5B.js → chunk-6WDMPXQ7.js} +12 -12
- package/Build/Workers/{chunk-B7JRBTT6.js → chunk-7ATKQRBM.js} +10 -10
- package/Build/Workers/{chunk-TDSVSW5A.js → chunk-7SLNBIZS.js} +5 -34
- package/Build/Workers/{chunk-2RCIRXNI.js → chunk-7U5YNLF3.js} +1 -1
- package/Build/Workers/{chunk-GTY4K4IA.js → chunk-AFGP5BXS.js} +7 -7
- package/Build/Workers/{chunk-WTLYD4FE.js → chunk-AWELU5C6.js} +14 -14
- package/Build/Workers/{chunk-IL5F6WEE.js → chunk-BO22JHBX.js} +3 -3
- package/Build/Workers/{chunk-YX562XOB.js → chunk-D2PEV362.js} +10 -10
- package/Build/Workers/{chunk-MKMZHRB3.js → chunk-D63Z7KKL.js} +11 -11
- package/Build/Workers/{chunk-P5CGIJUY.js → chunk-D6OKR3BQ.js} +2 -2
- package/Build/Workers/{chunk-GDU4RZSZ.js → chunk-E4YDCSQK.js} +9 -9
- package/Build/Workers/{chunk-KKGD7HAW.js → chunk-EAAH543Q.js} +11 -11
- package/Build/Workers/{chunk-I4REFVXB.js → chunk-EOSX23OS.js} +4 -4
- package/Build/Workers/{chunk-V35NQOJC.js → chunk-EUDHHS7K.js} +6 -6
- package/Build/Workers/{chunk-OXFU5HNU.js → chunk-EY5HOJFQ.js} +5 -5
- package/Build/Workers/{chunk-DMEFNTUV.js → chunk-FDOLXORR.js} +7 -7
- package/Build/Workers/{chunk-QEANVUGT.js → chunk-FS42VX2H.js} +2 -2
- package/Build/Workers/{chunk-L4JLDVCM.js → chunk-FUDC3KOT.js} +5 -5
- package/Build/Workers/{chunk-LIYMRHGR.js → chunk-HWGP4GVC.js} +13 -13
- package/Build/Workers/{chunk-KROSQJUA.js → chunk-IHFAFGR2.js} +2 -2
- package/Build/Workers/{chunk-SPA2KPH3.js → chunk-IXL46IYV.js} +12 -12
- package/Build/Workers/{chunk-A6YFUGJO.js → chunk-K2PLKJJG.js} +5 -5
- package/Build/Workers/{chunk-CW7W27IZ.js → chunk-K4PGSAR5.js} +8 -8
- package/Build/Workers/{chunk-DICY26ID.js → chunk-KIJR26N3.js} +16 -16
- package/Build/Workers/{chunk-YSYSXSHF.js → chunk-L4OFWHNI.js} +1 -1
- package/Build/Workers/{chunk-2AM4E2WD.js → chunk-LK7GEFGB.js} +2 -2
- package/Build/Workers/{chunk-W4XUEDU5.js → chunk-LWZHJWYK.js} +6 -6
- package/Build/Workers/{chunk-3YTMGEXW.js → chunk-LYBNPUEI.js} +4 -4
- package/Build/Workers/{chunk-4BHWJWS3.js → chunk-M5DVYXJJ.js} +6 -6
- package/Build/Workers/{chunk-COGPE5Z2.js → chunk-MASEF4OV.js} +8 -8
- package/Build/Workers/{chunk-QUAH3XOT.js → chunk-N66PIK46.js} +4 -4
- package/Build/Workers/{chunk-H6Q7E4BQ.js → chunk-N6XBJBI7.js} +6 -6
- package/Build/Workers/{chunk-Y4ALZ4SS.js → chunk-NO3LMU7T.js} +7 -7
- package/Build/Workers/{chunk-MO25ZQ2I.js → chunk-NVL7JXAQ.js} +10 -10
- package/Build/Workers/{chunk-DQSJEOZY.js → chunk-OOYICVOK.js} +1 -1
- package/Build/Workers/{chunk-CJOV55CW.js → chunk-PJLRXIMS.js} +17 -17
- package/Build/Workers/{chunk-AOIO5VUS.js → chunk-S2KVL7OJ.js} +8 -8
- package/Build/Workers/{chunk-URGEDZBS.js → chunk-T5MJDW43.js} +7 -7
- package/Build/Workers/{chunk-OOCGX2OD.js → chunk-TCOUGKXF.js} +4 -4
- package/Build/Workers/{chunk-A53R2F2L.js → chunk-TMGLPEZW.js} +4 -4
- package/Build/Workers/{chunk-6HKAPCSO.js → chunk-TY5JXMVO.js} +1 -1
- package/Build/Workers/{chunk-2MWF4IES.js → chunk-VIQIKMTZ.js} +14 -14
- package/Build/Workers/{chunk-5JKH4AMT.js → chunk-VRAAQ3FS.js} +2 -2
- package/Build/Workers/{chunk-CHNDJRYA.js → chunk-W5NV72VR.js} +17 -17
- package/Build/Workers/{chunk-HXKUEOOD.js → chunk-WHLGBMBC.js} +5 -5
- package/Build/Workers/{chunk-QFBCIX7J.js → chunk-WUWPKBOZ.js} +6 -6
- package/Build/Workers/{chunk-Z6DFT4D3.js → chunk-XLIJV3YZ.js} +10 -10
- package/Build/Workers/{chunk-WB4TSSBQ.js → chunk-Y5MRBKQN.js} +144 -53
- package/Build/Workers/{chunk-HHGOFZVQ.js → chunk-YHPBT4I5.js} +5 -5
- package/Build/Workers/{chunk-O6RZEKHZ.js → chunk-ZGGVEGTA.js} +12 -12
- package/Build/Workers/{chunk-AJYWXC6I.js → chunk-ZWWN2CQH.js} +4 -4
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +16 -16
- package/Build/Workers/createCircleGeometry.js +26 -26
- package/Build/Workers/createCircleOutlineGeometry.js +19 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +29 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +24 -24
- package/Build/Workers/createGroundPolylineGeometry.js +22 -22
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +32 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
- package/Build/Workers/createPolylineGeometry.js +25 -25
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
- package/Build/Workers/createSimplePolylineGeometry.js +23 -23
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
- package/Build/Workers/createVerticesFromHeightmap.js +22 -22
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +24 -24
- package/Build/Workers/createWallOutlineGeometry.js +23 -23
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +10 -10
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +20 -12
- package/Build/Workers/transcodeKTX2.js +6 -6
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/BoxGeometry.js +1 -1
- package/Source/Core/CornerType.js +1 -1
- package/Source/Core/CorridorGeometry.js +1 -1
- package/Source/Core/FeatureDetection.js +1 -32
- package/Source/Core/Geometry.js +1 -1
- package/Source/Core/IntersectionTests.js +2 -2
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/PinBuilder.js +1 -1
- package/Source/Core/PolygonGeometry.js +1 -1
- package/Source/Core/PolylineGeometry.js +1 -1
- package/Source/Core/PolylineVolumeGeometry.js +1 -1
- package/Source/Core/RectangleGeometry.js +1 -1
- package/Source/Core/ScreenSpaceEventHandler.js +4 -8
- package/Source/Core/TerrainMesh.js +11 -8
- package/Source/Core/TerrainPicker.js +24 -7
- package/Source/Core/VideoSynchronizer.js +1 -1
- package/Source/Core/WallGeometry.js +1 -1
- package/Source/Core/writeTextToCanvas.js +40 -86
- package/Source/DataSources/BillboardGraphics.js +1 -1
- package/Source/DataSources/BoxGraphics.js +1 -1
- package/Source/DataSources/CallbackPositionProperty.js +1 -1
- package/Source/DataSources/CorridorGraphics.js +1 -1
- package/Source/DataSources/CzmlDataSource.js +1 -1
- package/Source/DataSources/EllipseGraphics.js +1 -1
- package/Source/DataSources/EllipsoidGraphics.js +1 -1
- package/Source/DataSources/Entity.js +1 -1
- package/Source/DataSources/EntityCluster.js +2 -2
- package/Source/DataSources/GeoJsonDataSource.js +2 -2
- package/Source/DataSources/GpxDataSource.js +1 -1
- package/Source/DataSources/KmlDataSource.js +1 -1
- package/Source/DataSources/KmlTour.js +1 -1
- package/Source/DataSources/LabelGraphics.js +1 -1
- package/Source/DataSources/ModelGraphics.js +1 -1
- package/Source/DataSources/PlaneGraphics.js +1 -1
- package/Source/DataSources/PolygonGraphics.js +1 -1
- package/Source/DataSources/PolylineGraphics.js +1 -1
- package/Source/DataSources/PolylineVolumeGraphics.js +1 -1
- package/Source/DataSources/RectangleGraphics.js +1 -1
- package/Source/DataSources/WallGraphics.js +1 -1
- package/Source/DataSources/exportKml.js +1 -1
- package/Source/Renderer/Context.js +11 -10
- package/Source/Renderer/ContextLimits.js +66 -33
- package/Source/Renderer/ShaderSource.js +19 -18
- package/Source/Renderer/Texture.js +1 -1
- package/Source/Renderer/Texture3D.js +166 -7
- package/Source/Renderer/TextureAtlas.js +10 -19
- package/Source/Scene/Appearance.js +1 -1
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/Azure2DImageryProvider.js +7 -8
- package/Source/Scene/Billboard.js +1 -1
- package/Source/Scene/BillboardCollection.js +15 -1
- package/Source/Scene/BillboardTexture.js +4 -1
- package/Source/Scene/Camera.js +13 -2
- package/Source/Scene/ClippingPlaneCollection.js +2 -2
- package/Source/Scene/CloudCollection.js +2 -2
- package/Source/Scene/CumulusCloud.js +1 -1
- package/Source/Scene/DynamicEnvironmentMapManager.js +41 -26
- package/Source/Scene/Fog.js +1 -1
- package/Source/Scene/GaussianSplatPrimitive.js +1 -1
- package/Source/Scene/Globe.js +3 -10
- package/Source/Scene/GltfLoader.js +10 -0
- package/Source/Scene/ImageBasedLighting.js +2 -2
- package/Source/Scene/ImageryLayerCollection.js +2 -2
- package/Source/Scene/ImageryProvider.js +2 -2
- package/Source/Scene/Label.js +1 -1
- package/Source/Scene/LabelCollection.js +2 -1
- package/Source/Scene/Material.js +1 -1
- package/Source/Scene/MaterialAppearance.js +1 -1
- package/Source/Scene/Megatexture.js +174 -242
- package/Source/Scene/Model/MaterialPipelineStage.js +17 -0
- package/Source/Scene/Model/Model.js +1 -1
- package/Source/Scene/ModelComponents.js +10 -0
- package/Source/Scene/ParticleSystem.js +2 -2
- package/Source/Scene/PointPrimitive.js +1 -1
- package/Source/Scene/Polyline.js +0 -1
- package/Source/Scene/PolylineCollection.js +1 -4
- package/Source/Scene/PolylineColorAppearance.js +1 -6
- package/Source/Scene/PolylineMaterialAppearance.js +1 -6
- package/Source/Scene/PostProcessStageCollection.js +1 -1
- package/Source/Scene/QuadtreePrimitive.js +6 -3
- package/Source/Scene/ShadowMap.js +1 -2
- package/Source/Scene/Vector3DTileClampedPolylines.js +1 -5
- package/Source/Scene/Vector3DTilePolylines.js +1 -5
- package/Source/Scene/VoxelPrimitive.js +16 -33
- package/Source/Scene/VoxelRenderResources.js +1 -8
- package/Source/Scene/VoxelTraversal.js +16 -61
- package/Source/Scene/WebMapTileServiceImageryProvider.js +1 -1
- package/Source/Scene/createElevationBandMaterial.js +1 -1
- package/Source/Scene/processVoxelProperties.js +1 -1
- package/Source/Shaders/Builtin/Functions/columbusViewMorph.glsl +8 -1
- package/Source/Shaders/Builtin/Functions/columbusViewMorph.js +8 -1
- package/Source/Shaders/Model/ModelFS.glsl +8 -0
- package/Source/Shaders/Model/ModelFS.js +8 -0
- package/Source/Shaders/Model/ModelVS.glsl +2 -0
- package/Source/Shaders/Model/ModelVS.js +2 -0
- package/Source/Shaders/Voxels/IntersectionUtils.glsl +1 -1
- package/Source/Shaders/Voxels/IntersectionUtils.js +1 -1
- package/Source/Shaders/Voxels/Megatexture.glsl +15 -83
- package/Source/Shaders/Voxels/Megatexture.js +15 -83
- package/Source/Shaders/Voxels/Octree.glsl +6 -9
- package/Source/Shaders/Voxels/Octree.js +6 -9
- package/Source/Widget/CesiumWidget.js +1 -1
- package/Source/Workers/incrementallyBuildTerrainPicker.js +16 -2
- package/index.d.ts +32 -21
- package/index.js +52 -52
- package/package.json +4 -3
|
@@ -1,104 +1,36 @@
|
|
|
1
|
-
// See Octree.glsl for the definitions of SampleData
|
|
1
|
+
// See Octree.glsl for the definitions of SampleData
|
|
2
2
|
|
|
3
3
|
/* Megatexture defines (set in Scene/VoxelRenderResources.js)
|
|
4
4
|
#define SAMPLE_COUNT ###
|
|
5
|
-
#define NEAREST_SAMPLING
|
|
6
5
|
#define PADDING
|
|
7
6
|
*/
|
|
8
7
|
|
|
9
|
-
uniform
|
|
10
|
-
uniform ivec2 u_megatextureTileDimensions; // number of tiles per megatexture, in two dimensions
|
|
11
|
-
uniform vec2 u_megatextureVoxelSizeUv;
|
|
12
|
-
uniform vec2 u_megatextureSliceSizeUv;
|
|
13
|
-
uniform vec2 u_megatextureTileSizeUv;
|
|
8
|
+
uniform ivec3 u_megatextureTileCounts; // number of tiles in the megatexture, along each axis
|
|
14
9
|
|
|
15
|
-
|
|
16
|
-
int intMin(int a, int b) {
|
|
17
|
-
return a <= b ? a : b;
|
|
18
|
-
}
|
|
19
|
-
int intMax(int a, int b) {
|
|
20
|
-
return a >= b ? a : b;
|
|
21
|
-
}
|
|
22
|
-
int intClamp(int v, int minVal, int maxVal) {
|
|
23
|
-
return intMin(intMax(v, minVal), maxVal);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
vec2 index1DTo2DTexcoord(int index, ivec2 dimensions, vec2 uvScale)
|
|
10
|
+
vec3 index1DTo3DTexCoord(int index)
|
|
27
11
|
{
|
|
28
|
-
int
|
|
29
|
-
int
|
|
30
|
-
|
|
12
|
+
int tilesPerZ = u_megatextureTileCounts.x * u_megatextureTileCounts.y;
|
|
13
|
+
int iz = index / tilesPerZ;
|
|
14
|
+
int remainder = index - iz * tilesPerZ;
|
|
15
|
+
int iy = remainder / u_megatextureTileCounts.x;
|
|
16
|
+
int ix = remainder - iy * u_megatextureTileCounts.x;
|
|
17
|
+
return vec3(ix, iy, iz) / vec3(u_megatextureTileCounts);
|
|
31
18
|
}
|
|
32
19
|
|
|
33
|
-
/*
|
|
34
|
-
How is 3D data stored in a 2D megatexture?
|
|
35
|
-
|
|
36
|
-
In this example there is only one loaded tile and it has 2x2x2 voxels (8 voxels total).
|
|
37
|
-
The data is sliced by Z. The data at Z = 0 is placed in texels (0,0), (0,1), (1,0), (1,1) and
|
|
38
|
-
the data at Z = 1 is placed in texels (2,0), (2,1), (3,0), (3,1).
|
|
39
|
-
Note that there could be empty space in the megatexture because it's a power of two.
|
|
40
|
-
|
|
41
|
-
0 1 2 3
|
|
42
|
-
+---+---+---+---+
|
|
43
|
-
| | | | | 3
|
|
44
|
-
+---+---+---+---+
|
|
45
|
-
| | | | | 2
|
|
46
|
-
+-------+-------+
|
|
47
|
-
|010|110|011|111| 1
|
|
48
|
-
|--- ---|--- ---|
|
|
49
|
-
|000|100|001|101| 0
|
|
50
|
-
+-------+-------+
|
|
51
|
-
|
|
52
|
-
When doing linear interpolation the megatexture needs to be sampled twice: once for
|
|
53
|
-
the Z slice above the voxel coordinate and once for the slice below. The two slices
|
|
54
|
-
are interpolated with fract(coord.z - 0.5). For example, a Z coordinate of 1.0 is
|
|
55
|
-
halfway between two Z slices so the interpolation factor is 0.5. Below is a side view
|
|
56
|
-
of the 3D voxel grid with voxel coordinates on the left side.
|
|
57
|
-
|
|
58
|
-
2 +---+
|
|
59
|
-
|001|
|
|
60
|
-
1 +-z-+
|
|
61
|
-
|000|
|
|
62
|
-
0 +---+
|
|
63
|
-
|
|
64
|
-
When doing nearest neighbor the megatexture only needs to be sampled once at the closest Z slice.
|
|
65
|
-
*/
|
|
66
|
-
|
|
67
20
|
Properties getPropertiesFromMegatexture(in SampleData sampleData) {
|
|
68
21
|
int tileIndex = sampleData.megatextureIndex;
|
|
69
22
|
|
|
70
23
|
vec3 voxelCoord = sampleData.inputCoordinate;
|
|
71
|
-
#if defined(NEAREST_SAMPLING)
|
|
72
|
-
// Round to the center of the nearest voxel
|
|
73
|
-
voxelCoord = floor(voxelCoord) + vec3(0.5);
|
|
74
|
-
#endif
|
|
75
24
|
|
|
76
|
-
//
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
// Slice location
|
|
80
|
-
float slice = voxelCoord.z - 0.5;
|
|
81
|
-
int sliceIndex = int(floor(slice));
|
|
82
|
-
int sliceIndex0 = intClamp(sliceIndex, 0, u_inputDimensions.z - 1);
|
|
83
|
-
vec2 sliceUvOffset0 = index1DTo2DTexcoord(sliceIndex0, u_megatextureSliceDimensions, u_megatextureSliceSizeUv);
|
|
25
|
+
// UV coordinate of the lower corner of the tile in the megatexture
|
|
26
|
+
vec3 tileUvOffset = index1DTo3DTexCoord(tileIndex);
|
|
84
27
|
|
|
85
28
|
// Voxel location
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
vec2 uv0 = tileUvOffset + sliceUvOffset0 + voxelUvOffset;
|
|
29
|
+
vec3 tileDimensions = vec3(u_inputDimensions);
|
|
30
|
+
vec3 clampedVoxelCoord = clamp(voxelCoord, vec3(0.5), tileDimensions - vec3(0.5));
|
|
31
|
+
vec3 voxelUv = clampedVoxelCoord / tileDimensions / vec3(u_megatextureTileCounts);
|
|
90
32
|
|
|
91
|
-
|
|
92
|
-
return getPropertiesFromMegatextureAtUv(uv0);
|
|
93
|
-
#else
|
|
94
|
-
float sliceLerp = fract(slice);
|
|
95
|
-
int sliceIndex1 = intMin(sliceIndex + 1, u_inputDimensions.z - 1);
|
|
96
|
-
vec2 sliceUvOffset1 = index1DTo2DTexcoord(sliceIndex1, u_megatextureSliceDimensions, u_megatextureSliceSizeUv);
|
|
97
|
-
vec2 uv1 = tileUvOffset + sliceUvOffset1 + voxelUvOffset;
|
|
98
|
-
Properties properties0 = getPropertiesFromMegatextureAtUv(uv0);
|
|
99
|
-
Properties properties1 = getPropertiesFromMegatextureAtUv(uv1);
|
|
100
|
-
return mixProperties(properties0, properties1, sliceLerp);
|
|
101
|
-
#endif
|
|
33
|
+
return getPropertiesFromMegatextureAtUv(tileUvOffset + voxelUv);
|
|
102
34
|
}
|
|
103
35
|
|
|
104
36
|
// Convert an array of sample datas to a final weighted properties.
|
|
@@ -1,105 +1,37 @@
|
|
|
1
1
|
//This file is automatically rebuilt by the Cesium build process.
|
|
2
|
-
export default "// See Octree.glsl for the definitions of SampleData
|
|
2
|
+
export default "// See Octree.glsl for the definitions of SampleData\n\
|
|
3
3
|
\n\
|
|
4
4
|
/* Megatexture defines (set in Scene/VoxelRenderResources.js)\n\
|
|
5
5
|
#define SAMPLE_COUNT ###\n\
|
|
6
|
-
#define NEAREST_SAMPLING\n\
|
|
7
6
|
#define PADDING\n\
|
|
8
7
|
*/\n\
|
|
9
8
|
\n\
|
|
10
|
-
uniform
|
|
11
|
-
uniform ivec2 u_megatextureTileDimensions; // number of tiles per megatexture, in two dimensions\n\
|
|
12
|
-
uniform vec2 u_megatextureVoxelSizeUv;\n\
|
|
13
|
-
uniform vec2 u_megatextureSliceSizeUv;\n\
|
|
14
|
-
uniform vec2 u_megatextureTileSizeUv;\n\
|
|
9
|
+
uniform ivec3 u_megatextureTileCounts; // number of tiles in the megatexture, along each axis\n\
|
|
15
10
|
\n\
|
|
16
|
-
|
|
17
|
-
int intMin(int a, int b) {\n\
|
|
18
|
-
return a <= b ? a : b;\n\
|
|
19
|
-
}\n\
|
|
20
|
-
int intMax(int a, int b) {\n\
|
|
21
|
-
return a >= b ? a : b;\n\
|
|
22
|
-
}\n\
|
|
23
|
-
int intClamp(int v, int minVal, int maxVal) {\n\
|
|
24
|
-
return intMin(intMax(v, minVal), maxVal);\n\
|
|
25
|
-
}\n\
|
|
26
|
-
\n\
|
|
27
|
-
vec2 index1DTo2DTexcoord(int index, ivec2 dimensions, vec2 uvScale)\n\
|
|
11
|
+
vec3 index1DTo3DTexCoord(int index)\n\
|
|
28
12
|
{\n\
|
|
29
|
-
int
|
|
30
|
-
int
|
|
31
|
-
|
|
13
|
+
int tilesPerZ = u_megatextureTileCounts.x * u_megatextureTileCounts.y;\n\
|
|
14
|
+
int iz = index / tilesPerZ;\n\
|
|
15
|
+
int remainder = index - iz * tilesPerZ;\n\
|
|
16
|
+
int iy = remainder / u_megatextureTileCounts.x;\n\
|
|
17
|
+
int ix = remainder - iy * u_megatextureTileCounts.x;\n\
|
|
18
|
+
return vec3(ix, iy, iz) / vec3(u_megatextureTileCounts);\n\
|
|
32
19
|
}\n\
|
|
33
20
|
\n\
|
|
34
|
-
/*\n\
|
|
35
|
-
How is 3D data stored in a 2D megatexture?\n\
|
|
36
|
-
\n\
|
|
37
|
-
In this example there is only one loaded tile and it has 2x2x2 voxels (8 voxels total).\n\
|
|
38
|
-
The data is sliced by Z. The data at Z = 0 is placed in texels (0,0), (0,1), (1,0), (1,1) and\n\
|
|
39
|
-
the data at Z = 1 is placed in texels (2,0), (2,1), (3,0), (3,1).\n\
|
|
40
|
-
Note that there could be empty space in the megatexture because it's a power of two.\n\
|
|
41
|
-
\n\
|
|
42
|
-
0 1 2 3\n\
|
|
43
|
-
+---+---+---+---+\n\
|
|
44
|
-
| | | | | 3\n\
|
|
45
|
-
+---+---+---+---+\n\
|
|
46
|
-
| | | | | 2\n\
|
|
47
|
-
+-------+-------+\n\
|
|
48
|
-
|010|110|011|111| 1\n\
|
|
49
|
-
|--- ---|--- ---|\n\
|
|
50
|
-
|000|100|001|101| 0\n\
|
|
51
|
-
+-------+-------+\n\
|
|
52
|
-
\n\
|
|
53
|
-
When doing linear interpolation the megatexture needs to be sampled twice: once for\n\
|
|
54
|
-
the Z slice above the voxel coordinate and once for the slice below. The two slices\n\
|
|
55
|
-
are interpolated with fract(coord.z - 0.5). For example, a Z coordinate of 1.0 is\n\
|
|
56
|
-
halfway between two Z slices so the interpolation factor is 0.5. Below is a side view\n\
|
|
57
|
-
of the 3D voxel grid with voxel coordinates on the left side.\n\
|
|
58
|
-
\n\
|
|
59
|
-
2 +---+\n\
|
|
60
|
-
|001|\n\
|
|
61
|
-
1 +-z-+\n\
|
|
62
|
-
|000|\n\
|
|
63
|
-
0 +---+\n\
|
|
64
|
-
\n\
|
|
65
|
-
When doing nearest neighbor the megatexture only needs to be sampled once at the closest Z slice.\n\
|
|
66
|
-
*/\n\
|
|
67
|
-
\n\
|
|
68
21
|
Properties getPropertiesFromMegatexture(in SampleData sampleData) {\n\
|
|
69
22
|
int tileIndex = sampleData.megatextureIndex;\n\
|
|
70
23
|
\n\
|
|
71
24
|
vec3 voxelCoord = sampleData.inputCoordinate;\n\
|
|
72
|
-
#if defined(NEAREST_SAMPLING)\n\
|
|
73
|
-
// Round to the center of the nearest voxel\n\
|
|
74
|
-
voxelCoord = floor(voxelCoord) + vec3(0.5);\n\
|
|
75
|
-
#endif\n\
|
|
76
25
|
\n\
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
\n\
|
|
80
|
-
// Slice location\n\
|
|
81
|
-
float slice = voxelCoord.z - 0.5;\n\
|
|
82
|
-
int sliceIndex = int(floor(slice));\n\
|
|
83
|
-
int sliceIndex0 = intClamp(sliceIndex, 0, u_inputDimensions.z - 1);\n\
|
|
84
|
-
vec2 sliceUvOffset0 = index1DTo2DTexcoord(sliceIndex0, u_megatextureSliceDimensions, u_megatextureSliceSizeUv);\n\
|
|
26
|
+
// UV coordinate of the lower corner of the tile in the megatexture\n\
|
|
27
|
+
vec3 tileUvOffset = index1DTo3DTexCoord(tileIndex);\n\
|
|
85
28
|
\n\
|
|
86
29
|
// Voxel location\n\
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
vec2 uv0 = tileUvOffset + sliceUvOffset0 + voxelUvOffset;\n\
|
|
30
|
+
vec3 tileDimensions = vec3(u_inputDimensions);\n\
|
|
31
|
+
vec3 clampedVoxelCoord = clamp(voxelCoord, vec3(0.5), tileDimensions - vec3(0.5));\n\
|
|
32
|
+
vec3 voxelUv = clampedVoxelCoord / tileDimensions / vec3(u_megatextureTileCounts);\n\
|
|
91
33
|
\n\
|
|
92
|
-
|
|
93
|
-
return getPropertiesFromMegatextureAtUv(uv0);\n\
|
|
94
|
-
#else\n\
|
|
95
|
-
float sliceLerp = fract(slice);\n\
|
|
96
|
-
int sliceIndex1 = intMin(sliceIndex + 1, u_inputDimensions.z - 1);\n\
|
|
97
|
-
vec2 sliceUvOffset1 = index1DTo2DTexcoord(sliceIndex1, u_megatextureSliceDimensions, u_megatextureSliceSizeUv);\n\
|
|
98
|
-
vec2 uv1 = tileUvOffset + sliceUvOffset1 + voxelUvOffset;\n\
|
|
99
|
-
Properties properties0 = getPropertiesFromMegatextureAtUv(uv0);\n\
|
|
100
|
-
Properties properties1 = getPropertiesFromMegatextureAtUv(uv1);\n\
|
|
101
|
-
return mixProperties(properties0, properties1, sliceLerp);\n\
|
|
102
|
-
#endif\n\
|
|
34
|
+
return getPropertiesFromMegatextureAtUv(tileUvOffset + voxelUv);\n\
|
|
103
35
|
}\n\
|
|
104
36
|
\n\
|
|
105
37
|
// Convert an array of sample datas to a final weighted properties.\n\
|
|
@@ -44,10 +44,6 @@ struct SampleData {
|
|
|
44
44
|
#endif
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
-
// Integer mod: For WebGL1 only
|
|
48
|
-
int intMod(in int a, in int b) {
|
|
49
|
-
return a - (b * (a / b));
|
|
50
|
-
}
|
|
51
47
|
int normU8_toInt(in float value) {
|
|
52
48
|
return int(value * 255.0);
|
|
53
49
|
}
|
|
@@ -69,14 +65,14 @@ OctreeNodeData getOctreeNodeData(in vec2 octreeUv) {
|
|
|
69
65
|
|
|
70
66
|
OctreeNodeData getOctreeChildData(in int parentOctreeIndex, in ivec3 childCoord) {
|
|
71
67
|
int childIndex = childCoord.z * 4 + childCoord.y * 2 + childCoord.x;
|
|
72
|
-
int octreeCoordX =
|
|
68
|
+
int octreeCoordX = (parentOctreeIndex % u_octreeInternalNodeTilesPerRow) * 9 + 1 + childIndex;
|
|
73
69
|
int octreeCoordY = parentOctreeIndex / u_octreeInternalNodeTilesPerRow;
|
|
74
70
|
vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5);
|
|
75
71
|
return getOctreeNodeData(octreeUv);
|
|
76
72
|
}
|
|
77
73
|
|
|
78
74
|
int getOctreeParentIndex(in int octreeIndex) {
|
|
79
|
-
int octreeCoordX =
|
|
75
|
+
int octreeCoordX = (octreeIndex % u_octreeInternalNodeTilesPerRow) * 9;
|
|
80
76
|
int octreeCoordY = octreeIndex / u_octreeInternalNodeTilesPerRow;
|
|
81
77
|
vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5);
|
|
82
78
|
vec4 parentData = texture(u_octreeInternalNodeTexture, octreeUv);
|
|
@@ -106,8 +102,9 @@ void addSampleCoordinates(in TileAndUvCoordinate tileAndUv, inout SampleData sam
|
|
|
106
102
|
#if defined(Y_UP_METADATA_ORDER)
|
|
107
103
|
#if defined(SHAPE_BOX)
|
|
108
104
|
float inputY = inputCoordinate.y;
|
|
109
|
-
inputCoordinate.y =
|
|
110
|
-
|
|
105
|
+
inputCoordinate.y = inputCoordinate.z;
|
|
106
|
+
// u_inputDimensions.z is the y-up dimension along the 3D Tiles y-axis.
|
|
107
|
+
inputCoordinate.z = float(u_inputDimensions.z) - inputY;
|
|
111
108
|
#elif defined(SHAPE_CYLINDER)
|
|
112
109
|
float angle = inputCoordinate.y;
|
|
113
110
|
float height = inputCoordinate.z;
|
|
@@ -139,7 +136,7 @@ void getOctreeLeafSampleDatas(in OctreeNodeData data, in ivec4 octreeCoords, out
|
|
|
139
136
|
int leafIndex = data.data;
|
|
140
137
|
int leafNodeTexelCount = 2;
|
|
141
138
|
// Adding 0.5 moves to the center of the texel
|
|
142
|
-
float leafCoordXStart = float(
|
|
139
|
+
float leafCoordXStart = float((leafIndex % u_octreeLeafNodeTilesPerRow) * leafNodeTexelCount) + 0.5;
|
|
143
140
|
float leafCoordY = float(leafIndex / u_octreeLeafNodeTilesPerRow) + 0.5;
|
|
144
141
|
|
|
145
142
|
// Get an interpolation weight and a flag to determine whether to read the parent texture
|
|
@@ -45,10 +45,6 @@ struct SampleData {\n\
|
|
|
45
45
|
#endif\n\
|
|
46
46
|
};\n\
|
|
47
47
|
\n\
|
|
48
|
-
// Integer mod: For WebGL1 only\n\
|
|
49
|
-
int intMod(in int a, in int b) {\n\
|
|
50
|
-
return a - (b * (a / b));\n\
|
|
51
|
-
}\n\
|
|
52
48
|
int normU8_toInt(in float value) {\n\
|
|
53
49
|
return int(value * 255.0);\n\
|
|
54
50
|
}\n\
|
|
@@ -70,14 +66,14 @@ OctreeNodeData getOctreeNodeData(in vec2 octreeUv) {\n\
|
|
|
70
66
|
\n\
|
|
71
67
|
OctreeNodeData getOctreeChildData(in int parentOctreeIndex, in ivec3 childCoord) {\n\
|
|
72
68
|
int childIndex = childCoord.z * 4 + childCoord.y * 2 + childCoord.x;\n\
|
|
73
|
-
int octreeCoordX =
|
|
69
|
+
int octreeCoordX = (parentOctreeIndex % u_octreeInternalNodeTilesPerRow) * 9 + 1 + childIndex;\n\
|
|
74
70
|
int octreeCoordY = parentOctreeIndex / u_octreeInternalNodeTilesPerRow;\n\
|
|
75
71
|
vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5);\n\
|
|
76
72
|
return getOctreeNodeData(octreeUv);\n\
|
|
77
73
|
}\n\
|
|
78
74
|
\n\
|
|
79
75
|
int getOctreeParentIndex(in int octreeIndex) {\n\
|
|
80
|
-
int octreeCoordX =
|
|
76
|
+
int octreeCoordX = (octreeIndex % u_octreeInternalNodeTilesPerRow) * 9;\n\
|
|
81
77
|
int octreeCoordY = octreeIndex / u_octreeInternalNodeTilesPerRow;\n\
|
|
82
78
|
vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5);\n\
|
|
83
79
|
vec4 parentData = texture(u_octreeInternalNodeTexture, octreeUv);\n\
|
|
@@ -107,8 +103,9 @@ void addSampleCoordinates(in TileAndUvCoordinate tileAndUv, inout SampleData sam
|
|
|
107
103
|
#if defined(Y_UP_METADATA_ORDER)\n\
|
|
108
104
|
#if defined(SHAPE_BOX)\n\
|
|
109
105
|
float inputY = inputCoordinate.y;\n\
|
|
110
|
-
inputCoordinate.y =
|
|
111
|
-
|
|
106
|
+
inputCoordinate.y = inputCoordinate.z;\n\
|
|
107
|
+
// u_inputDimensions.z is the y-up dimension along the 3D Tiles y-axis.\n\
|
|
108
|
+
inputCoordinate.z = float(u_inputDimensions.z) - inputY;\n\
|
|
112
109
|
#elif defined(SHAPE_CYLINDER)\n\
|
|
113
110
|
float angle = inputCoordinate.y;\n\
|
|
114
111
|
float height = inputCoordinate.z;\n\
|
|
@@ -140,7 +137,7 @@ void getOctreeLeafSampleDatas(in OctreeNodeData data, in ivec4 octreeCoords, out
|
|
|
140
137
|
int leafIndex = data.data;\n\
|
|
141
138
|
int leafNodeTexelCount = 2;\n\
|
|
142
139
|
// Adding 0.5 moves to the center of the texel\n\
|
|
143
|
-
float leafCoordXStart = float(
|
|
140
|
+
float leafCoordXStart = float((leafIndex % u_octreeLeafNodeTilesPerRow) * leafNodeTexelCount) + 0.5;\n\
|
|
144
141
|
float leafCoordY = float(leafIndex / u_octreeLeafNodeTilesPerRow) + 0.5;\n\
|
|
145
142
|
\n\
|
|
146
143
|
// Get an interpolation weight and a flag to determine whether to read the parent texture\n\
|
|
@@ -175,7 +175,7 @@ function configureCameraFrustum(widget) {
|
|
|
175
175
|
*
|
|
176
176
|
* @exception {DeveloperError} Element with id "container" does not exist in the document.
|
|
177
177
|
*
|
|
178
|
-
* @demo {@link https://sandcastle.cesium.com/index.html?
|
|
178
|
+
* @demo {@link https://sandcastle.cesium.com/index.html?id=cesium-widget|Cesium Sandcastle Cesium Widget Demo}
|
|
179
179
|
*
|
|
180
180
|
* @example
|
|
181
181
|
* // For each example, include a link to CesiumWidget.css stylesheet in HTML head,
|
|
@@ -12,6 +12,9 @@ const scratchTrianglePoints = [
|
|
|
12
12
|
];
|
|
13
13
|
const scratchTriangleAABB = new AxisAlignedBoundingBox();
|
|
14
14
|
|
|
15
|
+
const TILE_AABB_MAX = new Cartesian3(0.5, 0.5, 0.5);
|
|
16
|
+
const TILE_AABB_MIN = new Cartesian3(-0.5, -0.5, -0.5);
|
|
17
|
+
|
|
15
18
|
/**
|
|
16
19
|
* Builds the next layer of the terrain picker's quadtree by determining which triangles intersect
|
|
17
20
|
* each of the four child nodes. (Essentially distributing the parent's triangles to its children.)
|
|
@@ -42,7 +45,7 @@ function incrementallyBuildTerrainPicker(parameters, transferableObjects) {
|
|
|
42
45
|
);
|
|
43
46
|
|
|
44
47
|
const triangleIndices = new Uint32Array(parameters.triangleIndices);
|
|
45
|
-
const trianglePositions = new
|
|
48
|
+
const trianglePositions = new Float64Array(parameters.trianglePositions);
|
|
46
49
|
const intersectingTrianglesArrays = Array.from({ length: 4 }, () => []);
|
|
47
50
|
|
|
48
51
|
for (let j = 0; j < triangleIndices.length; j++) {
|
|
@@ -102,7 +105,18 @@ function createAABBFromTriangle(inverseTransform, trianglePoints) {
|
|
|
102
105
|
trianglePoints[2],
|
|
103
106
|
);
|
|
104
107
|
|
|
105
|
-
|
|
108
|
+
const aabb = AxisAlignedBoundingBox.fromPoints(
|
|
109
|
+
trianglePoints,
|
|
110
|
+
scratchTriangleAABB,
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
// In 2D mode, sometimes the height-scale of a tile is 0. See {@link TerrainMesh#computeTransform2D}.
|
|
114
|
+
// This makes the inverseTransform degenerate, so we set the height-scale to 1 to be prevent that. However, this is artificial and
|
|
115
|
+
// can lead to the triangle's AABB extending beyond the (height) bounds of the tile's AABB.
|
|
116
|
+
// Thus, we clamp the triangle's AABB to the tile's local-space AABB.
|
|
117
|
+
Cartesian3.clamp(aabb.minimum, TILE_AABB_MIN, TILE_AABB_MAX, aabb.minimum);
|
|
118
|
+
Cartesian3.clamp(aabb.maximum, TILE_AABB_MIN, TILE_AABB_MAX, aabb.maximum);
|
|
119
|
+
return aabb;
|
|
106
120
|
}
|
|
107
121
|
|
|
108
122
|
export default createTaskProcessorWorker(incrementallyBuildTerrainPicker);
|
package/index.d.ts
CHANGED
|
@@ -8801,7 +8801,7 @@ export namespace IntersectionTests {
|
|
|
8801
8801
|
/**
|
|
8802
8802
|
* Computes the intersection of a ray and a triangle as a parametric distance along the input ray. The result is negative when the triangle is behind the ray.
|
|
8803
8803
|
*
|
|
8804
|
-
* Implements {@link https://cadxfem.org/inf/Fast
|
|
8804
|
+
* Implements {@link https://cadxfem.org/inf/Fast MinimumStorage RayTriangle Intersection.pdf|
|
|
8805
8805
|
* Fast Minimum Storage Ray/Triangle Intersection} by Tomas Moller and Ben Trumbore.
|
|
8806
8806
|
* @param ray - The ray.
|
|
8807
8807
|
* @param p0 - The first vertex of the triangle.
|
|
@@ -8815,7 +8815,7 @@ export namespace IntersectionTests {
|
|
|
8815
8815
|
/**
|
|
8816
8816
|
* Computes the intersection of a ray and a triangle as a Cartesian3 coordinate.
|
|
8817
8817
|
*
|
|
8818
|
-
* Implements {@link https://cadxfem.org/inf/Fast
|
|
8818
|
+
* Implements {@link https://cadxfem.org/inf/Fast MinimumStorage RayTriangle Intersection.pdf|
|
|
8819
8819
|
* Fast Minimum Storage Ray/Triangle Intersection} by Tomas Moller and Ben Trumbore.
|
|
8820
8820
|
* @param ray - The ray.
|
|
8821
8821
|
* @param p0 - The first vertex of the triangle.
|
|
@@ -19065,6 +19065,15 @@ export function srgbToLinear(value: number): number;
|
|
|
19065
19065
|
*/
|
|
19066
19066
|
export function subdivideArray(array: any[], numberOfArrays: number): void;
|
|
19067
19067
|
|
|
19068
|
+
/**
|
|
19069
|
+
* Computes dimensions for text, based on current canvas state.
|
|
19070
|
+
*
|
|
19071
|
+
* Rounds metrics, excluding width, to whole pixels. This is purely to minimize
|
|
19072
|
+
* rendering differences with migration to in-browser measureText(), and may be
|
|
19073
|
+
* revised in the future. See: github.com/CesiumGS/cesium/pull/13081
|
|
19074
|
+
*/
|
|
19075
|
+
export function measureText(): void;
|
|
19076
|
+
|
|
19068
19077
|
/**
|
|
19069
19078
|
* Writes the given text into a new canvas. The canvas will be sized to fit the text.
|
|
19070
19079
|
* If text is blank, returns undefined.
|
|
@@ -26427,27 +26436,24 @@ export enum Axis {
|
|
|
26427
26436
|
export namespace Azure2DImageryProvider {
|
|
26428
26437
|
/**
|
|
26429
26438
|
* Initialization options for the Azure2DImageryProvider constructor
|
|
26430
|
-
* @property
|
|
26431
|
-
* @property [
|
|
26432
|
-
* @property
|
|
26433
|
-
* @property
|
|
26434
|
-
* @property [
|
|
26435
|
-
* @property [options.minimumLevel = 0] - The minimum level-of-detail supported by the imagery provider. Take care when specifying
|
|
26439
|
+
* @property subscriptionKey - The public subscription key for the imagery.
|
|
26440
|
+
* @property [url = "https://atlas.microsoft.com/"] - The Azure server url.
|
|
26441
|
+
* @property [tilesetId = "microsoft.imagery"] - The Azure tileset ID. Valid options are {@link microsoft.imagery}, {@link microsoft.base.road}, and {@link microsoft.base.labels.road}
|
|
26442
|
+
* @property [ellipsoid = Ellipsoid.default] - The ellipsoid. If not specified, the default ellipsoid is used.
|
|
26443
|
+
* @property [minimumLevel = 0] - The minimum level-of-detail supported by the imagery provider. Take care when specifying
|
|
26436
26444
|
* this that the number of tiles at the minimum level is small, such as four or less. A larger number is likely
|
|
26437
26445
|
* to result in rendering problems.
|
|
26438
|
-
* @property [
|
|
26439
|
-
* @property [
|
|
26446
|
+
* @property [maximumLevel = 22] - The maximum level-of-detail supported by the imagery provider.
|
|
26447
|
+
* @property [rectangle = Rectangle.MAX_VALUE] - The rectangle, in radians, covered by the image.
|
|
26440
26448
|
*/
|
|
26441
26449
|
type ConstructorOptions = {
|
|
26442
|
-
|
|
26443
|
-
|
|
26444
|
-
|
|
26445
|
-
|
|
26446
|
-
|
|
26447
|
-
|
|
26448
|
-
|
|
26449
|
-
rectangle?: Rectangle;
|
|
26450
|
-
};
|
|
26450
|
+
subscriptionKey: string;
|
|
26451
|
+
url?: string;
|
|
26452
|
+
tilesetId?: string;
|
|
26453
|
+
ellipsoid?: Ellipsoid;
|
|
26454
|
+
minimumLevel?: number;
|
|
26455
|
+
maximumLevel?: number;
|
|
26456
|
+
rectangle?: Rectangle;
|
|
26451
26457
|
};
|
|
26452
26458
|
}
|
|
26453
26459
|
|
|
@@ -32285,7 +32291,7 @@ export namespace DynamicEnvironmentMapManager {
|
|
|
32285
32291
|
/**
|
|
32286
32292
|
* Options for the DynamicEnvironmentMapManager constructor
|
|
32287
32293
|
* @property [enabled = true] - If true, the environment map and related properties will continue to update.
|
|
32288
|
-
* @property [mipmapLevels = 7] - The number of mipmap levels to generate for specular maps. More mipmap levels will produce a higher resolution specular reflection.
|
|
32294
|
+
* @property [mipmapLevels = 7] - The maximum desired number of mipmap levels to generate for specular maps. More mipmap levels will produce a higher resolution specular reflection. The actual number of mipmaps used will be bounded by the cubemap texture size supported on the client machine. The number of mipmaps must be at least one for the environment map to be generated.
|
|
32289
32295
|
* @property [maximumSecondsDifference = 3600] - The maximum amount of elapsed seconds before a new environment map is created.
|
|
32290
32296
|
* @property [maximumPositionEpsilon = 1000] - The maximum difference in position before a new environment map is created, in meters. Small differences in position will not visibly affect results.
|
|
32291
32297
|
* @property [atmosphereScatteringIntensity = 2.0] - The intensity of the scattered light emitted from the atmosphere. This should be adjusted relative to the value of {@link Scene.light} intensity.
|
|
@@ -37316,6 +37322,11 @@ export namespace MaterialAppearance {
|
|
|
37316
37322
|
}
|
|
37317
37323
|
}
|
|
37318
37324
|
|
|
37325
|
+
/**
|
|
37326
|
+
* Gets or sets the nearest sampling flag.
|
|
37327
|
+
*/
|
|
37328
|
+
export var nearestSampling: boolean;
|
|
37329
|
+
|
|
37319
37330
|
/**
|
|
37320
37331
|
* A metadata class.
|
|
37321
37332
|
*
|
|
@@ -41209,7 +41220,7 @@ export class PostProcessStageCollection {
|
|
|
41209
41220
|
readonly length: number;
|
|
41210
41221
|
/**
|
|
41211
41222
|
* Specifies the tonemapping algorithm used when rendering with high dynamic range.
|
|
41212
|
-
* {@link https://sandcastle.cesium.com/?
|
|
41223
|
+
* {@link https://sandcastle.cesium.com/?id=high-dynamic-range|Sandcastle Demo}
|
|
41213
41224
|
* @example
|
|
41214
41225
|
* viewer.scene.postProcessStages.tonemapper = Cesium.Tonemapper.ACES;
|
|
41215
41226
|
*/
|