@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
@@ -50,7 +50,7 @@ uniform vec4 u_colorsToAlpha[TEXTURE_UNITS];\n\
50
50
  uniform vec4 u_dayTextureTexCoordsRectangle[TEXTURE_UNITS];\n\
51
51
  #endif\n\
52
52
  \n\
53
- #ifdef SHOW_REFLECTIVE_OCEAN\n\
53
+ #if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL))\n\
54
54
  uniform sampler2D u_waterMask;\n\
55
55
  uniform vec4 u_waterMaskTranslationAndScale;\n\
56
56
  uniform float u_zoomedOutOceanSpecularIntensity;\n\
@@ -363,7 +363,7 @@ void main()\n\
363
363
  float fade = 0.0;\n\
364
364
  #endif\n\
365
365
  \n\
366
- #ifdef SHOW_REFLECTIVE_OCEAN\n\
366
+ #if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL))\n\
367
367
  vec2 waterMaskTranslation = u_waterMaskTranslationAndScale.xy;\n\
368
368
  vec2 waterMaskScale = u_waterMaskTranslationAndScale.zw;\n\
369
369
  vec2 waterMaskTextureCoordinates = v_textureCoordinates.xy * waterMaskScale + waterMaskTranslation;\n\
@@ -371,6 +371,7 @@ void main()\n\
371
371
  \n\
372
372
  float mask = texture(u_waterMask, waterMaskTextureCoordinates).r;\n\
373
373
  \n\
374
+ #ifdef SHOW_REFLECTIVE_OCEAN\n\
374
375
  if (mask > 0.0)\n\
375
376
  {\n\
376
377
  mat3 enuToEye = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalEC);\n\
@@ -382,6 +383,7 @@ void main()\n\
382
383
  \n\
383
384
  color = computeWaterColor(v_positionEC, textureCoordinates, enuToEye, color, mask, fade);\n\
384
385
  }\n\
386
+ #endif\n\
385
387
  #endif\n\
386
388
  \n\
387
389
  #ifdef APPLY_MATERIAL\n\
@@ -393,6 +395,10 @@ void main()\n\
393
395
  materialInput.slope = v_slope;\n\
394
396
  materialInput.height = v_height;\n\
395
397
  materialInput.aspect = v_aspect;\n\
398
+ #ifdef HAS_WATER_MASK\n\
399
+ materialInput.waterMask = mask;\n\
400
+ #endif\n\
401
+ \n\
396
402
  czm_material material = czm_getMaterial(materialInput);\n\
397
403
  vec4 materialColor = vec4(material.diffuse, material.alpha);\n\
398
404
  color = alphaBlend(materialColor, color);\n\
@@ -423,7 +429,7 @@ void main()\n\
423
429
  #ifdef ENABLE_CLIPPING_POLYGONS\n\
424
430
  vec2 clippingPosition = v_clippingPosition;\n\
425
431
  int regionIndex = v_regionIndex;\n\
426
- clipPolygons(u_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); \n\
432
+ clipPolygons(u_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex);\n\
427
433
  #endif\n\
428
434
  \n\
429
435
  #ifdef HIGHLIGHT_FILL_TILE\n\
@@ -490,7 +496,7 @@ void main()\n\
490
496
  #endif\n\
491
497
  \n\
492
498
  #ifndef HDR\n\
493
- fogColor.rgb = czm_acesTonemapping(fogColor.rgb);\n\
499
+ fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb);\n\
494
500
  fogColor.rgb = czm_inverseGamma(fogColor.rgb);\n\
495
501
  #endif\n\
496
502
  \n\
