@cesium/engine 10.1.0 → 11.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.
Files changed (261) hide show
  1. package/Build/Workers/{chunk-N4QEHO3U.js → chunk-2EDC3QGH.js} +1 -1
  2. package/Build/Workers/{chunk-NVOABL76.js → chunk-2MKRG7L7.js} +5 -5
  3. package/Build/Workers/{chunk-X23FRWHJ.js → chunk-2RZYNSMR.js} +6 -6
  4. package/Build/Workers/{chunk-TO2PVHKI.js → chunk-4NBRIKB3.js} +2 -2
  5. package/Build/Workers/{chunk-5BLJ5ZM6.js → chunk-4TK5YR6Q.js} +5 -5
  6. package/Build/Workers/{chunk-TF776XCO.js → chunk-54VC7SCM.js} +7 -7
  7. package/Build/Workers/{chunk-2GEAGYUY.js → chunk-5IY5BXCT.js} +13 -13
  8. package/Build/Workers/{chunk-OXALEQPI.js → chunk-6FFGOENI.js} +10 -7
  9. package/Build/Workers/{chunk-65MZOUNU.js → chunk-6PJIHPQB.js} +13 -13
  10. package/Build/Workers/{chunk-FOZWUH4T.js → chunk-6ZREIBKS.js} +7 -7
  11. package/Build/Workers/{chunk-BY3E4ONI.js → chunk-AI3O7UN2.js} +6 -6
  12. package/Build/Workers/{chunk-XQI7XZHX.js → chunk-AS7P4BHI.js} +6 -6
  13. package/Build/Workers/{chunk-PNFHVBSF.js → chunk-AUM45VEG.js} +16 -15
  14. package/Build/Workers/{chunk-VRZ46QZ5.js → chunk-BBO6BGLC.js} +13 -13
  15. package/Build/Workers/{chunk-POSRARY7.js → chunk-BH5ZEN4I.js} +10 -10
  16. package/Build/Workers/{chunk-A5CODJ4M.js → chunk-BJ3WF5RW.js} +6 -6
  17. package/Build/Workers/{chunk-Q55ECN3Y.js → chunk-BUOFSNFW.js} +1 -1
  18. package/Build/Workers/{chunk-QX5XS4LC.js → chunk-BZXF3GNX.js} +2 -2
  19. package/Build/Workers/{chunk-T6LPN7RI.js → chunk-DJXXI7UF.js} +5 -5
  20. package/Build/Workers/{chunk-C3Z23UUJ.js → chunk-DVAIU7A4.js} +17 -17
  21. package/Build/Workers/{chunk-X2ZQ7RJR.js → chunk-FJT3ERV7.js} +9 -9
  22. package/Build/Workers/{chunk-UCIPJSZX.js → chunk-GOHDOWU5.js} +14 -14
  23. package/Build/Workers/{chunk-R4OIEIPE.js → chunk-HA6TZ3XT.js} +4 -4
  24. package/Build/Workers/{chunk-ACRTCBN5.js → chunk-HBZSCVZC.js} +11 -11
  25. package/Build/Workers/{chunk-BGE4QVG7.js → chunk-HC7RYWPZ.js} +12 -12
  26. package/Build/Workers/{chunk-VE7BFUIX.js → chunk-HFMJM3SX.js} +1 -1
  27. package/Build/Workers/{chunk-OOK53QUQ.js → chunk-HFPMX5L2.js} +1 -1
  28. package/Build/Workers/{chunk-6D66DPRV.js → chunk-HO2NTC7I.js} +6 -6
  29. package/Build/Workers/{chunk-F3NDOSTZ.js → chunk-HZPMWR4H.js} +7 -7
  30. package/Build/Workers/{chunk-I2RC4XVN.js → chunk-IBG5FVXC.js} +4 -4
  31. package/Build/Workers/{chunk-FEVVHITK.js → chunk-IXLNNST6.js} +4 -4
  32. package/Build/Workers/{chunk-4YSNMHZ4.js → chunk-JYUCC5NV.js} +6 -6
  33. package/Build/Workers/{chunk-FDCLACT5.js → chunk-KFW4UNQH.js} +10 -10
  34. package/Build/Workers/{chunk-R6B7UCQB.js → chunk-KKAEXHDY.js} +2 -2
  35. package/Build/Workers/{chunk-D2U4RI64.js → chunk-L6FARMF6.js} +7 -7
  36. package/Build/Workers/{chunk-OOMCT7OL.js → chunk-N3BIL6WA.js} +13 -13
  37. package/Build/Workers/{chunk-XZZNKIEV.js → chunk-O5SSW3B3.js} +6 -6
  38. package/Build/Workers/{chunk-S3PI2KFM.js → chunk-OC4MYPVW.js} +2 -2
  39. package/Build/Workers/{chunk-XLTOBCDI.js → chunk-OOA6GXKD.js} +7 -7
  40. package/Build/Workers/{chunk-GPJR7MPQ.js → chunk-OSCHEWSG.js} +7 -7
  41. package/Build/Workers/{chunk-RZLZWKFN.js → chunk-QGT2GMOK.js} +4 -4
  42. package/Build/Workers/{chunk-OWGTMVDB.js → chunk-RFQYEYAL.js} +17 -17
  43. package/Build/Workers/{chunk-LSSWVB2X.js → chunk-RJF5ZP76.js} +4 -4
  44. package/Build/Workers/{chunk-EB7PNZTK.js → chunk-SIZXFNJY.js} +6 -5
  45. package/Build/Workers/{chunk-G5V4GPZE.js → chunk-SRZJCF7G.js} +9 -9
  46. package/Build/Workers/{chunk-T77JILCU.js → chunk-T4MB73MC.js} +2 -2
  47. package/Build/Workers/{chunk-4RMIRG6T.js → chunk-TTI2SUWJ.js} +2 -2
  48. package/Build/Workers/{chunk-4VFBBNQ3.js → chunk-VHJ5ESXF.js} +1 -1
  49. package/Build/Workers/{chunk-2J3JKXCP.js → chunk-VSFFJGTA.js} +9 -5
  50. package/Build/Workers/{chunk-ZU334IDQ.js → chunk-WQRXRDCZ.js} +11 -11
  51. package/Build/Workers/{chunk-J7MQUQJY.js → chunk-WXDGOYTT.js} +12 -7
  52. package/Build/Workers/{chunk-76BYYG7N.js → chunk-XLCZE6DD.js} +10 -10
  53. package/Build/Workers/combineGeometry.js +22 -22
  54. package/Build/Workers/createBoxGeometry.js +16 -16
  55. package/Build/Workers/createBoxOutlineGeometry.js +14 -14
  56. package/Build/Workers/createCircleGeometry.js +24 -24
  57. package/Build/Workers/createCircleOutlineGeometry.js +17 -17
  58. package/Build/Workers/createCoplanarPolygonGeometry.js +31 -31
  59. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +29 -29
  60. package/Build/Workers/createCorridorGeometry.js +27 -27
  61. package/Build/Workers/createCorridorOutlineGeometry.js +26 -26
  62. package/Build/Workers/createCylinderGeometry.js +18 -18
  63. package/Build/Workers/createCylinderOutlineGeometry.js +16 -16
  64. package/Build/Workers/createEllipseGeometry.js +24 -24
  65. package/Build/Workers/createEllipseOutlineGeometry.js +17 -17
  66. package/Build/Workers/createEllipsoidGeometry.js +17 -17
  67. package/Build/Workers/createEllipsoidOutlineGeometry.js +16 -16
  68. package/Build/Workers/createFrustumGeometry.js +16 -16
  69. package/Build/Workers/createFrustumOutlineGeometry.js +16 -16
  70. package/Build/Workers/createGeometry.js +22 -22
  71. package/Build/Workers/createGroundPolylineGeometry.js +20 -20
  72. package/Build/Workers/createPlaneGeometry.js +14 -14
  73. package/Build/Workers/createPlaneOutlineGeometry.js +13 -13
  74. package/Build/Workers/createPolygonGeometry.js +30 -30
  75. package/Build/Workers/createPolygonOutlineGeometry.js +28 -28
  76. package/Build/Workers/createPolylineGeometry.js +23 -23
  77. package/Build/Workers/createPolylineVolumeGeometry.js +29 -29
  78. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +25 -25
  79. package/Build/Workers/createRectangleGeometry.js +25 -25
  80. package/Build/Workers/createRectangleOutlineGeometry.js +18 -18
  81. package/Build/Workers/createSimplePolylineGeometry.js +21 -21
  82. package/Build/Workers/createSphereGeometry.js +17 -17
  83. package/Build/Workers/createSphereOutlineGeometry.js +16 -16
  84. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  85. package/Build/Workers/createVectorTileClampedPolylines.js +13 -13
  86. package/Build/Workers/createVectorTileGeometries.js +22 -22
  87. package/Build/Workers/createVectorTilePoints.js +12 -12
  88. package/Build/Workers/createVectorTilePolygons.js +20 -20
  89. package/Build/Workers/createVectorTilePolylines.js +13 -13
  90. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -20
  91. package/Build/Workers/createVerticesFromHeightmap.js +24 -20
  92. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -17
  93. package/Build/Workers/createWallGeometry.js +22 -22
  94. package/Build/Workers/createWallOutlineGeometry.js +21 -21
  95. package/Build/Workers/decodeDraco.js +11 -11
  96. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +28 -5
  97. package/Build/Workers/decodeI3S.js +10 -10
  98. package/Build/Workers/transcodeKTX2.js +19 -18
  99. package/Build/Workers/transferTypedArrayTest.js +1 -1
  100. package/Build/Workers/upsampleQuantizedTerrainMesh.js +20 -20
  101. package/Source/Core/CompressedTextureBuffer.js +11 -0
  102. package/Source/Core/Ion.js +1 -1
  103. package/Source/Core/KTX2Transcoder.js +9 -16
  104. package/Source/Core/PixelFormat.js +1 -15
  105. package/Source/DataSources/CallbackProperty.js +8 -2
  106. package/Source/DataSources/CheckerboardMaterialProperty.js +7 -1
  107. package/Source/DataSources/ColorMaterialProperty.js +7 -1
  108. package/Source/DataSources/CompositeMaterialProperty.js +5 -4
  109. package/Source/DataSources/CompositePositionProperty.js +7 -1
  110. package/Source/DataSources/CompositeProperty.js +5 -5
  111. package/Source/DataSources/ConstantPositionProperty.js +7 -1
  112. package/Source/DataSources/Entity.js +1 -1
  113. package/Source/DataSources/GridMaterialProperty.js +7 -1
  114. package/Source/DataSources/ImageMaterialProperty.js +8 -1
  115. package/Source/DataSources/MaterialProperty.js +7 -1
  116. package/Source/DataSources/NodeTransformationProperty.js +7 -1
  117. package/Source/DataSources/PolylineArrowMaterialProperty.js +7 -1
  118. package/Source/DataSources/PolylineDashMaterialProperty.js +7 -1
  119. package/Source/DataSources/PolylineGlowMaterialProperty.js +7 -1
  120. package/Source/DataSources/PolylineOutlineMaterialProperty.js +7 -1
  121. package/Source/DataSources/PositionProperty.js +1 -1
  122. package/Source/DataSources/PositionPropertyArray.js +7 -1
  123. package/Source/DataSources/Property.js +1 -1
  124. package/Source/DataSources/PropertyArray.js +5 -5
  125. package/Source/DataSources/PropertyBag.js +5 -4
  126. package/Source/DataSources/ReferenceProperty.js +7 -1
  127. package/Source/DataSources/SampledPositionProperty.js +7 -1
  128. package/Source/DataSources/SampledProperty.js +6 -4
  129. package/Source/DataSources/ScaledPositionProperty.js +6 -0
  130. package/Source/DataSources/StripeMaterialProperty.js +7 -1
  131. package/Source/DataSources/TerrainOffsetProperty.js +9 -0
  132. package/Source/DataSources/TimeIntervalCollectionPositionProperty.js +7 -1
  133. package/Source/DataSources/TimeIntervalCollectionProperty.js +5 -5
  134. package/Source/DataSources/VelocityOrientationProperty.js +6 -1
  135. package/Source/DataSources/VelocityVectorProperty.js +3 -5
  136. package/Source/Renderer/AutomaticUniforms.js +2 -17
  137. package/Source/Renderer/Context.js +15 -0
  138. package/Source/Renderer/CubeMap.js +326 -348
  139. package/Source/Renderer/CubeMapFace.js +26 -48
  140. package/Source/Renderer/PixelDatatype.js +23 -0
  141. package/Source/Renderer/Sampler.js +7 -13
  142. package/Source/Renderer/ShaderProgram.js +7 -0
  143. package/Source/Renderer/Texture.js +396 -332
  144. package/Source/Renderer/UniformState.js +3 -22
  145. package/Source/Renderer/demodernizeShader.js +2 -0
  146. package/Source/Renderer/loadCubeMap.js +3 -8
  147. package/Source/Scene/ArcGisMapService.js +1 -1
  148. package/Source/Scene/CameraEventAggregator.js +49 -5
  149. package/Source/Scene/Globe.js +1 -1
  150. package/Source/Scene/GlobeSurfaceShaderSet.js +29 -24
  151. package/Source/Scene/GlobeSurfaceTileProvider.js +5 -3
  152. package/Source/Scene/ImageBasedLighting.js +34 -34
  153. package/Source/Scene/Label.js +2 -2
  154. package/Source/Scene/Material.js +24 -2
  155. package/Source/Scene/Model/ImageBasedLightingPipelineStage.js +7 -15
  156. package/Source/Scene/PostProcessStageCollection.js +45 -15
  157. package/Source/Scene/PostProcessStageLibrary.js +26 -0
  158. package/Source/Scene/Scene.js +20 -22
  159. package/Source/Scene/SceneTransforms.js +0 -62
  160. package/Source/Scene/ScreenSpaceCameraController.js +11 -4
  161. package/Source/Scene/SkyBox.js +13 -19
  162. package/Source/Scene/SpecularEnvironmentCubeMap.js +240 -0
  163. package/Source/Scene/Tonemapper.js +35 -23
  164. package/Source/Scene/VoxelPrimitive.js +0 -29
  165. package/Source/Scene/VoxelRenderResources.js +0 -3
  166. package/Source/Shaders/Builtin/CzmBuiltins.js +2 -2
  167. package/Source/Shaders/Builtin/Functions/pbrLighting.glsl +2 -2
  168. package/Source/Shaders/Builtin/Functions/pbrLighting.js +2 -2
  169. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.glsl +23 -0
  170. package/Source/Shaders/Builtin/Functions/pbrNeutralTonemapping.js +25 -0
  171. package/Source/Shaders/Builtin/Functions/textureCube.glsl +21 -2
  172. package/Source/Shaders/Builtin/Functions/textureCube.js +21 -2
  173. package/Source/Shaders/Builtin/Structs/materialInput.glsl +2 -0
  174. package/Source/Shaders/Builtin/Structs/materialInput.js +2 -0
  175. package/Source/Shaders/GlobeFS.glsl +10 -4
  176. package/Source/Shaders/GlobeFS.js +10 -4
  177. package/Source/Shaders/Materials/WaterMaskMaterial.glsl +15 -0
  178. package/Source/Shaders/Materials/WaterMaskMaterial.js +17 -0
  179. package/Source/Shaders/Model/AtmosphereStageFS.glsl +1 -1
  180. package/Source/Shaders/Model/AtmosphereStageFS.js +1 -1
  181. package/Source/Shaders/Model/ImageBasedLightingStageFS.glsl +40 -29
  182. package/Source/Shaders/Model/ImageBasedLightingStageFS.js +40 -29
  183. package/Source/Shaders/Model/LightingStageFS.glsl +2 -2
  184. package/Source/Shaders/Model/LightingStageFS.js +2 -2
  185. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.glsl +4 -0
  186. package/Source/Shaders/PostProcessStages/AcesTonemappingStage.js +4 -0
  187. package/Source/Shaders/PostProcessStages/FilmicTonemapping.glsl +4 -0
  188. package/Source/Shaders/PostProcessStages/FilmicTonemapping.js +4 -0
  189. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.glsl +4 -0
  190. package/Source/Shaders/PostProcessStages/ModifiedReinhardTonemapping.js +4 -0
  191. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.glsl +25 -0
  192. package/Source/Shaders/PostProcessStages/PbrNeutralTonemapping.js +27 -0
  193. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.glsl +4 -0
  194. package/Source/Shaders/PostProcessStages/ReinhardTonemapping.js +4 -0
  195. package/Source/Shaders/SkyAtmosphereFS.glsl +1 -1
  196. package/Source/Shaders/SkyAtmosphereFS.js +1 -1
  197. package/Source/Widget/CesiumWidget.js +1 -1
  198. package/index.d.ts +117 -101
  199. package/index.js +212 -213
  200. package/package.json +2 -2
  201. package/Build/Workers/chunk-3WUV74WM.js +0 -1800
  202. package/Build/Workers/chunk-4MSUJ4I7.js +0 -456
  203. package/Build/Workers/chunk-5KWHSZYL.js +0 -834
  204. package/Build/Workers/chunk-5O6JWQ4E.js +0 -398
  205. package/Build/Workers/chunk-6OFDHMHR.js +0 -1258
  206. package/Build/Workers/chunk-AA4GZKOT.js +0 -75
  207. package/Build/Workers/chunk-B75IEX2S.js +0 -390
  208. package/Build/Workers/chunk-BAVI3ZS2.js +0 -39
  209. package/Build/Workers/chunk-BBDZYSZB.js +0 -287
  210. package/Build/Workers/chunk-C45MU4GZ.js +0 -220
  211. package/Build/Workers/chunk-CF7P7K7E.js +0 -684
  212. package/Build/Workers/chunk-D4K27X2M.js +0 -305
  213. package/Build/Workers/chunk-DKVHRNFY.js +0 -100
  214. package/Build/Workers/chunk-ELI4BUOT.js +0 -963
  215. package/Build/Workers/chunk-FQPSOOPH.js +0 -258
  216. package/Build/Workers/chunk-GNHZH7HP.js +0 -37
  217. package/Build/Workers/chunk-GWT64LKY.js +0 -171
  218. package/Build/Workers/chunk-HGEEOMSC.js +0 -157
  219. package/Build/Workers/chunk-IUROUBPA.js +0 -300
  220. package/Build/Workers/chunk-JNLWLSTP.js +0 -476
  221. package/Build/Workers/chunk-JYQNWIQQ.js +0 -44
  222. package/Build/Workers/chunk-KUN2ZA5X.js +0 -138
  223. package/Build/Workers/chunk-KV4EQHK4.js +0 -1477
  224. package/Build/Workers/chunk-LXQ5QAEJ.js +0 -196
  225. package/Build/Workers/chunk-MBZH7YZ7.js +0 -945
  226. package/Build/Workers/chunk-MKXWJTFQ.js +0 -781
  227. package/Build/Workers/chunk-MMV6TO3P.js +0 -101
  228. package/Build/Workers/chunk-MSKXMXJI.js +0 -500
  229. package/Build/Workers/chunk-OAPA2RTG.js +0 -239
  230. package/Build/Workers/chunk-OE4MCOC7.js +0 -421
  231. package/Build/Workers/chunk-OJF4RTJG.js +0 -634
  232. package/Build/Workers/chunk-OXSI7N4C.js +0 -768
  233. package/Build/Workers/chunk-PYHLO636.js +0 -2857
  234. package/Build/Workers/chunk-QD4KM3GO.js +0 -138
  235. package/Build/Workers/chunk-QMLTCCYG.js +0 -55
  236. package/Build/Workers/chunk-QYQIVZBU.js +0 -117
  237. package/Build/Workers/chunk-R3TKLC6E.js +0 -1075
  238. package/Build/Workers/chunk-R4ZEWO4I.js +0 -122
  239. package/Build/Workers/chunk-RCK55EDX.js +0 -691
  240. package/Build/Workers/chunk-RHBWXX7C.js +0 -629
  241. package/Build/Workers/chunk-SAPFXU5X.js +0 -102
  242. package/Build/Workers/chunk-TBBFDFCS.js +0 -368
  243. package/Build/Workers/chunk-TGY6H6N6.js +0 -163
  244. package/Build/Workers/chunk-UOEUCKKU.js +0 -59
  245. package/Build/Workers/chunk-VFBNELXB.js +0 -353
  246. package/Build/Workers/chunk-VYWUFRRR.js +0 -1052
  247. package/Build/Workers/chunk-WVSELU6O.js +0 -2716
  248. package/Build/Workers/chunk-X43SJLQL.js +0 -10364
  249. package/Build/Workers/chunk-XUOJCLOH.js +0 -511
  250. package/Build/Workers/chunk-YLYBLJ3Y.js +0 -73
  251. package/Build/Workers/chunk-ZEE2EIFD.js +0 -430
  252. package/Build/Workers/chunk-ZIKGV7EL.js +0 -58
  253. package/Source/Scene/OctahedralProjectedCubeMap.js +0 -444
  254. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.glsl +0 -78
  255. package/Source/Shaders/Builtin/Functions/sampleOctahedralProjection.js +0 -80
  256. package/Source/Shaders/OctahedralProjectionAtlasFS.glsl +0 -89
  257. package/Source/Shaders/OctahedralProjectionAtlasFS.js +0 -91
  258. package/Source/Shaders/OctahedralProjectionFS.glsl +0 -14
  259. package/Source/Shaders/OctahedralProjectionFS.js +0 -16
  260. package/Source/Shaders/OctahedralProjectionVS.glsl +0 -10
  261. package/Source/Shaders/OctahedralProjectionVS.js +0 -12