@@ -0,0 +1,15 @@
1
+ uniform vec4 waterColor;
2
+ uniform vec4 landColor;
3
+
4
+ czm_material czm_getMaterial(czm_materialInput materialInput)
5
+ {
6
+ czm_material material = czm_getDefaultMaterial(materialInput);
7
+
8
+ vec4 outColor = mix(landColor, waterColor, materialInput.waterMask);
9
+ outColor = czm_gammaCorrect(outColor);
10
+
11
+ material.diffuse = outColor.rgb;
12
+ material.alpha = outColor.a;
13
+
14
+ return material;
15
+ }
@@ -0,0 +1,17 @@
1
+ //This file is automatically rebuilt by the Cesium build process.
2
+ export default "uniform vec4 waterColor;\n\
3
+ uniform vec4 landColor;\n\
4
+ \n\
5
+ czm_material czm_getMaterial(czm_materialInput materialInput)\n\
6
+ {\n\
7
+ czm_material material = czm_getDefaultMaterial(materialInput);\n\
8
+ \n\
9
+ vec4 outColor = mix(landColor, waterColor, materialInput.waterMask);\n\
10
+ outColor = czm_gammaCorrect(outColor);\n\
11
+ \n\
12
+ material.diffuse = outColor.rgb;\n\
13
+ material.alpha = outColor.a;\n\
14
+ \n\
15
+ return material;\n\
16
+ }\n\
17
+ ";
@@ -52,7 +52,7 @@ void applyFog(inout vec4 color, vec4 groundAtmosphereColor, vec3 lightDirection,
52
52
 
53
53
  // Tonemap if HDR rendering is disabled
54
54
  #ifndef HDR
55
- fogColor.rgb = czm_acesTonemapping(fogColor.rgb);
55
+ fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb);
56
56
  fogColor.rgb = czm_inverseGamma(fogColor.rgb);
57
57
  #endif
58
58
 
@@ -53,7 +53,7 @@ void applyFog(inout vec4 color, vec4 groundAtmosphereColor, vec3 lightDirection,
53
53
  \n\
54
54
  // Tonemap if HDR rendering is disabled\n\
55
55
  #ifndef HDR\n\
56
- fogColor.rgb = czm_acesTonemapping(fogColor.rgb);\n\
56
+ fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb);\n\
57
57
  fogColor.rgb = czm_inverseGamma(fogColor.rgb);\n\
58
58
  #endif\n\
59
59
  \n\
@@ -152,7 +152,7 @@ float getSunLuminance(vec3 positionWC, vec3 normalEC, vec3 lightDirectionEC)
152
152
  }
153
153
 
154
154
  #ifdef DIFFUSE_IBL
155
- vec3 computeDiffuseIBL(vec3 cubeDir)
155
+ vec3 sampleDiffuseEnvironment(vec3 cubeDir)
156
156
  {
157
157
  #ifdef CUSTOM_SPHERICAL_HARMONICS
158
158
  return czm_sphericalHarmonics(cubeDir, model_sphericalHarmonicCoefficients);
@@ -166,13 +166,11 @@ vec3 computeDiffuseIBL(vec3 cubeDir)
166
166
  vec3 sampleSpecularEnvironment(vec3 cubeDir, float roughness)
167
167
  {
168
168
  #ifdef CUSTOM_SPECULAR_IBL
169
- float maxLod = model_specularEnvironmentMapsMaximumLOD;
170
- float lod = roughness * maxLod;
171
- return czm_sampleOctahedralProjection(model_specularEnvironmentMaps, model_specularEnvironmentMapsSize, cubeDir, lod, maxLod);
169
+ float lod = roughness * model_specularEnvironmentMapsMaximumLOD;
170
+ return czm_textureCube(model_specularEnvironmentMaps, cubeDir, lod).rgb;
172
171
  #else
173
- float maxLod = czm_specularEnvironmentMapsMaximumLOD;
174
- float lod = roughness * maxLod;
175
- return czm_sampleOctahedralProjection(czm_specularEnvironmentMaps, czm_specularEnvironmentMapSize, cubeDir, lod, maxLod);
172
+ float lod = roughness * czm_specularEnvironmentMapsMaximumLOD;
173
+ return czm_textureCube(czm_specularEnvironmentMaps, cubeDir, lod).rgb;
176
174
  #endif
177
175
  }
178
176
  vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness)
@@ -191,25 +189,43 @@ vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness)
191
189
 
192
190
  #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL)
193
191
  /**
194
- * Compute the light contributions from environment maps and spherical harmonic coefficients
192
+ * Compute the light contributions from environment maps and spherical harmonic coefficients.
193
+ * See Fdez-Aguera, https://www.jcgt.org/published/0008/01/03/paper.pdf, for explanation
194
+ * of the single- and multi-scattering terms.
195
195
  *
196
- * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position
197
- * @param {vec3} normalEC The surface normal in eye coordinates
198
- * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates.
196
+ * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position.
197
+ * @param {vec3} normalEC The surface normal in eye coordinates.
199
198
  * @param {czm_modelMaterial} The material properties.
200
- * @return {vec3} The computed HDR color
199
+ * @return {vec3} The computed HDR color.
201
200
  */
202
- vec3 textureIBL(
203
- vec3 viewDirectionEC,
204
- vec3 normalEC,
205
- vec3 lightDirectionEC,
206
- czm_modelMaterial material
207
- ) {
201
+ vec3 textureIBL(vec3 viewDirectionEC, vec3 normalEC, czm_modelMaterial material) {
202
+ vec3 f0 = material.specular;
203
+ float roughness = material.roughness;
204
+ float specularWeight = 1.0;
205
+ #ifdef USE_SPECULAR
206
+ specularWeight = material.specularWeight;
207
+ #endif
208
+ float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0);
209
+
210
+ // see https://bruop.github.io/ibl/ at Single Scattering Results
211
+ // Roughness dependent fresnel, from Fdez-Aguera
212
+ vec3 f90 = max(vec3(1.0 - roughness), f0);
213
+ vec3 singleScatterFresnel = fresnelSchlick2(f0, f90, NdotV);
214
+
215
+ vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg;
216
+ vec3 FssEss = specularWeight * (singleScatterFresnel * brdfLut.x + brdfLut.y);
217
+
208
218
  #ifdef DIFFUSE_IBL
209
219
  vec3 normalMC = normalize(model_iblReferenceFrameMatrix * normalEC);
210
- vec3 diffuseContribution = computeDiffuseIBL(normalMC) * material.diffuse;
220
+ vec3 irradiance = sampleDiffuseEnvironment(normalMC);
221
+
222
+ vec3 averageFresnel = f0 + (1.0 - f0) / 21.0;
223
+ float Ems = specularWeight * (1.0 - brdfLut.x - brdfLut.y);
224
+ vec3 FmsEms = FssEss * averageFresnel * Ems / (1.0 - averageFresnel * Ems);
225
+ vec3 dielectricScattering = (1.0 - FssEss - FmsEms) * material.diffuse;
226
+ vec3 diffuseContribution = irradiance * (FmsEms + dielectricScattering);
211
227
  #else
212
- vec3 diffuseContribution = vec3(0.0);
228
+ vec3 diffuseContribution = vec3(0.0);
213
229
  #endif
214
230
 
215
231
  #ifdef USE_ANISOTROPY
@@ -217,7 +233,7 @@ vec3 textureIBL(
217
233
  vec3 anisotropyDirection = material.anisotropicB;
218
234
  vec3 anisotropicTangent = cross(anisotropyDirection, viewDirectionEC);
219
235
  vec3 anisotropicNormal = cross(anisotropicTangent, anisotropyDirection);
220
- float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - material.roughness);
236
+ float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - roughness);
221
237
  float bendFactorPow4 = bendFactor * bendFactor * bendFactor * bendFactor;
222
238
  vec3 bentNormal = normalize(mix(anisotropicNormal, normalEC, bendFactorPow4));
223
239
  vec3 reflectEC = reflect(-viewDirectionEC, bentNormal);
@@ -227,15 +243,10 @@ vec3 textureIBL(
227
243
 
228
244
  #ifdef SPECULAR_IBL
229
245
  vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflectEC);