@@ -12,7 +12,7 @@ import TextureWrap from "../Renderer/TextureWrap.js";
12
12
  import PassThrough from "../Shaders/PostProcessStages/PassThrough.js";
13
13
  import PostProcessStageLibrary from "./PostProcessStageLibrary.js";
14
14
  import PostProcessStageTextureCache from "./PostProcessStageTextureCache.js";
15
- import Tonemapper from "./Tonemapper.js";
15
+ import Tonemapper, { validateTonemapper } from "./Tonemapper.js";
16
16
 
17
17
  const stackScratch = [];
18
18
 
@@ -41,11 +41,12 @@ function PostProcessStageCollection() {
41
41
  // Some shaders, such as the atmosphere and ground atmosphere, output values slightly over 1.0.
42
42
  this._autoExposureEnabled = false;
43
43
  this._autoExposure = PostProcessStageLibrary.createAutoExposureStage();
44
+ this._exposure = 1.0;
44
45
  this._tonemapping = undefined;
45
46
  this._tonemapper = undefined;
46
47
 
47
- // set tonemapper and tonemapping
48
- this.tonemapper = Tonemapper.ACES;
48
+ // set tonemapper and tonemapping using the setter
49
+ this.tonemapper = Tonemapper.PBR_NEUTRAL;
49
50
 
50
51
  const tonemapping = this._tonemapping;
51
52
 
@@ -313,11 +314,14 @@ Object.defineProperties(PostProcessStageCollection.prototype, {
313
314
  },
314
315
 
315
316
  /**
316
- * Gets and sets the tonemapping algorithm used when rendering with high dynamic range.
317
+ * Specifies the tonemapping algorithm used when rendering with high dynamic range.
318
+ * {@link https://sandcastle.cesium.com/?src=High%20Dynamic%20Range.html|Sandcastle Demo}
317
319
  *
320
+ * @example viewer.scene.postProcessStages.tonemapper = Cesium.Tonemapper.ACES;
321
+ *
322
+ * @default Tonemapper.PBR_NEUTRAL
318
323
  * @memberof PostProcessStageCollection.prototype
319
324
  * @type {Tonemapper}
320
- * @private
321
325
  */
322
326
  tonemapper: {
323
327
  get: function () {
@@ -328,7 +332,7 @@ Object.defineProperties(PostProcessStageCollection.prototype, {
328
332
  return;
329
333
  }
330
334
  //>>includeStart('debug', pragmas.debug);
331
- if (!Tonemapper.validate(value)) {
335
+ if (!validateTonemapper(value)) {
332
336
  throw new DeveloperError("tonemapper was set to an invalid value.");
333
337
  }
334
338
  //>>includeEnd('debug');
@@ -339,26 +343,31 @@ Object.defineProperties(PostProcessStageCollection.prototype, {
339
343
  }
340
344
 
341
345
  const useAutoExposure = this._autoExposureEnabled;
342
- let tonemapper;
346
+ let tonemapping;
343
347
 
344
348
  switch (value) {
345
349
  case Tonemapper.REINHARD:
346
- tonemapper = PostProcessStageLibrary.createReinhardTonemappingStage(
350
+ tonemapping = PostProcessStageLibrary.createReinhardTonemappingStage(
347
351
  useAutoExposure
348
352
  );
349
353
  break;
350
354
  case Tonemapper.MODIFIED_REINHARD:
351
- tonemapper = PostProcessStageLibrary.createModifiedReinhardTonemappingStage(
355
+ tonemapping = PostProcessStageLibrary.createModifiedReinhardTonemappingStage(
352
356
  useAutoExposure
353
357
  );
354
358
  break;
355
359
  case Tonemapper.FILMIC:
356
- tonemapper = PostProcessStageLibrary.createFilmicTonemappingStage(
360
+ tonemapping = PostProcessStageLibrary.createFilmicTonemappingStage(
361
+ useAutoExposure
362
+ );
363
+ break;
364
+ case Tonemapper.PBR_NEUTRAL:
365
+ tonemapping = PostProcessStageLibrary.createPbrNeutralTonemappingStage(
357
366
  useAutoExposure
358
367
  );
359
368
  break;
360
369
  default:
361
- tonemapper = PostProcessStageLibrary.createAcesTonemappingStage(
370
+ tonemapping = PostProcessStageLibrary.createAcesTonemappingStage(
362
371
  useAutoExposure
363
372
  );
364
373
  break;
@@ -366,22 +375,43 @@ Object.defineProperties(PostProcessStageCollection.prototype, {
366
375
 
367
376
  if (useAutoExposure) {
368
377
  const autoexposure = this._autoExposure;
369
- tonemapper.uniforms.autoExposure = function () {
378
+ tonemapping.uniforms.autoExposure = function () {
370
379
  return autoexposure.outputTexture;
371
380
  };
381
+ } else {
382
+ tonemapping.uniforms.exposure = this._exposure;
372
383
  }
373
384
 
374
385
  this._tonemapper = value;
375
- this._tonemapping = tonemapper;
386
+ this._tonemapping = tonemapping;
376
387
 
377
388
  if (defined(this._stageNames)) {
378
- this._stageNames[tonemapper.name] = tonemapper;
379
- tonemapper._textureCache = this._textureCache;
389
+ this._stageNames[tonemapping.name] = tonemapping;
390
+ tonemapping._textureCache = this._textureCache;
380
391
  }
381
392
 
382
393
  this._textureCacheDirty = true;
383
394
  },
384
395
  },
396
+
397
+ /**
398
+ * Control the exposure when HDR is on. Less than 1.0 makes the tonemapping darker while greater than 1.0 makes it brighter.
399
+ *
400
+ * @example viewer.scene.postProcessStages.exposure = 1.0;
401
+ *
402
+ * @default 1.0
403
+ * @memberof PostProcessStageCollection.prototype
404
+ * @type {number}
405
+ */
406
+ exposure: {
407
+ get: function () {
408
+ return this._exposure;
409
+ },
410
+ set: function (value) {
411
+ this._tonemapping.uniforms.exposure = value;
412
+ this._exposure = value;
413
+ },
414
+ },
385
415
  });
386
416
 
387
417
  function removeStages(collection) {
@@ -14,6 +14,7 @@ import DepthOfField from "../Shaders/PostProcessStages/DepthOfField.js";
14
14
  import DepthView from "../Shaders/PostProcessStages/DepthView.js";
15
15
  import EdgeDetection from "../Shaders/PostProcessStages/EdgeDetection.js";
16
16
  import FilmicTonemapping from "../Shaders/PostProcessStages/FilmicTonemapping.js";
17
+ import PbrNeutralTonemapping from "../Shaders/PostProcessStages/PbrNeutralTonemapping.js";
17
18
  import FXAA from "../Shaders/PostProcessStages/FXAA.js";
18
19
  import GaussianBlur1D from "../Shaders/PostProcessStages/GaussianBlur1D.js";
19
20
  import LensFlare from "../Shaders/PostProcessStages/LensFlare.js";
@@ -669,6 +670,7 @@ PostProcessStageLibrary.createAcesTonemappingStage = function (
669
670
  fragmentShader: fs,
670
671
  uniforms: {
671
672
  autoExposure: undefined,
673
+ exposure: 1.0,
672
674
  },
673
675
  });
674
676
  };
@@ -689,6 +691,28 @@ PostProcessStageLibrary.createFilmicTonemappingStage = function (
689
691
  fragmentShader: fs,
690
692
  uniforms: {
691
693
  autoExposure: undefined,
694
+ exposure: 1.0,
695
+ },
696
+ });
697
+ };
698
+
699
+ /**
700
+ * Creates a post-process stage that applies filmic tonemapping operator.
701
+ * @param {boolean} useAutoExposure Whether or not to use auto-exposure.
702
+ * @return {PostProcessStage} A post-process stage that applies filmic tonemapping operator.
703
+ * @private
704
+ */
705
+ PostProcessStageLibrary.createPbrNeutralTonemappingStage = function (
706
+ useAutoExposure
707
+ ) {
708
+ let fs = useAutoExposure ? "#define AUTO_EXPOSURE\n" : "";
709
+ fs += PbrNeutralTonemapping;
710
+ return new PostProcessStage({
711
+ name: "czm_pbr_neutral",
712
+ fragmentShader: fs,
713
+ uniforms: {
714
+ autoExposure: undefined,
715
+ exposure: 1.0,
692
716
  },
693
717
  });
694
718
  };
@@ -709,6 +733,7 @@ PostProcessStageLibrary.createReinhardTonemappingStage = function (
709
733
  fragmentShader: fs,
710
734
  uniforms: {
711
735
  autoExposure: undefined,
736
+ exposure: 1.0,
712
737
  },
713
738
  });
714
739
  };
@@ -730,6 +755,7 @@ PostProcessStageLibrary.createModifiedReinhardTonemappingStage = function (
730
755
  uniforms: {
731
756
  white: Color.WHITE,
732
757
  autoExposure: undefined,
758
+ exposure: 1.0,
733
759
  },
734
760
  });
735
761
  };
@@ -57,7 +57,6 @@ import GlobeTranslucencyState from "./GlobeTranslucencyState.js";
57
57
  import InvertClassification from "./InvertClassification.js";
58
58
  import JobScheduler from "./JobScheduler.js";
59
59
  import MapMode2D from "./MapMode2D.js";
60
- import OctahedralProjectedCubeMap from "./OctahedralProjectedCubeMap.js";
61
60
  import PerformanceDisplay from "./PerformanceDisplay.js";
62
61
  import PerInstanceColorAppearance from "./PerInstanceColorAppearance.js";
63
62
  import Picking from "./Picking.js";
@@ -69,6 +68,7 @@ import SceneTransforms from "./SceneTransforms.js";
69
68
  import SceneTransitioner from "./SceneTransitioner.js";
70
69
  import ScreenSpaceCameraController from "./ScreenSpaceCameraController.js";
71
70
  import ShadowMap from "./ShadowMap.js";
71
+ import SpecularEnvironmentCubeMap from "./SpecularEnvironmentCubeMap.js";
72
72
  import StencilConstants from "./StencilConstants.js";
73
73
  import SunLight from "./SunLight.js";
74
74
  import SunPostProcess from "./SunPostProcess.js";
@@ -107,7 +107,7 @@ const requestRenderAfterFrame = function (scene) {
107
107
  * @param {boolean} [options.requestRenderMode=false] If true, rendering a frame will only occur when needed as determined by changes within the scene. Enabling improves performance of the application, but requires using {@link Scene#requestRender} to render a new frame explicitly in this mode. This will be necessary in many cases after making changes to the scene in other parts of the API. See {@link https://cesium.com/blog/2018/01/24/cesium-scene-rendering-performance/|Improving Performance with Explicit Rendering}.
108
108
  * @param {number} [options.maximumRenderTimeChange=0.0] If requestRenderMode is true, this value defines the maximum change in simulation time allowed before a render is requested. See {@link https://cesium.com/blog/2018/01/24/cesium-scene-rendering-performance/|Improving Performance with Explicit Rendering}.
109
109
  * @param {number} [options.depthPlaneEllipsoidOffset=0.0] Adjust the DepthPlane to address rendering artefacts below ellipsoid zero elevation.
110
- * @param {number} [options.msaaSamples=1] If provided, this value controls the rate of multisample antialiasing. Typical multisampling rates are 2, 4, and sometimes 8 samples per pixel. Higher sampling rates of MSAA may impact performance in exchange for improved visual quality. This value only applies to WebGL2 contexts that support multisample render targets.
110
+ * @param {number} [options.msaaSamples=4] If provided, this value controls the rate of multisample antialiasing. Typical multisampling rates are 2, 4, and sometimes 8 samples per pixel. Higher sampling rates of MSAA may impact performance in exchange for improved visual quality. This value only applies to WebGL2 contexts that support multisample render targets. Set to 1 to disable MSAA.
111
111
  *
112
112
  * @see CesiumWidget
113
113
  * @see {@link http://www.khronos.org/registry/webgl/specs/latest/#5.2|WebGLContextAttributes}
@@ -228,7 +228,7 @@ function Scene(options) {
228
228
  this._minimumDisableDepthTestDistance = 0.0;
229
229
  this._debugInspector = new DebugInspector();
230
230
 
231
- this._msaaSamples = defaultValue(options.msaaSamples, 1);
231
+ this._msaaSamples = defaultValue(options.msaaSamples, 4);
232
232
 
233
233
  /**
234
234
  * Exceptions occurring in <code>render</code> are always caught in order to raise the
@@ -738,7 +738,7 @@ function Scene(options) {
738
738
  * @type {string}
739
739
  */
740
740
  this.specularEnvironmentMaps = undefined;
741
- this._specularEnvironmentMapAtlas = undefined;
741
+ this._specularEnvironmentCubeMap = undefined;
742
742
 
743
743
  /**
744
744
  * The light source for shading. Defaults to a directional light from the Sun.
@@ -927,7 +927,7 @@ Object.defineProperties(Scene.prototype, {
927
927
  */
928
928
  specularEnvironmentMapsSupported: {
929
929
  get: function () {
930
- return OctahedralProjectedCubeMap.isSupported(this._context);
930
+ return SpecularEnvironmentCubeMap.isSupported(this._context);
931
931
  },
932
932
  },
933
933
 
@@ -1630,7 +1630,7 @@ Object.defineProperties(Scene.prototype, {
1630
1630
  * The sample rate of multisample antialiasing (values greater than 1 enable MSAA).
1631
1631
  * @memberof Scene.prototype
1632
1632
  * @type {number}
1633
- * @default 1
1633
+ * @default 4
1634
1634
  */
1635
1635
  msaaSamples: {
1636
1636
  get: function () {
@@ -1964,11 +1964,11 @@ Scene.prototype.updateFrameState = function () {
1964
1964
  frameState.verticalExaggerationRelativeHeight = this.verticalExaggerationRelativeHeight;
1965
1965
 
1966
1966
  if (
1967
- defined(this._specularEnvironmentMapAtlas) &&
1968
- this._specularEnvironmentMapAtlas.ready
1967
+ defined(this._specularEnvironmentCubeMap) &&
1968
+ this._specularEnvironmentCubeMap.ready
1969
1969
  ) {
1970
- frameState.specularEnvironmentMaps = this._specularEnvironmentMapAtlas.texture;
1971
- frameState.specularEnvironmentMapsMaximumLOD = this._specularEnvironmentMapAtlas.maximumMipmapLevel;
1970
+ frameState.specularEnvironmentMaps = this._specularEnvironmentCubeMap.texture;
1971
+ frameState.specularEnvironmentMapsMaximumLOD = this._specularEnvironmentCubeMap.maximumMipmapLevel;
1972
1972
  } else {
1973
1973
  frameState.specularEnvironmentMaps = undefined;
1974
1974
  frameState.specularEnvironmentMapsMaximumLOD = undefined;
@@ -3328,20 +3328,18 @@ Scene.prototype.updateEnvironment = function () {
3328
3328
  );
3329
3329
 
3330
3330
  const envMaps = this.specularEnvironmentMaps;
3331
- let envMapAtlas = this._specularEnvironmentMapAtlas;
3332
- if (
3333
- defined(envMaps) &&
3334
- (!defined(envMapAtlas) || envMapAtlas.url !== envMaps)
3335
- ) {
3336
- envMapAtlas = envMapAtlas && envMapAtlas.destroy();
3337
- this._specularEnvironmentMapAtlas = new OctahedralProjectedCubeMap(envMaps);
3338
- } else if (!defined(envMaps) && defined(envMapAtlas)) {
3339
- envMapAtlas.destroy();
3340
- this._specularEnvironmentMapAtlas = undefined;
3331
+ let specularEnvironmentCubeMap = this._specularEnvironmentCubeMap;
3332
+ if (defined(envMaps) && specularEnvironmentCubeMap?.url !== envMaps) {
3333
+ specularEnvironmentCubeMap =
3334
+ specularEnvironmentCubeMap && specularEnvironmentCubeMap.destroy();
3335
+ this._specularEnvironmentCubeMap = new SpecularEnvironmentCubeMap(envMaps);
3336
+ } else if (!defined(envMaps) && defined(specularEnvironmentCubeMap)) {
3337
+ specularEnvironmentCubeMap.destroy();
3338
+ this._specularEnvironmentCubeMap = undefined;
3341
3339
  }
3342
3340
 
3343
- if (defined(this._specularEnvironmentMapAtlas)) {
3344
- this._specularEnvironmentMapAtlas.update(frameState);
3341
+ if (defined(this._specularEnvironmentCubeMap)) {
3342
+ this._specularEnvironmentCubeMap.update(frameState);
3345
3343
  }
3346
3344
  };
3347
3345
 
@@ -4,7 +4,6 @@ import Cartesian3 from "../Core/Cartesian3.js";
4
4
  import Cartesian4 from "../Core/Cartesian4.js";
5
5
  import Cartographic from "../Core/Cartographic.js";
6
6
  import defined from "../Core/defined.js";
7
- import deprecationWarning from "../Core/deprecationWarning.js";
8
7
  import DeveloperError from "../Core/DeveloperError.js";
9
8
  import CesiumMath from "../Core/Math.js";
10
9
  import Matrix4 from "../Core/Matrix4.js";
@@ -53,33 +52,6 @@ SceneTransforms.worldToWindowCoordinates = function (scene, position, result) {
53
52
  );
54
53
  };
55
54
 
56
- /**
57
- * Transforms a position in WGS84 coordinates to window coordinates. This is commonly used to place an
58
- * HTML element at the same screen position as an object in the scene.
59
- *
60
- * @param {Scene} scene The scene.
61
- * @param {Cartesian3} position The position in WGS84 (world) coordinates.
62
- * @param {Cartesian2} [result] An optional object to return the input position transformed to window coordinates.
63
- * @returns {Cartesian2|undefined} The modified result parameter or a new Cartesian2 instance if one was not provided. This may be <code>undefined</code> if the input position is near the center of the ellipsoid.
64
- *
65
- * @example
66
- * // Output the window position of longitude/latitude (0, 0) every time the mouse moves.
67
- * const scene = widget.scene;
68
- * const ellipsoid = scene.ellipsoid;
69
- * const position = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
70
- * const handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
71
- * handler.setInputAction(function(movement) {
72
- * console.log(Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, position));
73
- * }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
74
- */
75
- SceneTransforms.wgs84ToWindowCoordinates = function (scene, position, result) {
76
- deprecationWarning(
77
- "SceneTransforms.wgs84ToWindowCoordinates",
78
- "SceneTransforms.wgs84ToWindowCoordinates has been deprecated. It will be removed in 1.21. Use SceneTransforms.worldToWindowCoordinates instead."
79
- );
80
- return SceneTransforms.worldToWindowCoordinates(scene, position, result);
81
- };
82
-
83
55
  const scratchCartesian4 = new Cartesian4();
84
56
  const scratchEyeOffset = new Cartesian3();
85
57
 
@@ -320,40 +292,6 @@ SceneTransforms.worldToDrawingBufferCoordinates = function (
320
292
  return SceneTransforms.transformWindowToDrawingBuffer(scene, result, result);
321
293
  };
322
294
 
323
- /**
324
- * Transforms a position in world coordinates to drawing buffer coordinates. This may produce different
325
- * results from SceneTransforms.wgs84ToWindowCoordinates when the browser zoom is not 100%, or on high-DPI displays.
326
- *
327
- * @param {Scene} scene The scene.
328
- * @param {Cartesian3} position The position in world (WGS84 or alternative ellipsoid) coordinates.
329
- * @param {Cartesian2} [result] An optional object to return the input position transformed to window coordinates.
330
- * @returns {Cartesian2|undefined} The modified result parameter or a new Cartesian2 instance if one was not provided. This may be <code>undefined</code> if the input position is near the center of the ellipsoid.
331
- *
332
- * @example
333
- * // Output the window position of longitude/latitude (0, 0) every time the mouse moves.
334
- * const position = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
335
- * const handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
336
- * handler.setInputAction(function(movement) {
337
- * console.log(Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, position));
338
- * }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
339
- */
340
- SceneTransforms.wgs84ToDrawingBufferCoordinates = function (
341
- scene,
342
- position,
343
- result
344
- ) {
345
- deprecationWarning(
346
- "SceneTransforms.wgs84ToDrawingBufferCoordinates",
347
- "SceneTransforms.wgs84ToDrawingBufferCoordinates has been deprecated. It will be removed in 1.21. Use SceneTransforms.worldToDrawingBufferCoordinates instead."
348
- );
349
-
350
- return SceneTransforms.worldToDrawingBufferCoordinates(
351
- scene,
352
- position,
353
- result
354
- );
355
- };
356
-
357
295
  const projectedPosition = new Cartesian3();
358
296
  const positionInCartographic = new Cartographic();
359
297
 
@@ -137,6 +137,14 @@ function ScreenSpaceCameraController(scene) {
137
137
  * @default {@link Number.POSITIVE_INFINITY}
138
138
  */
139
139
  this.maximumZoomDistance = Number.POSITIVE_INFINITY;
140
+
141
+ /**
142
+ * A multiplier for the speed at which the camera will zoom.
143
+ * @type {Number}
144
+ * @default 5.0
145
+ */
146
+ this.zoomFactor = 5.0;
147
+
140
148
  /**
141
149
  * The input that allows the user to pan around the map. This only applies in 2D and Columbus view modes.
142
150
  * <p>
@@ -324,7 +332,6 @@ function ScreenSpaceCameraController(scene) {
324
332
  );
325
333
 
326
334
  // Constants, Make any of these public?
327
- this._zoomFactor = 5.0;
328
335
  this._rotateFactor = undefined;
329
336
  this._rotateRateRangeAdjustment = undefined;
330
337
  this._maximumRotateRate = 1.77;
@@ -1005,7 +1012,7 @@ function zoom2D(controller, startPosition, movement) {
1005
1012
  controller,
1006
1013
  startPosition,
1007
1014
  movement,
1008
- controller._zoomFactor,
1015
+ controller.zoomFactor,
1009
1016
  camera.getMagnitude()
1010
1017
  );
1011
1018
  }
@@ -1763,7 +1770,7 @@ function zoomCV(controller, startPosition, movement) {
1763
1770
  controller,
1764
1771
  startPosition,
1765
1772
  movement,
1766
- controller._zoomFactor,
1773
+ controller.zoomFactor,
1767
1774
  distance
1768
1775
  );
1769
1776
  }
@@ -2363,7 +2370,7 @@ function zoom3D(controller, startPosition, movement) {
2363
2370
  controller,
2364
2371
  startPosition,
2365
2372
  movement,
2366
- controller._zoomFactor,
2373
+ controller.zoomFactor,
2367
2374
  distance,
2368
2375
  Cartesian3.dot(unitPosition, camera.direction)
2369
2376
  );
@@ -1,6 +1,7 @@
1
1
  import buildModuleUrl from "../Core/buildModuleUrl.js";
2
2
  import BoxGeometry from "../Core/BoxGeometry.js";
3
3
  import Cartesian3 from "../Core/Cartesian3.js";
4
+ import Check from "../Core/Check.js";
4
5
  import defaultValue from "../Core/defaultValue.js";
5
6
  import defined from "../Core/defined.js";
6
7
  import destroyObject from "../Core/destroyObject.js";
@@ -95,49 +96,42 @@ function SkyBox(options) {
95
96
  */
96
97
  SkyBox.prototype.update = function (frameState, useHdr) {
97
98
  const that = this;
99
+ const { mode, passes, context } = frameState;
98
100
 
99
101
  if (!this.show) {
100
102
  return undefined;
101
103
  }
102
104
 
103
- if (
104
- frameState.mode !== SceneMode.SCENE3D &&
105
- frameState.mode !== SceneMode.MORPHING
106
- ) {
105
+ if (mode !== SceneMode.SCENE3D && mode !== SceneMode.MORPHING) {
107
106
  return undefined;
108
107
  }
109
108
 
110
109
  // The sky box is only rendered during the render pass; it is not pickable, it doesn't cast shadows, etc.
111
- if (!frameState.passes.render) {
110
+ if (!passes.render) {
112
111
  return undefined;
113
112
  }
114
113
 
115
- const context = frameState.context;
116
-
117
114
  if (this._sources !== this.sources) {
118
115
  this._sources = this.sources;
119
116
  const sources = this.sources;
120
117
 
121
118
  //>>includeStart('debug', pragmas.debug);
119
+ Check.defined("this.sources", sources);
122
120
  if (
123
- !defined(sources.positiveX) ||
124
- !defined(sources.negativeX) ||
125
- !defined(sources.positiveY) ||
126
- !defined(sources.negativeY) ||
127
- !defined(sources.positiveZ) ||
128
- !defined(sources.negativeZ)
121
+ Object.values(CubeMap.FaceName).some(
122
+ (faceName) => !defined(sources[faceName])
123
+ )
129
124
  ) {
130
125
  throw new DeveloperError(
131
- "this.sources is required and must have positiveX, negativeX, positiveY, negativeY, positiveZ, and negativeZ properties."
126
+ "this.sources must have positiveX, negativeX, positiveY, negativeY, positiveZ, and negativeZ properties."
132
127
  );
133
128
  }
134
129
 
130
+ const sourceType = typeof sources.positiveX;
135
131
  if (
136
- typeof sources.positiveX !== typeof sources.negativeX ||
137
- typeof sources.positiveX !== typeof sources.positiveY ||
138
- typeof sources.positiveX !== typeof sources.negativeY ||
139
- typeof sources.positiveX !== typeof sources.positiveZ ||
140
- typeof sources.positiveX !== typeof sources.negativeZ
132
+ Object.values(CubeMap.FaceName).some(
133
+ (faceName) => typeof sources[faceName] !== sourceType
134
+ )
141
135
  ) {
142
136
  throw new DeveloperError(
143
137
  "this.sources properties must all be the same type."