230
- float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0);
231
- vec3 f0 = material.specular;
232
- vec3 specularContribution = computeSpecularIBL(reflectMC, NdotV, f0, material.roughness);
246
+ vec3 radiance = sampleSpecularEnvironment(reflectMC, roughness);
247
+ vec3 specularContribution = radiance * FssEss;
233
248
  #else
234
- vec3 specularContribution = vec3(0.0);
235
- #endif
236
-
237
- #ifdef USE_SPECULAR
238
- specularContribution *= material.specularWeight;
249
+ vec3 specularContribution = vec3(0.0);
239
250
  #endif
240
251
 
241
252
  return diffuseContribution + specularContribution;
@@ -153,7 +153,7 @@ float getSunLuminance(vec3 positionWC, vec3 normalEC, vec3 lightDirectionEC)\n\
153
153
  }\n\
154
154
  \n\
155
155
  #ifdef DIFFUSE_IBL\n\
156
- vec3 computeDiffuseIBL(vec3 cubeDir)\n\
156
+ vec3 sampleDiffuseEnvironment(vec3 cubeDir)\n\
157
157
  {\n\
158
158
  #ifdef CUSTOM_SPHERICAL_HARMONICS\n\
159
159
  return czm_sphericalHarmonics(cubeDir, model_sphericalHarmonicCoefficients); \n\
@@ -167,13 +167,11 @@ vec3 computeDiffuseIBL(vec3 cubeDir)\n\
167
167
  vec3 sampleSpecularEnvironment(vec3 cubeDir, float roughness)\n\
168
168
  {\n\
169
169
  #ifdef CUSTOM_SPECULAR_IBL\n\
170
- float maxLod = model_specularEnvironmentMapsMaximumLOD;\n\
171
- float lod = roughness * maxLod;\n\
172
- return czm_sampleOctahedralProjection(model_specularEnvironmentMaps, model_specularEnvironmentMapsSize, cubeDir, lod, maxLod);\n\
170
+ float lod = roughness * model_specularEnvironmentMapsMaximumLOD;\n\
171
+ return czm_textureCube(model_specularEnvironmentMaps, cubeDir, lod).rgb;\n\
173
172
  #else\n\
174
- float maxLod = czm_specularEnvironmentMapsMaximumLOD;\n\
175
- float lod = roughness * maxLod;\n\
176
- return czm_sampleOctahedralProjection(czm_specularEnvironmentMaps, czm_specularEnvironmentMapSize, cubeDir, lod, maxLod);\n\
173
+ float lod = roughness * czm_specularEnvironmentMapsMaximumLOD;\n\
174
+ return czm_textureCube(czm_specularEnvironmentMaps, cubeDir, lod).rgb;\n\
177
175
  #endif\n\
178
176
  }\n\
179
177
  vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness)\n\
@@ -192,25 +190,43 @@ vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness)\n\
192
190
  \n\
193
191
  #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL)\n\
194
192
  /**\n\
195
- * Compute the light contributions from environment maps and spherical harmonic coefficients\n\
193
+ * Compute the light contributions from environment maps and spherical harmonic coefficients.\n\
194
+ * See Fdez-Aguera, https://www.jcgt.org/published/0008/01/03/paper.pdf, for explanation\n\
195
+ * of the single- and multi-scattering terms.\n\
196
196
  *\n\
197
- * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position\n\
198
- * @param {vec3} normalEC The surface normal in eye coordinates\n\
199
- * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates.\n\
197
+ * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position.\n\
198
+ * @param {vec3} normalEC The surface normal in eye coordinates.\n\
200
199
  * @param {czm_modelMaterial} The material properties.\n\
201
- * @return {vec3} The computed HDR color\n\
200
+ * @return {vec3} The computed HDR color.\n\
202
201
  */\n\
203
- vec3 textureIBL(\n\
204
- vec3 viewDirectionEC,\n\
205
- vec3 normalEC,\n\
206
- vec3 lightDirectionEC,\n\
207
- czm_modelMaterial material\n\
208
- ) {\n\
202
+ vec3 textureIBL(vec3 viewDirectionEC, vec3 normalEC, czm_modelMaterial material) {\n\
203
+ vec3 f0 = material.specular;\n\
204
+ float roughness = material.roughness;\n\
205
+ float specularWeight = 1.0;\n\
206
+ #ifdef USE_SPECULAR\n\
207
+ specularWeight = material.specularWeight;\n\
208
+ #endif\n\
209
+ float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0);\n\
210
+ \n\
211
+ // see https://bruop.github.io/ibl/ at Single Scattering Results\n\
212
+ // Roughness dependent fresnel, from Fdez-Aguera\n\
213
+ vec3 f90 = max(vec3(1.0 - roughness), f0);\n\
214
+ vec3 singleScatterFresnel = fresnelSchlick2(f0, f90, NdotV);\n\
215
+ \n\
216
+ vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg;\n\
217
+ vec3 FssEss = specularWeight * (singleScatterFresnel * brdfLut.x + brdfLut.y);\n\
218
+ \n\
209
219
  #ifdef DIFFUSE_IBL\n\
210
220
  vec3 normalMC = normalize(model_iblReferenceFrameMatrix * normalEC);\n\
211
- vec3 diffuseContribution = computeDiffuseIBL(normalMC) * material.diffuse;\n\
221
+ vec3 irradiance = sampleDiffuseEnvironment(normalMC);\n\
222
+ \n\
223
+ vec3 averageFresnel = f0 + (1.0 - f0) / 21.0;\n\
224
+ float Ems = specularWeight * (1.0 - brdfLut.x - brdfLut.y);\n\
225
+ vec3 FmsEms = FssEss * averageFresnel * Ems / (1.0 - averageFresnel * Ems);\n\
226
+ vec3 dielectricScattering = (1.0 - FssEss - FmsEms) * material.diffuse;\n\
227
+ vec3 diffuseContribution = irradiance * (FmsEms + dielectricScattering);\n\
212
228
  #else\n\
213
- vec3 diffuseContribution = vec3(0.0); \n\
229
+ vec3 diffuseContribution = vec3(0.0);\n\
214
230
  #endif\n\
215
231
  \n\
216
232
  #ifdef USE_ANISOTROPY\n\
@@ -218,7 +234,7 @@ vec3 textureIBL(\n\
218
234
  vec3 anisotropyDirection = material.anisotropicB;\n\
219
235
  vec3 anisotropicTangent = cross(anisotropyDirection, viewDirectionEC);\n\
220
236
  vec3 anisotropicNormal = cross(anisotropicTangent, anisotropyDirection);\n\
221
- float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - material.roughness);\n\
237
+ float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - roughness);\n\
222
238
  float bendFactorPow4 = bendFactor * bendFactor * bendFactor * bendFactor;\n\
223
239
  vec3 bentNormal = normalize(mix(anisotropicNormal, normalEC, bendFactorPow4));\n\
224
240
  vec3 reflectEC = reflect(-viewDirectionEC, bentNormal);\n\
@@ -228,15 +244,10 @@ vec3 textureIBL(\n\
228
244
  \n\
229
245
  #ifdef SPECULAR_IBL\n\
230
246
  vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflectEC);\n\
231
- float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0);\n\
232
- vec3 f0 = material.specular;\n\
233
- vec3 specularContribution = computeSpecularIBL(reflectMC, NdotV, f0, material.roughness);\n\
247
+ vec3 radiance = sampleSpecularEnvironment(reflectMC, roughness);\n\
248
+ vec3 specularContribution = radiance * FssEss;\n\
234
249
  #else\n\
235
- vec3 specularContribution = vec3(0.0); \n\
236
- #endif\n\
237
- \n\
238
- #ifdef USE_SPECULAR\n\
239
- specularContribution *= material.specularWeight;\n\
250
+ vec3 specularContribution = vec3(0.0);\n\
240
251
  #endif\n\
241
252
  \n\
242
253
  return diffuseContribution + specularContribution;\n\
@@ -4,7 +4,7 @@ vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColor
4
4
  #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL)
5
5
  // Environment maps were provided, use them for IBL
6
6
  vec3 viewDirection = -normalize(position);
7
- vec3 iblColor = textureIBL(viewDirection, normal, lightDirection, material);
7
+ vec3 iblColor = textureIBL(viewDirection, normal, material);
8
8
  #else
9
9
  // Use procedural IBL if there are no environment maps
10
10
  vec3 imageBasedLighting = proceduralIBL(position, normal, lightDirection, material);
@@ -120,7 +120,7 @@ void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attribu
120
120
  // tonemapping. However, if HDR is not enabled, we must tonemap else large
121
121
  // values may be clamped to 1.0
122
122
  #ifndef HDR
123
- color = czm_acesTonemapping(color);
123
+ color = czm_pbrNeutralTonemapping(color);
124
124
  #endif
125
125
  #else // unlit
126
126
  vec3 color = material.diffuse;
@@ -5,7 +5,7 @@ vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColor
5
5
  #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL)\n\
6
6
  // Environment maps were provided, use them for IBL\n\
7
7
  vec3 viewDirection = -normalize(position);\n\
8
- vec3 iblColor = textureIBL(viewDirection, normal, lightDirection, material);\n\
8
+ vec3 iblColor = textureIBL(viewDirection, normal, material);\n\
9
9
  #else\n\
10
10
  // Use procedural IBL if there are no environment maps\n\
11
11
  vec3 imageBasedLighting = proceduralIBL(position, normal, lightDirection, material);\n\
@@ -121,7 +121,7 @@ void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attribu
121
121
  // tonemapping. However, if HDR is not enabled, we must tonemap else large\n\
122
122
  // values may be clamped to 1.0\n\
123
123
  #ifndef HDR\n\
124
- color = czm_acesTonemapping(color);\n\
124
+ color = czm_pbrNeutralTonemapping(color);\n\
125
125
  #endif\n\
126
126
  #else // unlit\n\
127
127
  vec3 color = material.diffuse;\n\
@@ -4,6 +4,8 @@ in vec2 v_textureCoordinates;
4
4
 
5
5
  #ifdef AUTO_EXPOSURE
6
6
  uniform sampler2D autoExposure;
7
+ #else
8
+ uniform float exposure;
7
9
  #endif
8
10
 
9
11
  void main()
@@ -13,6 +15,8 @@ void main()
13
15
 
14
16
  #ifdef AUTO_EXPOSURE
15
17
  color /= texture(autoExposure, vec2(0.5)).r;
18
+ #else
19
+ color *= vec3(exposure);
16
20
  #endif
17
21
  color = czm_acesTonemapping(color);
18
22
  color = czm_inverseGamma(color);
@@ -5,6 +5,8 @@ in vec2 v_textureCoordinates;\n\
5
5
  \n\
6
6
  #ifdef AUTO_EXPOSURE\n\
7
7
  uniform sampler2D autoExposure;\n\
8
+ #else\n\
9
+ uniform float exposure;\n\
8
10
  #endif\n\
9
11
  \n\
10
12
  void main()\n\
@@ -14,6 +16,8 @@ void main()\n\
14
16
  \n\
15
17
  #ifdef AUTO_EXPOSURE\n\
16
18
  color /= texture(autoExposure, vec2(0.5)).r;\n\
19
+ #else\n\
20
+ color *= vec3(exposure);\n\
17
21
  #endif\n\
18
22
  color = czm_acesTonemapping(color);\n\
19
23
  color = czm_inverseGamma(color);\n\
@@ -4,6 +4,8 @@ in vec2 v_textureCoordinates;
4
4
 
5
5
  #ifdef AUTO_EXPOSURE
6
6
  uniform sampler2D autoExposure;
7
+ #else
8
+ uniform float exposure;
7
9
  #endif
8
10
 
9
11
  // See slides 142 and 143:
@@ -17,6 +19,8 @@ void main()
17
19
  #ifdef AUTO_EXPOSURE
18
20
  float exposure = texture(autoExposure, vec2(0.5)).r;
19
21
  color /= exposure;
22
+ #else
23
+ color *= vec3(exposure);
20
24
  #endif
21
25
 
22
26
  const float A = 0.22; // shoulder strength
@@ -5,6 +5,8 @@ in vec2 v_textureCoordinates;\n\
5
5
  \n\
6
6
  #ifdef AUTO_EXPOSURE\n\
7
7
  uniform sampler2D autoExposure;\n\
8
+ #else\n\
9
+ uniform float exposure;\n\
8
10
  #endif\n\
9
11
  \n\
10
12
  // See slides 142 and 143:\n\
@@ -18,6 +20,8 @@ void main()\n\
18
20
  #ifdef AUTO_EXPOSURE\n\
19
21
  float exposure = texture(autoExposure, vec2(0.5)).r;\n\
20
22
  color /= exposure;\n\
23
+ #else\n\
24
+ color *= vec3(exposure);\n\
21
25
  #endif\n\
22
26
  \n\
23
27
  const float A = 0.22; // shoulder strength\n\
@@ -5,6 +5,8 @@ in vec2 v_textureCoordinates;
5
5
 
6
6
  #ifdef AUTO_EXPOSURE
7
7
  uniform sampler2D autoExposure;
8
+ #else
9
+ uniform float exposure;
8
10
  #endif
9
11
 
10
12
  // See equation 4:
@@ -17,6 +19,8 @@ void main()
17
19
  #ifdef AUTO_EXPOSURE
18
20
  float exposure = texture(autoExposure, vec2(0.5)).r;
19
21
  color /= exposure;
22
+ #else
23
+ color *= vec3(exposure);
20
24
  #endif
21
25
  color = (color * (1.0 + color / white)) / (1.0 + color);
22
26
  color = czm_inverseGamma(color);
@@ -6,6 +6,8 @@ in vec2 v_textureCoordinates;\n\
6
6
  \n\
7
7
  #ifdef AUTO_EXPOSURE\n\
8
8
  uniform sampler2D autoExposure;\n\
9
+ #else\n\
10
+ uniform float exposure;\n\
9
11
  #endif\n\
10
12
  \n\
11
13
  // See equation 4:\n\
@@ -18,6 +20,8 @@ void main()\n\
18
20
  #ifdef AUTO_EXPOSURE\n\
19
21
  float exposure = texture(autoExposure, vec2(0.5)).r;\n\
20
22
  color /= exposure;\n\
23
+ #else\n\
24
+ color *= vec3(exposure);\n\
21
25
  #endif\n\
22
26
  color = (color * (1.0 + color / white)) / (1.0 + color);\n\
23
27
  color = czm_inverseGamma(color);\n\
@@ -0,0 +1,25 @@
1
+ uniform sampler2D colorTexture;
2
+
3
+ in vec2 v_textureCoordinates;
4
+
5
+ #ifdef AUTO_EXPOSURE
6
+ uniform sampler2D autoExposure;
7
+ #else
8
+ uniform float exposure;
9
+ #endif
10
+
11
+ void main()
12
+ {
13
+ vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);
14
+ vec3 color = fragmentColor.rgb;
15
+
16
+ #ifdef AUTO_EXPOSURE
17
+ color /= texture(autoExposure, vec2(0.5)).r;
18
+ #else
19
+ color *= vec3(exposure);
20
+ #endif
21
+ color = czm_pbrNeutralTonemapping(color);
22
+ color = czm_inverseGamma(color);
23
+
24
+ out_FragColor = vec4(color, fragmentColor.a);
25
+ }
@@ -0,0 +1,27 @@
1
+ //This file is automatically rebuilt by the Cesium build process.
2
+ export default "uniform sampler2D colorTexture;\n\
3
+ \n\
4
+ in vec2 v_textureCoordinates;\n\
5
+ \n\
6
+ #ifdef AUTO_EXPOSURE\n\
7
+ uniform sampler2D autoExposure;\n\
8
+ #else\n\
9
+ uniform float exposure;\n\
10
+ #endif\n\
11
+ \n\
12
+ void main()\n\
13
+ {\n\
14
+ vec4 fragmentColor = texture(colorTexture, v_textureCoordinates);\n\
15
+ vec3 color = fragmentColor.rgb;\n\
16
+ \n\
17
+ #ifdef AUTO_EXPOSURE\n\
18
+ color /= texture(autoExposure, vec2(0.5)).r;\n\
19
+ #else\n\
20
+ color *= vec3(exposure);\n\
21
+ #endif\n\
22
+ color = czm_pbrNeutralTonemapping(color);\n\
23
+ color = czm_inverseGamma(color);\n\
24
+ \n\
25
+ out_FragColor = vec4(color, fragmentColor.a);\n\
26
+ }\n\
27
+ ";
@@ -4,6 +4,8 @@ in vec2 v_textureCoordinates;
4
4
 
5
5
  #ifdef AUTO_EXPOSURE
6
6
  uniform sampler2D autoExposure;
7
+ #else
8
+ uniform float exposure;
7
9
  #endif
8
10
 
9
11
  // See equation 3:
@@ -16,6 +18,8 @@ void main()
16
18
  #ifdef AUTO_EXPOSURE
17
19
  float exposure = texture(autoExposure, vec2(0.5)).r;
18
20
  color /= exposure;
21
+ #else
22
+ color *= vec3(exposure);
19
23
  #endif
20
24
  color = color / (1.0 + color);
21
25
  color = czm_inverseGamma(color);
@@ -5,6 +5,8 @@ in vec2 v_textureCoordinates;\n\
5
5
  \n\
6
6
  #ifdef AUTO_EXPOSURE\n\
7
7
  uniform sampler2D autoExposure;\n\
8
+ #else\n\
9
+ uniform float exposure;\n\
8
10
  #endif\n\
9
11
  \n\
10
12
  // See equation 3:\n\
@@ -17,6 +19,8 @@ void main()\n\
17
19
  #ifdef AUTO_EXPOSURE\n\
18
20
  float exposure = texture(autoExposure, vec2(0.5)).r;\n\
19
21
  color /= exposure;\n\
22
+ #else\n\
23
+ color *= vec3(exposure);\n\
20
24
  #endif\n\
21
25
  color = color / (1.0 + color);\n\
22
26
  color = czm_inverseGamma(color);\n\
@@ -38,7 +38,7 @@ void main (void)
38
38
  vec4 color = computeAtmosphereColor(v_outerPositionWC, lightDirection, rayleighColor, mieColor, opacity);
39
39
 
40
40
  #ifndef HDR
41
- color.rgb = czm_acesTonemapping(color.rgb);
41
+ color.rgb = czm_pbrNeutralTonemapping(color.rgb);
42
42
  color.rgb = czm_inverseGamma(color.rgb);
43
43
  #endif
44
44
 
@@ -39,7 +39,7 @@ void main (void)\n\
39
39
  vec4 color = computeAtmosphereColor(v_outerPositionWC, lightDirection, rayleighColor, mieColor, opacity);\n\
40
40
  \n\
41
41
  #ifndef HDR\n\
42
- color.rgb = czm_acesTonemapping(color.rgb);\n\
42
+ color.rgb = czm_pbrNeutralTonemapping(color.rgb);\n\
43
43
  color.rgb = czm_inverseGamma(color.rgb);\n\
44
44
  #endif\n\
45
45
  \n\
@@ -143,7 +143,7 @@ function configureCameraFrustum(widget) {
143
143
  * @param {boolean} [options.blurActiveElementOnCanvasFocus=true] If true, the active element will blur when the viewer's canvas is clicked. Setting this to false is useful for cases when the canvas is clicked only for retrieving position or an entity data without actually meaning to set the canvas to be the active element.
144
144
  * @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}.
145
145
  * @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}.
146
- * @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.
146
+ * @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.
147
147
  *
148
148
  * @exception {DeveloperError} Element with id "container" does not exist in the document.
149
149
  *