@arcgis/core 5.2.0-next.111 → 5.2.0-next.112
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/assets/components/assets/icon/alignBottom16.json +1 -0
- package/assets/components/assets/icon/alignBottom24.json +1 -0
- package/assets/components/assets/icon/alignBottom32.json +1 -0
- package/assets/components/assets/icon/alignCenterHorizontal16.json +1 -0
- package/assets/components/assets/icon/alignCenterHorizontal24.json +1 -0
- package/assets/components/assets/icon/alignCenterHorizontal32.json +1 -0
- package/assets/components/assets/icon/alignCenterVertical16.json +1 -0
- package/assets/components/assets/icon/alignCenterVertical24.json +1 -0
- package/assets/components/assets/icon/alignCenterVertical32.json +1 -0
- package/assets/components/assets/icon/alignLeft16.json +1 -0
- package/assets/components/assets/icon/alignLeft24.json +1 -0
- package/assets/components/assets/icon/alignLeft32.json +1 -0
- package/assets/components/assets/icon/alignRight16.json +1 -0
- package/assets/components/assets/icon/alignRight24.json +1 -0
- package/assets/components/assets/icon/alignRight32.json +1 -0
- package/assets/components/assets/icon/alignTop16.json +1 -0
- package/assets/components/assets/icon/alignTop24.json +1 -0
- package/assets/components/assets/icon/alignTop32.json +1 -0
- package/assets/components/assets/icon/columnGroup16.json +1 -0
- package/assets/components/assets/icon/columnGroup24.json +1 -0
- package/assets/components/assets/icon/columnGroup32.json +1 -0
- package/assets/components/assets/icon/columnRemove16.json +1 -0
- package/assets/components/assets/icon/columnRemove24.json +1 -0
- package/assets/components/assets/icon/columnRemove32.json +1 -0
- package/assets/components/assets/icon/columnUngroup16.json +1 -0
- package/assets/components/assets/icon/columnUngroup24.json +1 -0
- package/assets/components/assets/icon/columnUngroup32.json +1 -0
- package/assets/components/assets/icon/envelopeOpen16.json +1 -0
- package/assets/components/assets/icon/envelopeOpen24.json +1 -0
- package/assets/components/assets/icon/envelopeOpen32.json +1 -0
- package/assets/components/assets/icon/handDraw16.json +1 -0
- package/assets/components/assets/icon/handDraw24.json +1 -0
- package/assets/components/assets/icon/handDraw32.json +1 -0
- package/assets/components/assets/icon/monitorShare16.json +1 -0
- package/assets/components/assets/icon/monitorShare24.json +1 -0
- package/assets/components/assets/icon/monitorShare32.json +1 -0
- package/assets/components/assets/icon/pi16.json +1 -0
- package/assets/components/assets/icon/pi24.json +1 -0
- package/assets/components/assets/icon/pi32.json +1 -0
- package/assets/components/assets/icon/rowGroup16.json +1 -0
- package/assets/components/assets/icon/rowGroup24.json +1 -0
- package/assets/components/assets/icon/rowGroup32.json +1 -0
- package/assets/components/assets/icon/rowRemove16.json +1 -0
- package/assets/components/assets/icon/rowRemove24.json +1 -0
- package/assets/components/assets/icon/rowRemove32.json +1 -0
- package/assets/components/assets/icon/rowUngroup16.json +1 -0
- package/assets/components/assets/icon/rowUngroup24.json +1 -0
- package/assets/components/assets/icon/rowUngroup32.json +1 -0
- package/assets/components/assets/icon/sdCard16.json +1 -0
- package/assets/components/assets/icon/sdCard24.json +1 -0
- package/assets/components/assets/icon/sdCard32.json +1 -0
- package/assets/components/assets/icon/spaceAroundHorizontal16.json +1 -0
- package/assets/components/assets/icon/spaceAroundHorizontal24.json +1 -0
- package/assets/components/assets/icon/spaceAroundHorizontal32.json +1 -0
- package/assets/components/assets/icon/spaceAroundVertical16.json +1 -0
- package/assets/components/assets/icon/spaceAroundVertical24.json +1 -0
- package/assets/components/assets/icon/spaceAroundVertical32.json +1 -0
- package/assets/components/assets/icon/spaceBetweenHorizontal16.json +1 -0
- package/assets/components/assets/icon/spaceBetweenHorizontal24.json +1 -0
- package/assets/components/assets/icon/spaceBetweenHorizontal32.json +1 -0
- package/assets/components/assets/icon/spaceBetweenVertical16.json +1 -0
- package/assets/components/assets/icon/spaceBetweenVertical24.json +1 -0
- package/assets/components/assets/icon/spaceBetweenVertical32.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyHorizontal16.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyHorizontal24.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyHorizontal32.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyVertical16.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyVertical24.json +1 -0
- package/assets/components/assets/icon/spacedEvenlyVertical32.json +1 -0
- package/assets/components/assets/icon/stretchHorizontal16.json +1 -0
- package/assets/components/assets/icon/stretchHorizontal24.json +1 -0
- package/assets/components/assets/icon/stretchHorizontal32.json +1 -0
- package/assets/components/assets/icon/stretchVertical16.json +1 -0
- package/assets/components/assets/icon/stretchVertical24.json +1 -0
- package/assets/components/assets/icon/stretchVertical32.json +1 -0
- package/assets/components/assets/icon/swatchPalette16.json +1 -0
- package/assets/components/assets/icon/swatchPalette24.json +1 -0
- package/assets/components/assets/icon/swatchPalette32.json +1 -0
- package/assets/components/assets/icon/thermometer16.json +1 -0
- package/assets/components/assets/icon/thermometer24.json +1 -0
- package/assets/components/assets/icon/thermometer32.json +1 -0
- package/assets/components/assets/icon/webCamera16.json +1 -0
- package/assets/components/assets/icon/webCamera24.json +1 -0
- package/assets/components/assets/icon/webCamera32.json +1 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/078ed48eb055dd213ee6.js +1 -0
- package/assets/esri/core/workers/chunks/186350d720352bd5ff33.js +1 -0
- package/assets/esri/core/workers/chunks/21c0743b2f612e7e7de3.js +1 -0
- package/assets/esri/core/workers/chunks/25cc6d7178a52f2f46b7.js +1 -0
- package/assets/esri/core/workers/chunks/{6010799e05d239073de0.js → 25ecf94d776c3b6db0f3.js} +1 -1
- package/assets/esri/core/workers/chunks/{10d33b4f248864225f85.js → 2728eda8178e02fbca47.js} +1 -1
- package/assets/esri/core/workers/chunks/{4c9df8ae9238454969b8.js → 2c21f4744e19b925a6ae.js} +1 -1
- package/assets/esri/core/workers/chunks/32fc7d1db4b311f6b880.js +1 -0
- package/assets/esri/core/workers/chunks/3acc1299c1382c3b034d.js +1 -0
- package/assets/esri/core/workers/chunks/{c2684fcde2923c9830e0.js → 42c4d0c1c08bf111e5a4.js} +1 -1
- package/assets/esri/core/workers/chunks/430802108b63194b7ddd.js +2 -0
- package/assets/esri/core/workers/chunks/{f5e8ccbd6b4c0a386903.js → 448f068a14f24f2f8a43.js} +1 -1
- package/assets/esri/core/workers/chunks/49c6dc487714f9cd55c7.js +1 -0
- package/assets/esri/core/workers/chunks/{70e0ead69a722fd964b8.js → 49e8ff5ed079a9e3be4b.js} +1 -1
- package/assets/esri/core/workers/chunks/{69921d068add041b5dcb.js → 5134241be1f1bf25231a.js} +1 -1
- package/assets/esri/core/workers/chunks/{54bb3678570ca032f051.js → 5762746cfb02a4119d82.js} +1 -1
- package/assets/esri/core/workers/chunks/{434c5b54e89ace974cbd.js → 5965a947f68b707eaa6b.js} +2 -2
- package/assets/esri/core/workers/chunks/6c25c929bcde7e3a2af1.js +1 -0
- package/assets/esri/core/workers/chunks/7610dd0b46948b7bd840.js +1 -0
- package/assets/esri/core/workers/chunks/7be56ac60e580c806a5d.js +1 -0
- package/assets/esri/core/workers/chunks/7f2ac03efaa4a4898ba2.js +2 -0
- package/assets/esri/core/workers/chunks/{847781aefed049493444.js → 9f760dc4492a03e0504c.js} +1 -1
- package/assets/esri/core/workers/chunks/{013c9cc198736a72f7f2.js → 9fb46ccd4be4c3b61c31.js} +1 -1
- package/assets/esri/core/workers/chunks/bdcca906fdfb8e179abb.js +2 -0
- package/assets/esri/core/workers/chunks/c5ceceb0683671f92efa.js +1 -0
- package/assets/esri/core/workers/chunks/c5e288d57bacb8451e2d.js +2 -0
- package/assets/esri/core/workers/chunks/{b92b7d6c1e693c97a3eb.js → d1f54b0079fb71a15612.js} +1 -1
- package/assets/esri/core/workers/chunks/{72be81c1394285b51ed3.js → d45483dd0dc2853b18b7.js} +212 -216
- package/assets/esri/core/workers/chunks/d5e3f8e5b8d2576d3cb3.js +2 -0
- package/assets/esri/core/workers/chunks/{21d4219844ae5654618b.js → d926bffc3ff9f87e9081.js} +1 -1
- package/assets/esri/core/workers/chunks/{abcda435bc83ef4240f9.js → e6dae16208f6978b59e0.js} +1 -1
- package/assets/esri/core/workers/chunks/e755075ac2e02e881fad.js +1 -0
- package/assets/esri/core/workers/chunks/{058d4c927486a361e633.js → ea9e770efc85594e4dd2.js} +1 -1
- package/assets/esri/core/workers/chunks/eff99e45d818e58fd443.js +1 -0
- package/assets/esri/core/workers/chunks/{a49147203e55609630cc.js → f453dc4a075d2f900c7d.js} +1 -1
- package/assets/esri/core/workers/chunks/f465fb26541372fdc908.js +2 -0
- package/assets/esri/core/workers/chunks/{b7809ef3e1dabd921339.js → f72f4413fc7461e11a2a.js} +1 -1
- package/assets/esri/themes/base/widgets/_BasemapLayerList.scss +1 -0
- package/assets/esri/themes/base/widgets/_Bookmarks.scss +1 -0
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/chunks/ChapmanAtmosphere.glsl.js +1 -1
- package/chunks/Component.glsl.js +57 -56
- package/chunks/DefaultMaterial.glsl.js +19 -23
- package/chunks/GaussianSplat.glsl.js +13 -11
- package/chunks/GlobalIllumination.glsl.js +1 -1
- package/chunks/Haze.glsl.js +1 -1
- package/chunks/Path.glsl.js +21 -24
- package/chunks/RealisticTree.glsl.js +42 -41
- package/chunks/RibbonLine.glsl.js +65 -56
- package/chunks/SimpleAtmosphere.glsl.js +1 -1
- package/chunks/Terrain.glsl.js +25 -25
- package/chunks/Water.glsl.js +4 -4
- package/config.js +1 -1
- package/core/units.js +1 -1
- package/geometry/support/heightModelInfoUtils.js +1 -1
- package/kernel.js +1 -1
- package/layers/GaussianSplatLayer.js +1 -1
- package/layers/ImageryTileLayer.js +1 -1
- package/layers/IntegratedMesh3DTilesLayer.js +1 -1
- package/layers/mixins/TiledImagery.d.ts +6 -0
- package/layers/mixins/TiledImagery.js +1 -1
- package/layers/raster/datasets/ImageServerRaster.js +1 -1
- package/layers/raster/datasets/RasterFactory.js +1 -1
- package/layers/support/domainUtils.d.ts +2 -0
- package/layers/support/domainUtils.js +1 -1
- package/layers/support/fieldUtils.d.ts +10 -0
- package/layers/support/fieldUtils.js +1 -1
- package/package.json +6 -6
- package/support/revision.js +1 -1
- package/symbols/LineStyleMarker3D.d.ts +3 -4
- package/symbols/LineSymbol3D.d.ts +19 -2
- package/symbols/LineSymbol3D.js +1 -1
- package/symbols/LineSymbol3DLayer.d.ts +13 -6
- package/symbols/Symbol3DLayer.d.ts +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/clipping.js +2 -0
- package/views/2d/input/MapViewInputManager.js +1 -1
- package/views/2d/input/handlers/KeyPan.js +1 -1
- package/views/2d/layers/support/annodime/DimensionInfo.js +1 -1
- package/views/2d/layers/support/annodime/dimensionUtils.js +1 -1
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/KeyboardNavigation.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
- package/views/3d/state/controllers/GamepadKeyboardController.js +1 -1
- package/views/3d/support/MemoryController.js +1 -1
- package/views/3d/support/gaussianSplatting/GaussianSplatDataStore.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentDrawParameters.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +4 -4
- package/views/3d/webgl-engine/core/shaderLibrary/output/getEmissions.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +57 -58
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +5 -3
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +7 -6
- package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js +5 -10
- package/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRendering.glsl.js +10 -48
- package/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js +16 -22
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js +6 -6
- package/views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadow.glsl.js +5 -3
- package/views/3d/webgl-engine/core/shaderLibrary/shading/pbrGlobals.glsl.js +19 -0
- package/views/3d/webgl-engine/core/shaderLibrary/shading/pbrShadingInfo.glsl.js +24 -0
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +2 -2
- package/views/3d/webgl-engine/effects/snowcover/SnowCover.glsl.js +4 -4
- package/views/3d/webgl-engine/lib/GaussianSplatDepthRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/LineMaterial.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/materials/ColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
- package/views/3d/webgl-engine/materials/PathTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/VisualVariablePassParameters.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +19 -22
- package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarkerTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/SlicePlaneMaterialTechniqueConfiguration.js +1 -1
- package/views/MapView.d.ts +1 -0
- package/views/SceneView.d.ts +1 -0
- package/views/View.js +1 -1
- package/views/support/DefaultsFromMap.js +1 -1
- package/widgets/BasemapLayerList.js +1 -1
- package/widgets/BatchAttributeForm/ReactiveContingentValuesManager.js +1 -1
- package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
- package/widgets/BatchAttributeForm/inputs/support/MultipleChoiceController.js +1 -1
- package/widgets/BatchAttributeForm.js +1 -1
- package/widgets/Bookmarks.js +1 -1
- package/widgets/FeatureForm/featureFormUtils.js +1 -1
- package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
- package/widgets/Search/LocatorSearchSource.d.ts +4 -3
- package/widgets/support/forms/formUtils.d.ts +5 -0
- package/widgets/support/forms/formUtils.js +1 -1
- package/widgets/support/forms/types.d.ts +7 -1
- package/assets/esri/core/workers/chunks/075eb62465edb9cbf907.js +0 -1
- package/assets/esri/core/workers/chunks/0ff13f7a18b0123d253e.js +0 -1
- package/assets/esri/core/workers/chunks/1082bb0858585bd4fa21.js +0 -2
- package/assets/esri/core/workers/chunks/19ac6f4664f97fb3821c.js +0 -1
- package/assets/esri/core/workers/chunks/1ec01fd6330d011c76d6.js +0 -1
- package/assets/esri/core/workers/chunks/2e2349387a2b9903f13c.js +0 -2
- package/assets/esri/core/workers/chunks/349e9f3d3e3267d02988.js +0 -1
- package/assets/esri/core/workers/chunks/3ffc852db1a820ed143b.js +0 -1
- package/assets/esri/core/workers/chunks/411bbdecba340df11d95.js +0 -2
- package/assets/esri/core/workers/chunks/4490dd8bae0dd2769d99.js +0 -1
- package/assets/esri/core/workers/chunks/476535cfb06ced74d611.js +0 -2
- package/assets/esri/core/workers/chunks/5e56a004b4407b8066eb.js +0 -1
- package/assets/esri/core/workers/chunks/6df29716f75696434807.js +0 -1
- package/assets/esri/core/workers/chunks/a322afbb48898ce35851.js +0 -1
- package/assets/esri/core/workers/chunks/b82b523b6837ed1f28d3.js +0 -2
- package/assets/esri/core/workers/chunks/c7b762bae945f383c723.js +0 -1
- package/assets/esri/core/workers/chunks/ef24fd6c0322e5de9fdf.js +0 -2
- package/assets/esri/core/workers/chunks/f9e5740b05de24ba81be.js +0 -1
- package/assets/esri/core/workers/chunks/fc622f9e33e3b48113c8.js +0 -1
- /package/assets/esri/core/workers/chunks/{476535cfb06ced74d611.js.LICENSE.txt → 430802108b63194b7ddd.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{b82b523b6837ed1f28d3.js.LICENSE.txt → 7f2ac03efaa4a4898ba2.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{ef24fd6c0322e5de9fdf.js.LICENSE.txt → bdcca906fdfb8e179abb.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{1082bb0858585bd4fa21.js.LICENSE.txt → c5e288d57bacb8451e2d.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{2e2349387a2b9903f13c.js.LICENSE.txt → d5e3f8e5b8d2576d3cb3.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{411bbdecba340df11d95.js.LICENSE.txt → f465fb26541372fdc908.js.LICENSE.txt} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{Float3BindUniform as i}from"../../shaderModules/Float3BindUniform.js";import{glsl as n}from"../../shaderModules/glsl.js";
|
|
2
|
+
import{Float3BindUniform as i}from"../../shaderModules/Float3BindUniform.js";import{glsl as n}from"../../shaderModules/glsl.js";const t=new i("mainLightDirection",i=>i.lighting.mainLight.direction),o=new i("mainLightIntensity",i=>i.lighting.mainLight.intensity);function a(i){i.uniforms.add(t,o),i.code.add(n`vec3 applyShading(vec3 shadingNormal, float shadow) {
|
|
3
3
|
float dotVal = clamp(dot(shadingNormal, mainLightDirection), 0.0, 1.0);
|
|
4
4
|
return mainLightIntensity * ((1.0 - shadow) * dotVal);
|
|
5
|
-
}`)}export{
|
|
5
|
+
}`)}export{a as applyShading,t as mainLightDirection,o as mainLightIntensity};
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{markerSizePerLineWidth as e}from"../../../../support/engineContent/marker.js";import{addPixelRatio as r}from"../util/View.glsl.js";import{FloatBindUniform as
|
|
3
|
-
float getLineWidth(${
|
|
4
|
-
|
|
2
|
+
import{markerSizePerLineWidth as e}from"../../../../support/engineContent/marker.js";import{addPixelRatio as r}from"../util/View.glsl.js";import{FloatBindUniform as o}from"../../shaderModules/FloatBindUniform.js";import{If as t,glsl as a}from"../../shaderModules/glsl.js";function i(i,n){const d=i.vertex,l=n.hasScreenSizePerspective,s=n.worldSized;r(d),s&&d.uniforms.add(new o("worldToScreenRatio",e=>1/e.screenToPCSRatio)),null==d.uniforms.get("markerScale")&&d.constants.add("markerScale","float",1),d.constants.add("markerSizePerLineWidth","float",e).code.add(a`
|
|
3
|
+
float getLineWidth(${t(l,"vec3 pos")}) {
|
|
4
|
+
float size = max(getSize(${t(l,"pos")}), 1.0);
|
|
5
|
+
return ${t(s,"size * pixelRatio * worldToScreenRatio","size * pixelRatio")};
|
|
5
6
|
}
|
|
6
7
|
|
|
7
8
|
float getScreenMarkerSize(float lineWidth) {
|
|
8
9
|
return markerScale * markerSizePerLineWidth * lineWidth;
|
|
9
10
|
}
|
|
10
|
-
`),2===n.space&&(d.constants.add("maxSegmentLengthFraction","float",.45),d.uniforms.add(new
|
|
11
|
+
`),2===n.space&&(d.constants.add("maxSegmentLengthFraction","float",.45),d.uniforms.add(new o("perRenderPixelRatio",e=>e.camera.perRenderPixelRatio)),d.code.add(a`
|
|
11
12
|
bool areWorldMarkersHidden(vec3 pos, vec3 other) {
|
|
12
13
|
vec3 midPoint = mix(pos, other, 0.5);
|
|
13
14
|
float distanceToCamera = length(midPoint);
|
|
14
15
|
float screenToWorldRatio = perRenderPixelRatio * distanceToCamera * 0.5;
|
|
15
|
-
float worldMarkerSize = getScreenMarkerSize(getLineWidth(${
|
|
16
|
+
float worldMarkerSize = getScreenMarkerSize(getLineWidth(${t(l,"pos")})) * screenToWorldRatio;
|
|
16
17
|
float segmentLen = length(pos - other);
|
|
17
18
|
return worldMarkerSize > maxSegmentLengthFraction * segmentLen;
|
|
18
19
|
}
|
|
@@ -20,6 +21,6 @@ import{markerSizePerLineWidth as e}from"../../../../support/engineContent/marker
|
|
|
20
21
|
float getWorldMarkerSize(vec3 pos) {
|
|
21
22
|
float distanceToCamera = length(pos);
|
|
22
23
|
float screenToWorldRatio = perRenderPixelRatio * distanceToCamera * 0.5;
|
|
23
|
-
return getScreenMarkerSize(getLineWidth(${
|
|
24
|
+
return getScreenMarkerSize(getLineWidth(${t(l,"pos")})) * screenToWorldRatio;
|
|
24
25
|
}
|
|
25
26
|
`))}export{i as MarkerSizing};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{glsl as e}from"../../shaderModules/glsl.js";function
|
|
2
|
+
import{glsl as e}from"../../shaderModules/glsl.js";function n(n,{spherical:c}){n.code.add(c?"vec3 getLocalUp(in vec3 pos, in vec3 origin) { return normalize(pos + origin); }\n vec3 getLocalUp(in vec3 pos) { return normalize(pos); }":"vec3 getLocalUp(in vec3 pos, in vec3 origin) { return vec3(0.0, 0.0, 1.0); }\n vec3 getLocalUp(in vec3 pos) { return vec3(0.0, 0.0, 1.0); }"),c?n.code.add(e`mat3 getTBNMatrix(in vec3 n) {
|
|
3
3
|
vec3 t = normalize(cross(vec3(0.0, 0.0, 1.0), n));
|
|
4
4
|
vec3 b = normalize(cross(n, t));
|
|
5
5
|
return mat3(t, b, n);
|
|
6
|
-
}`):
|
|
6
|
+
}`):n.code.add(e`mat3 getTBNMatrix(in vec3 n) {
|
|
7
7
|
vec3 t = vec3(1.0, 0.0, 0.0);
|
|
8
8
|
vec3 b = normalize(cross(n, t));
|
|
9
9
|
return mat3(t, b, n);
|
|
10
|
-
}`)}export{
|
|
10
|
+
}`)}export{n as NormalUtils};
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{glsl as
|
|
3
|
-
|
|
4
|
-
vec3 viewDirection
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}`);break;case 1:m.code.add(a`vec3 shadingNormal(ShadingNormalParameters params) {
|
|
8
|
-
return dot(params.normalView, params.viewDirection) > 0.0 ? normalize(-params.normalView) : normalize(params.normalView);
|
|
9
|
-
}`);break;case 2:m.code.add(a`vec3 shadingNormal(ShadingNormalParameters params) {
|
|
10
|
-
return gl_FrontFacing ? normalize(params.normalView) : normalize(-params.normalView);
|
|
11
|
-
}`);break;default:e.doubleSidedMode;case 3:}}export{r as Normals};
|
|
2
|
+
import{glsl as e}from"../../shaderModules/glsl.js";function o(o,r){const i=o.fragment;switch(r.doubleSidedMode){case 0:i.code.add("vec3 shadingNormal(vec3 normalView, vec3 viewDirection) { return normalize(normalView); }");break;case 1:i.code.add(e`vec3 shadingNormal(vec3 normalView, vec3 viewDirection) {
|
|
3
|
+
return dot(normalView, viewDirection) > 0.0 ? normalize(-normalView) : normalize(normalView);
|
|
4
|
+
}`);break;case 2:i.code.add(e`vec3 shadingNormal(vec3 normalView, vec3 viewDirection) {
|
|
5
|
+
return gl_FrontFacing ? normalize(normalView) : normalize(-normalView);
|
|
6
|
+
}`);break;default:r.doubleSidedMode;case 3:}}export{o as Normals};
|
|
@@ -1,48 +1,17 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{AnalyticalSkyModel as e}from"./AnalyticalSkyModel.glsl.js";import{Gamma as o}from"./Gamma.glsl.js";import{
|
|
2
|
+
import{AnalyticalSkyModel as e}from"./AnalyticalSkyModel.glsl.js";import{Gamma as o}from"./Gamma.glsl.js";import{pbrGlobals as t}from"./pbrGlobals.glsl.js";import{pbrShadingInfo as n}from"./pbrShadingInfo.glsl.js";import{PiUtils as r}from"./PiUtils.glsl.js";import{glsl as a}from"../../shaderModules/glsl.js";function i(i,l){i.include(o),i.include(r),i.include(n),i.include(t),1!==l.pbrMode&&2!==l.pbrMode&&5!==l.pbrMode&&6!==l.pbrMode||(i.code.add(a`float normalDistribution(float NdotH, float roughness)
|
|
3
3
|
{
|
|
4
4
|
float a = NdotH * roughness;
|
|
5
5
|
float b = roughness / (1.0 - NdotH * NdotH + a * a);
|
|
6
6
|
return b * b * INV_PI;
|
|
7
|
-
}`),
|
|
7
|
+
}`),i.code.add(a`const vec4 c0 = vec4(-1.0, -0.0275, -0.572, 0.022);
|
|
8
8
|
const vec4 c1 = vec4( 1.0, 0.0425, 1.040, -0.040);
|
|
9
9
|
const vec2 c2 = vec2(-1.04, 1.04);
|
|
10
10
|
vec2 prefilteredDFGAnalytical(float roughness, float NdotV) {
|
|
11
11
|
vec4 r = roughness * c0 + c1;
|
|
12
12
|
float a004 = min(r.x * r.x, exp2(-9.28 * NdotV)) * r.x + r.y;
|
|
13
13
|
return c2 * a004 + r.zw;
|
|
14
|
-
}`),
|
|
15
|
-
{
|
|
16
|
-
float NdotV;
|
|
17
|
-
float NdotL;
|
|
18
|
-
float LdotH;
|
|
19
|
-
float NdotUP;
|
|
20
|
-
float RdotUP;
|
|
21
|
-
float NdotAmbDir;
|
|
22
|
-
float NdotH_Horizon;
|
|
23
|
-
float NdotH;
|
|
24
|
-
vec3 skyRadianceToSurface;
|
|
25
|
-
vec3 groundRadianceToSurface;
|
|
26
|
-
vec3 skyIrradianceToSurface;
|
|
27
|
-
vec3 groundIrradianceToSurface;
|
|
28
|
-
vec3 reflectedView;
|
|
29
|
-
float averageAmbientRadiance;
|
|
30
|
-
vec3 albedoLinear;
|
|
31
|
-
vec3 f0;
|
|
32
|
-
vec3 f90;
|
|
33
|
-
vec3 diffuseColor;
|
|
34
|
-
float metalness;
|
|
35
|
-
float roughness;
|
|
36
|
-
};`),a.code.add(n`void calculateCommonInputs(out PBRShadingInfo inputs, vec3 normal, vec3 viewDirection, vec3 upDirection, vec3 albedo) {
|
|
37
|
-
vec3 h = normalize(mainLightDirection - viewDirection);
|
|
38
|
-
inputs.NdotV = clamp(abs(dot(normal, -viewDirection)), 0.001, 1.0);
|
|
39
|
-
inputs.NdotUP = clamp(dot(normal, upDirection), -1.0, 1.0);
|
|
40
|
-
inputs.reflectedView = normalize(reflect(-viewDirection, normal));
|
|
41
|
-
inputs.RdotUP = clamp(dot(inputs.reflectedView, upDirection), -1.0, 1.0);
|
|
42
|
-
inputs.albedoLinear = linearizeGamma(albedo);
|
|
43
|
-
inputs.NdotH = clamp(dot(normal, h), 0.0, 1.0);
|
|
44
|
-
inputs.NdotL = clamp(dot(normal, mainLightDirection), 0.001, 1.0);
|
|
45
|
-
}`)),1!==i.pbrMode&&2!==i.pbrMode||(a.include(e),a.code.add(n`vec3 evaluateEnvironmentIllumination(PBRShadingInfo inputs) {
|
|
14
|
+
}`)),1!==l.pbrMode&&2!==l.pbrMode||(i.include(e),i.code.add(a`vec3 evaluateEnvironmentIllumination(PBRShadingInfo inputs) {
|
|
46
15
|
vec3 indirectDiffuse = evaluateDiffuseIlluminationHemisphere(inputs.groundIrradianceToSurface, inputs.skyIrradianceToSurface, inputs.NdotUP);
|
|
47
16
|
vec3 indirectSpecular = evaluateSpecularIlluminationHemisphere(inputs.groundRadianceToSurface, inputs.skyRadianceToSurface, inputs.RdotUP, inputs.roughness);
|
|
48
17
|
vec3 diffuseComponent = inputs.diffuseColor * indirectDiffuse * INV_PI;
|
|
@@ -50,20 +19,13 @@ vec2 dfg = prefilteredDFGAnalytical(inputs.roughness, inputs.NdotV);
|
|
|
50
19
|
vec3 specularColor = inputs.f0 * dfg.x + inputs.f90 * dfg.y;
|
|
51
20
|
vec3 specularComponent = specularColor * indirectSpecular;
|
|
52
21
|
return (diffuseComponent + specularComponent);
|
|
53
|
-
}`),
|
|
54
|
-
calculateCommonInputs(inputs, normal, viewDirection, upDirection, albedo);
|
|
55
|
-
inputs.metalness = mrr[0];
|
|
56
|
-
inputs.roughness = clamp(mrr[1] * mrr[1], 0.001, 0.99);
|
|
57
|
-
inputs.f0 = (0.16 * mrr[2] * mrr[2]) * (1.0 - inputs.metalness) + inputs.albedoLinear * inputs.metalness;
|
|
58
|
-
inputs.f90 = vec3(clamp(dot(inputs.f0, vec3(50.0 * 0.33)), 0.0, 1.0));
|
|
59
|
-
inputs.diffuseColor = inputs.albedoLinear * (vec3(1.0) - inputs.f0) * (1.0 - inputs.metalness);
|
|
60
|
-
}`)),5!==i.pbrMode&&6!==i.pbrMode||a.code.add(n`const vec3 fresnelReflectionSimplified = vec3(0.04);
|
|
22
|
+
}`)),5!==l.pbrMode&&6!==l.pbrMode||i.code.add(a`const vec3 fresnelReflectionSimplified = vec3(0.04);
|
|
61
23
|
void calculateSimplifiedInputs(out PBRShadingInfo inputs, vec3 normal, vec3 viewDirection, vec3 upDirection, vec3 albedo) {
|
|
62
24
|
calculateCommonInputs(inputs, normal, viewDirection, upDirection, albedo);
|
|
63
25
|
float lightness = 0.3 * inputs.albedoLinear[0] + 0.5 * inputs.albedoLinear[1] + 0.2 * inputs.albedoLinear[2];
|
|
64
26
|
inputs.f0 = (0.85 * lightness + 0.15) * fresnelReflectionSimplified;
|
|
65
27
|
inputs.f90 = vec3(clamp(dot(inputs.f0, vec3(50.0 * 0.33)), 0.0, 1.0));
|
|
66
|
-
}`)}function
|
|
28
|
+
}`)}function l(e,o){e.include(r),e.code.add(a`
|
|
67
29
|
struct PBRShadingWater {
|
|
68
30
|
float NdotL; // cos angle between normal and light direction
|
|
69
31
|
float NdotV; // cos angle between normal and view direction
|
|
@@ -74,16 +36,16 @@ inputs.f90 = vec3(clamp(dot(inputs.f0, vec3(50.0 * 0.33)), 0.0, 1.0));
|
|
|
74
36
|
};
|
|
75
37
|
|
|
76
38
|
float dtrExponent = ${o.useCustomDTRExponentForWater?"2.2":"2.0"};
|
|
77
|
-
`),e.code.add(
|
|
39
|
+
`),e.code.add(a`vec3 fresnelReflection(float angle, vec3 f0, float f90) {
|
|
78
40
|
return f0 + (f90 - f0) * pow(1.0 - angle, 5.0);
|
|
79
|
-
}`),e.code.add(
|
|
41
|
+
}`),e.code.add(a`float normalDistributionWater(float NdotH, float roughness) {
|
|
80
42
|
float r2 = roughness * roughness;
|
|
81
43
|
float NdotH2 = NdotH * NdotH;
|
|
82
44
|
float denom = pow((NdotH2 * (r2 - 1.0) + 1.0), dtrExponent) * PI;
|
|
83
45
|
return r2 / denom;
|
|
84
|
-
}`),e.code.add(
|
|
46
|
+
}`),e.code.add(a`float geometricOcclusionKelemen(float LoH) {
|
|
85
47
|
return 0.25 / (LoH * LoH);
|
|
86
|
-
}`),e.code.add(
|
|
48
|
+
}`),e.code.add(a`vec3 brdfSpecularWater(in PBRShadingWater props, float roughness, vec3 F0, float F0Max) {
|
|
87
49
|
vec3 F = fresnelReflection(props.VdotH, F0, F0Max);
|
|
88
50
|
float dSun = normalDistributionWater(props.NdotH, roughness);
|
|
89
51
|
float V = geometricOcclusionKelemen(props.LdotH);
|
|
@@ -91,4 +53,4 @@ float diffusionSunHaze = mix(roughness + 0.045, roughness + 0.385, 1.0 - props.V
|
|
|
91
53
|
float strengthSunHaze = 1.2;
|
|
92
54
|
float dSunHaze = normalDistributionWater(props.NdotH, diffusionSunHaze) * strengthSunHaze;
|
|
93
55
|
return ((dSun + dSunHaze) * V) * F;
|
|
94
|
-
}`)}export{
|
|
56
|
+
}`)}export{i as PhysicallyBasedRendering,l as PhysicallyBasedRenderingWater};
|
package/views/3d/webgl-engine/core/shaderLibrary/shading/PhysicallyBasedRenderingParameters.glsl.js
CHANGED
|
@@ -1,26 +1,20 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{VertexTextureCoordinates as e}from"../attributes/VertexTextureCoordinates.glsl.js";import{
|
|
3
|
-
float getBakedOcclusion() { return 1.0; }`);case 2:return void
|
|
4
|
-
float occlusion = 1.0;
|
|
2
|
+
import{VertexTextureCoordinates as e}from"../attributes/VertexTextureCoordinates.glsl.js";import{pbrGlobals as o}from"./pbrGlobals.glsl.js";import{Float3DrawUniform as s}from"../../shaderModules/Float3DrawUniform.js";import{Float3PassUniform as r}from"../../shaderModules/Float3PassUniform.js";import{glsl as t,If as c}from"../../shaderModules/glsl.js";import{Texture2DDrawUniform as a}from"../../shaderModules/Texture2DDrawUniform.js";import{Texture2DPassUniform as l}from"../../shaderModules/Texture2DPassUniform.js";import{schematicMRRFactors as u}from"../../../materials/pbrUtils.js";import{NoParameters as i}from"../../../../../webgl/NoParameters.js";class n extends i{constructor(e,o){super(),this.textureOcclusion=e,this.textureMetallicRoughness=o,this.mrrFactors=u}}function d(u,i){const n=i.pbrMode,d=u.fragment;switch(n){case 5:case 3:case 4:case 6:return void d.code.add(t`void applyPBRFactors() {}`);case 0:case 7:return void d.code.add(t`void applyPBRFactors() {}
|
|
3
|
+
float getBakedOcclusion() { return 1.0; }`);case 2:return void d.code.add(t`float occlusion = 1.0;
|
|
5
4
|
void applyPBRFactors() {}
|
|
6
|
-
float getBakedOcclusion() { return 1.0; }`);case 1:{const{hasMetallicRoughnessTexture:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
float getBakedOcclusion() { return 1.0; }`);case 1:{const{hasMetallicRoughnessTexture:n,hasMetallicRoughnessTextureTransform:m,hasOcclusionTexture:p,hasOcclusionTextureTransform:h,bindType:f}=i;(n||p)&&u.include(e,i),d.code.add("float occlusion;"),n&&d.uniforms.add(1===f?new l("texMetallicRoughness",e=>e.textureMetallicRoughness):new a("texMetallicRoughness",e=>e.textureMetallicRoughness)),p&&d.uniforms.add(1===f?new l("texOcclusion",e=>e.textureOcclusion):new a("texOcclusion",e=>e.textureOcclusion)),d.uniforms.add(1===f?new r("mrrFactors",e=>e.mrrFactors):new s("mrrFactors",e=>e.mrrFactors)),d.include(o),n&&d.code.add(t`void applyMetallicRoughness(vec2 uv) {
|
|
6
|
+
vec3 metallicRoughness = textureLookup(texMetallicRoughness, uv).rgb;
|
|
7
|
+
mrr[0] *= metallicRoughness.b;
|
|
8
|
+
mrr[1] *= metallicRoughness.g;
|
|
9
|
+
}`),p&&d.code.add("void applyOcclusion(vec2 uv) { occlusion *= textureLookup(texOcclusion, uv).r; }"),d.code.add(t`
|
|
10
|
+
float getBakedOcclusion() {
|
|
11
|
+
return ${p?"occlusion":"1.0"};
|
|
12
|
+
}
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
void applyPBRFactors() {
|
|
15
|
+
mrr = mrrFactors;
|
|
16
|
+
occlusion = 1.0;
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
void applyPBRFactors() {
|
|
21
|
-
mrr = mrrFactors;
|
|
22
|
-
occlusion = 1.0;
|
|
23
|
-
|
|
24
|
-
${t(i,`applyMetallicRoughness(${d?"metallicRoughnessUV":"vuv0"});`)}
|
|
25
|
-
${t(m,`applyOcclusion(${p?"occlusionUV":"vuv0"});`)}
|
|
26
|
-
}`)}}}export{i as PBRRenderingParameters,n as PhysicallyBasedRenderingParameters};
|
|
18
|
+
${c(n,`applyMetallicRoughness(${m?"metallicRoughnessUV":"vuv0"});`)}
|
|
19
|
+
${c(p,`applyOcclusion(${h?"occlusionUV":"vuv0"});`)}
|
|
20
|
+
}`)}}}export{n as PBRRenderingParameters,d as PhysicallyBasedRenderingParameters};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{
|
|
2
|
+
import{__decorate as o}from"tslib";import{ForwardLinearDepthConfiguration as a}from"../ForwardLinearDepth.glsl.js";import{ForwardLinearDepthToReadShadowMap as e}from"../ForwardLinearDepthToReadShadowMap.glsl.js";import{calculateUVZShadowPass as t,calculateUVZShadowDraw as d,ReadShadowMapOrigin as r}from"./calculateUVZShadow.glsl.js";import{ShadowmapFiltering as i}from"./ShadowmapFiltering.glsl.js";import{FloatBindUniform as s}from"../../shaderModules/FloatBindUniform.js";import{If as h,glsl as n}from"../../shaderModules/glsl.js";import{Texture2DBindUniform as l}from"../../shaderModules/Texture2DBindUniform.js";import{Texture2DShadowBindUniform as c}from"../../shaderModules/Texture2DShadowBindUniform.js";import{parameter as u}from"../../shaderTechnique/ShaderTechniqueConfiguration.js";class w extends r{}class g extends r{}class f extends a{constructor(){super(...arguments),this.hasShadowHighlights=!1}}function m(o,a){a.receiveShadows&&o.fragment.include(t),S(o,a)}function p(o,a){a.receiveShadows&&o.fragment.include(d),S(o,a)}function S(o,a){o.include(e,a);const{hasShadowHighlights:t,receiveShadows:d,spherical:r}=a;d&&v(o.fragment,t),o.fragment.uniforms.add(new s("lightingGlobalFactor",({lighting:o})=>o.globalFactor)).code.add(n`
|
|
3
3
|
float readShadow(float additionalAmbientScale, vec3 vpos) {
|
|
4
|
-
return ${
|
|
4
|
+
return ${d?"max(lightingGlobalFactor * (1.0 - additionalAmbientScale), readShadowMap(vpos, linearDepth))":h(r,"lightingGlobalFactor * (1.0 - additionalAmbientScale)","0.0")};
|
|
5
5
|
}
|
|
6
|
-
`)}function
|
|
6
|
+
`)}function v(o,a){x(o,a),M(o)}function M(o){o.code.add(n`float readShadowMap(const in vec3 _worldPos, float _linearDepth) {
|
|
7
7
|
vec3 uvzShadow = calculateUVZShadow(_worldPos, _linearDepth, textureSize(shadowMap, 0));
|
|
8
8
|
return readShadowMaps(uvzShadow);
|
|
9
|
-
}`)}function
|
|
9
|
+
}`)}function x(o,a){o.include(i),o.uniforms.add(F()),a&&o.uniforms.add(new l("shadowHighlight",({shadowHighlight:o})=>o?.getTexture())),o.code.add(n`
|
|
10
10
|
float readShadowMaps(const in vec3 uvzShadow) {
|
|
11
11
|
if (uvzShadow.z < 0.0) {
|
|
12
12
|
return 0.0;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
float shadow1 = readShadowMapUVZ(uvzShadow, shadowMap);
|
|
16
|
-
${
|
|
16
|
+
${h(a,"float shadow2 = texelFetch(shadowHighlight, ivec2(gl_FragCoord.xy), 0).r;\n return shadow1 > shadow2 ? shadow1 : shadow2;","return shadow1;")}
|
|
17
17
|
}
|
|
18
|
-
`)}function
|
|
18
|
+
`)}function F(){return new c("shadowMap",({shadowMap:o})=>o.getOutput(5)??o.getOutput(7))}o([u()],f.prototype,"hasShadowHighlights",void 0);export{f as ReadShadowMapConfiguration,p as ReadShadowMapDrawFragment,w as ReadShadowMapDrawParameters,m as ReadShadowMapPassFragment,g as ReadShadowMapPassParameters,x as readShadowMapsFragment};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{create as a}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{Float4BindUniform as e}from"../../shaderModules/Float4BindUniform.js";import{glsl as o}from"../../shaderModules/glsl.js";import{IntegerBindUniform as s}from"../../shaderModules/IntegerBindUniform.js";import{Matrix4sDrawUniform as i}from"../../shaderModules/Matrix4sDrawUniform.js";import{Matrix4sPassUniform as
|
|
2
|
+
import{create as a}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{Float4BindUniform as e}from"../../shaderModules/Float4BindUniform.js";import{glsl as o}from"../../shaderModules/glsl.js";import{IntegerBindUniform as s}from"../../shaderModules/IntegerBindUniform.js";import{Matrix4sDrawUniform as i}from"../../shaderModules/Matrix4sDrawUniform.js";import{Matrix4sPassUniform as r}from"../../shaderModules/Matrix4sPassUniform.js";import{NoParameters as t}from"../../../../../webgl/NoParameters.js";class d extends t{constructor(){super(...arguments),this.origin=a()}}function c(a){a.uniforms.add(new r("shadowMapMatrix",({origin:a},e)=>e.shadowMap.getShadowMapMatrices(a),4)),a.include(l)}function n(a){a.uniforms.add(new i("shadowMapMatrix",({origin:a},e)=>e.shadowMap.getShadowMapMatrices(a),4)),a.include(l)}function l(a){a.uniforms.add(new e("cascadeDistances",a=>a.shadowMap.cascadeDistances),new s("numCascades",a=>a.shadowMap.numCascades)).code.add(o`const vec3 invalidShadowmapUVZ = vec3(0.0, 0.0, -1.0);
|
|
3
3
|
vec3 lightSpacePosition(vec3 _vpos, mat4 mat) {
|
|
4
4
|
vec4 lv = mat * vec4(_vpos, 1.0);
|
|
5
5
|
lv.xy /= lv.w;
|
|
@@ -10,7 +10,9 @@ float xScale = float(textureSize.y) / float(textureSize.x);
|
|
|
10
10
|
return vec2((float(i) + lvpos.x) * xScale, lvpos.y);
|
|
11
11
|
}
|
|
12
12
|
vec3 calculateUVZShadow(in vec3 _worldPos, in float _linearDepth, in ivec2 shadowMapSize) {
|
|
13
|
-
int i = _linearDepth < cascadeDistances[1] ? 0 :
|
|
13
|
+
int i = _linearDepth < cascadeDistances[1] ? 0 :
|
|
14
|
+
_linearDepth < cascadeDistances[2] ? 1 :
|
|
15
|
+
_linearDepth < cascadeDistances[3] ? 2 : 3;
|
|
14
16
|
if (i >= numCascades) {
|
|
15
17
|
return invalidShadowmapUVZ;
|
|
16
18
|
}
|
|
@@ -21,4 +23,4 @@ return invalidShadowmapUVZ;
|
|
|
21
23
|
}
|
|
22
24
|
vec2 uvShadow = cascadeCoordinates(i, shadowMapSize, lvpos);
|
|
23
25
|
return vec3(uvShadow, lvpos.z);
|
|
24
|
-
}
|
|
26
|
+
}`)}export{d as ReadShadowMapOrigin,n as calculateUVZShadowDraw,c as calculateUVZShadowPass};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
import{Gamma as i}from"./Gamma.glsl.js";import{mainLightDirection as e}from"./MainLighting.glsl.js";import{pbrShadingInfo as n}from"./pbrShadingInfo.glsl.js";import{glsl as t}from"../../shaderModules/glsl.js";function o(o){o.include(n),o.include(i),o.uniforms.add(e).code.add(t`void calculateCommonInputs(out PBRShadingInfo inputs, vec3 normal, vec3 viewDirection, vec3 upDirection, vec3 albedo) {
|
|
3
|
+
vec3 h = normalize(mainLightDirection - viewDirection);
|
|
4
|
+
inputs.NdotV = clamp(abs(dot(normal, -viewDirection)), 0.001, 1.0);
|
|
5
|
+
inputs.NdotUP = clamp(dot(normal, upDirection), -1.0, 1.0);
|
|
6
|
+
inputs.reflectedView = normalize(reflect(-viewDirection, normal));
|
|
7
|
+
inputs.RdotUP = clamp(dot(inputs.reflectedView, upDirection), -1.0, 1.0);
|
|
8
|
+
inputs.albedoLinear = linearizeGamma(albedo);
|
|
9
|
+
inputs.NdotH = clamp(dot(normal, h), 0.0, 1.0);
|
|
10
|
+
inputs.NdotL = clamp(dot(normal, mainLightDirection), 0.001, 1.0);
|
|
11
|
+
}`),o.code.add(t`vec3 mrr = vec3(0.0, 0.6, 0.2);
|
|
12
|
+
void calculatePBRInputs(out PBRShadingInfo inputs, vec3 normal, vec3 viewDirection, vec3 upDirection, vec3 albedo) {
|
|
13
|
+
calculateCommonInputs(inputs, normal, viewDirection, upDirection, albedo);
|
|
14
|
+
inputs.metalness = mrr[0];
|
|
15
|
+
inputs.roughness = clamp(mrr[1] * mrr[1], 0.001, 0.99);
|
|
16
|
+
inputs.f0 = (0.16 * mrr[2] * mrr[2]) * (1.0 - inputs.metalness) + inputs.albedoLinear * inputs.metalness;
|
|
17
|
+
inputs.f90 = vec3(clamp(dot(inputs.f0, vec3(50.0 * 0.33)), 0.0, 1.0));
|
|
18
|
+
inputs.diffuseColor = inputs.albedoLinear * (vec3(1.0) - inputs.f0) * (1.0 - inputs.metalness);
|
|
19
|
+
}`)}export{o as pbrGlobals};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
import{glsl as o}from"../../shaderModules/glsl.js";function e(e){e.code.add(o`struct PBRShadingInfo
|
|
3
|
+
{
|
|
4
|
+
float NdotV;
|
|
5
|
+
float NdotL;
|
|
6
|
+
float LdotH;
|
|
7
|
+
float NdotUP;
|
|
8
|
+
float RdotUP;
|
|
9
|
+
float NdotAmbDir;
|
|
10
|
+
float NdotH_Horizon;
|
|
11
|
+
float NdotH;
|
|
12
|
+
vec3 skyRadianceToSurface;
|
|
13
|
+
vec3 groundRadianceToSurface;
|
|
14
|
+
vec3 skyIrradianceToSurface;
|
|
15
|
+
vec3 groundIrradianceToSurface;
|
|
16
|
+
vec3 reflectedView;
|
|
17
|
+
float averageAmbientRadiance;
|
|
18
|
+
vec3 albedoLinear;
|
|
19
|
+
vec3 f0;
|
|
20
|
+
vec3 f90;
|
|
21
|
+
vec3 diffuseColor;
|
|
22
|
+
float metalness;
|
|
23
|
+
float roughness;
|
|
24
|
+
};`)}export{e as pbrShadingInfo};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{create as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{hasArea as o,width as r,height as t}from"../../../../../../geometry/support/aaBoundingRect.js";import{isColor as l}from"../ShaderOutput.js";import{
|
|
2
|
+
import{create as e}from"../../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{hasArea as o,width as r,height as t}from"../../../../../../geometry/support/aaBoundingRect.js";import{isColor as l}from"../ShaderOutput.js";import{mainLightDirection as i,mainLightIntensity as a}from"../shading/MainLighting.glsl.js";import{WaterColor as c}from"../shading/WaterColor.glsl.js";import{BlendColorsPremultiplied as n}from"../util/BlendColorsPremultiplied.glsl.js";import{Float4DrawUniform as s}from"../../shaderModules/Float4DrawUniform.js";import{FloatPassUniform as v}from"../../shaderModules/FloatPassUniform.js";import{glsl as d}from"../../shaderModules/glsl.js";import{Texture2DPassUniform as u}from"../../shaderModules/Texture2DPassUniform.js";import{Texture2DUintPassUniform as x}from"../../shaderModules/Texture2DUintPassUniform.js";import{Uniform as m}from"../../../../../webgl/Uniform.js";function p(e,o){const{vertex:r,fragment:t}=e;r.uniforms.add(new s("overlayTexOffset",(e,r)=>T(o.spherical,e,r)),new s("overlayTexScale",(e,r)=>V(o.spherical,e,r))),t.uniforms.add(new s("overlayTexOffset",(e,r)=>T(o.spherical,e,r)),new s("overlayTexScale",(e,r)=>V(o.spherical,e,r))),t.constants.add("overlayOpacity","float",1),t.uniforms.add(new u("ovColorTex",(e,o)=>y(e,o))),O(e,o)}function y(e,o){const r=f(e,o);return null!=r?o.overlay?.getTexture(r):null}function f(e,o){return 0===e.identifier?l(o.output)?!e.occludedGround||o.overlay?.allSourcesOccluders?1:4:3===o.output||4===o.output?1:11===o.output?5:null:2===e.identifier?2:null}function C(e,o){const{vertex:r,fragment:t}=e;r.uniforms.add(new w("overlayTexOffset"),new w("overlayTexScale")),t.uniforms.add(new v("overlayOpacity",e=>e.overlayOpacity)),10!==o.output&&t.uniforms.add(new u("ovColorTex",(e,o)=>o.overlay?.getTexture(e.overlayContent))),O(e,o)}function g(e,o){switch(e){case 0:case 1:case 2:return 9!==o.slot||o.overlay?.allSourcesOccluders?0:4;case 3:case 4:return 0;case 10:return 2;case 5:case 7:case 8:case 9:return null;case 11:return 5}return null}function O(e,o){const{hasWater:r,output:t}=o;r&&e.include(c,o);const{vertex:l,fragment:s,varyings:v}=e;v.add("vtcOverlay","vec4");const u=10===t;l.code.add(d`void setOverlayVTC(in vec2 uv) {
|
|
3
3
|
vtcOverlay = vec4(uv, uv) * overlayTexScale + overlayTexOffset;
|
|
4
4
|
}`),s.code.add(d`bool isValid(vec2 uv, vec2 dxdy) {
|
|
5
5
|
return (uv.x >= 0.0 + dxdy.x) && (uv.x <= 1.0 - dxdy.x) && (uv.y >= 0.0 + dxdy.y) && (uv.y <= 1.0 - dxdy.y);
|
|
@@ -51,10 +51,10 @@ return mix(color1 * float(isValid1), color0, float(isValid0));
|
|
|
51
51
|
}
|
|
52
52
|
vec4 getOverlayColorTexel() {
|
|
53
53
|
return getOverlayColorTexel(vtcOverlay);
|
|
54
|
-
}`)),r&&(i
|
|
54
|
+
}`)),r&&s.uniforms.add(i,a).code.add(d`vec4 getOverlayWaterColor(vec4 maskInput, vec4 colorInput, vec3 vposEyeDir,
|
|
55
55
|
float shadow, vec3 localUp, mat3 tbn, vec3 position, vec3 positionWorld) {
|
|
56
56
|
vec3 n = normalize(tbn * (2.0 * maskInput.rgb - vec3(1.0)));
|
|
57
57
|
vec3 v = vposEyeDir;
|
|
58
58
|
vec3 final = getWaterColor(n, v, mainLightDirection, colorInput.rgb, mainLightIntensity, localUp, 1.0 - shadow, maskInput.w, position, positionWorld);
|
|
59
59
|
return vec4(final, colorInput.w);
|
|
60
|
-
}`)
|
|
60
|
+
}`)}function h(e,o){return e.overlay?.overlays[o]?.extent}function T(e,l,i){const a=b,c=e&&!l.useENUForGlobalOverlayUV,n=c?0:l.toMapSpace[0],s=c?0:l.toMapSpace[1],v=(e,l)=>{const c=h(i,l);o(c)&&(a[e+0]=(n-c[0])/r(c),a[e+1]=(s-c[1])/t(c))};return v(0,0),v(2,1),a}function V(e,l,i){const a=b,c=e&&!l.useENUForGlobalOverlayUV,n=c?1:l.toMapSpace[2],s=c?1:l.toMapSpace[3],v=(e,l)=>{const c=h(i,l);o(c)&&(a[e+0]=n/r(c),a[e+1]=s/t(c))};return v(0,0),v(2,1),a}const b=e();class w extends m{constructor(e){super(e,"vec4")}}export{p as OverlayIM,C as OverlayTerrain,y as getIMColorTexture,g as getOverlayContentForOutputTerrain};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{fromValues as o}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{earth as t}from"../../../../../../geometry/support/Ellipsoid.js";import{cloudsHeight as a}from"../../../../environment/weather.js";import{
|
|
2
|
+
import{fromValues as o}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{earth as t}from"../../../../../../geometry/support/Ellipsoid.js";import{cloudsHeight as a}from"../../../../environment/weather.js";import{mainLightDirection as r,mainLightIntensity as e}from"../shading/MainLighting.glsl.js";import{LookupCloudsFromTextureArray as i}from"./LookupCloudsFromTextureArray.glsl.js";import{BooleanBindUniform as c}from"../../shaderModules/BooleanBindUniform.js";import{Float3BindUniform as n}from"../../shaderModules/Float3BindUniform.js";import{FloatBindUniform as d}from"../../shaderModules/FloatBindUniform.js";import{glsl as l}from"../../shaderModules/glsl.js";import{Matrix4BindUniform as s}from"../../shaderModules/Matrix4BindUniform.js";import{Texture2DArrayBindUniform as u}from"../../shaderModules/Texture2DArrayBindUniform.js";function m(t){const a=t.fragment;a.constants.add("radiusCloudsSquared","float",C).code.add(l`vec3 intersectWithCloudLayer(vec3 dir, vec3 cameraPosition, vec3 spherePos) {
|
|
3
3
|
float B = 2.0 * dot(cameraPosition, dir);
|
|
4
4
|
float C = dot(cameraPosition, cameraPosition) - radiusCloudsSquared;
|
|
5
5
|
float det = B * B - 4.0 * C;
|
|
@@ -10,7 +10,7 @@ dir.z = dir.z * (1.0 - radiusCurvatureCorrection) + radiusCurvatureCorrection;
|
|
|
10
10
|
return dir;
|
|
11
11
|
}`),a.code.add(l`vec3 rotateDirectionToAnchorPoint(mat4 rotMat, vec3 inVec) {
|
|
12
12
|
return (rotMat * vec4(inVec, 0.0)).xyz;
|
|
13
|
-
}`),
|
|
13
|
+
}`),a.constants.add("RIM_COLOR","vec3",o(.28,.175,.035)),a.constants.add("sunsetTransitionFactor","float",.3),a.constants.add("rimScattering","float",140),a.constants.add("backlightFactor","float",.2),a.constants.add("backlightScattering","float",10),a.constants.add("backlightTransition","float",.3),a.uniforms.add(r,e).code.add(l`vec3 calculateCloudColor(vec3 cameraPosition, vec3 worldSpaceRay, vec4 clouds) {
|
|
14
14
|
float upDotLight = dot(cameraPosition, mainLightDirection);
|
|
15
15
|
float dirDotLight = max(dot(worldSpaceRay, mainLightDirection), 0.0);
|
|
16
16
|
float sunsetTransition = clamp(pow(max(upDotLight, 0.0), sunsetTransitionFactor), 0.0, 1.0);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{
|
|
2
|
+
import{pbrGlobals as o}from"../../core/shaderLibrary/shading/pbrGlobals.glsl.js";import{FloatBindUniform as r}from"../../core/shaderModules/FloatBindUniform.js";import{glsl as e}from"../../core/shaderModules/glsl.js";function a(a,n){n.snowCover&&(a.uniforms.add(new r("snowCover",o=>o.snowCover)).code.add(e`float getSnow(vec3 normal, vec3 groundNormal) {
|
|
3
3
|
return smoothstep(0.5, 0.55, dot(normal, groundNormal)) * snowCover;
|
|
4
4
|
}
|
|
5
5
|
float getRealisticTreeSnow(vec3 faceNormal, vec3 shadingNormal, vec3 groundNormal) {
|
|
@@ -7,6 +7,6 @@ float snow = min(1.0, smoothstep(0.5, 0.55, dot(faceNormal, groundNormal)) +
|
|
|
7
7
|
smoothstep(0.5, 0.55, dot(-faceNormal, groundNormal)) +
|
|
8
8
|
smoothstep(0.0, 0.1, dot(shadingNormal, groundNormal)));
|
|
9
9
|
return snow * snowCover;
|
|
10
|
-
}`),
|
|
11
|
-
|
|
12
|
-
}`))}export{
|
|
10
|
+
}`),a.include(o),a.code.add(e`void applySnowToMRR(float snow) {
|
|
11
|
+
mrr = mix(mrr, vec3(0.0, 1.0, 0.04), snow);
|
|
12
|
+
}`))}export{a as SnowCover};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{property as i,subclass as t}from"../../../../core/accessorSupport/decorators.js";import{InternalRenderCategory as r}from"../../webgl.js";import s from"../../webgl/RenderNode.js";import{prepareGaussianSplatPerspectiveParameters as a,canRenderGaussianSplats as n}from"./GaussianSplatRenderUtils.js";import{GaussianSplatDepthTechnique as o}from"../shaders/GaussianSplatDepthTechnique.js";import{GaussianSplatPassParameters as l}from"../shaders/GaussianSplatPassParameters.js";import{GaussianSplatTechniqueConfiguration as d}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{PrimitiveType as
|
|
2
|
+
import{__decorate as e}from"tslib";import{property as i,subclass as t}from"../../../../core/accessorSupport/decorators.js";import{InternalRenderCategory as r}from"../../webgl.js";import s from"../../webgl/RenderNode.js";import{prepareGaussianSplatPerspectiveParameters as a,canRenderGaussianSplats as n}from"./GaussianSplatRenderUtils.js";import{GaussianSplatDepthTechnique as o}from"../shaders/GaussianSplatDepthTechnique.js";import{GaussianSplatPassParameters as l}from"../shaders/GaussianSplatPassParameters.js";import{GaussianSplatTechniqueConfiguration as d}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{PrimitiveType as p}from"../../../webgl/enums.js";let h=class extends s{constructor(e){super(e),this.consumes={required:[r.GAUSSIAN_SPLAT_DEPTH]},this.produces=r.GAUSSIAN_SPLAT_DEPTH,this.layerView=null,this._passParameters=new l,this._configuration=new d(e.view.state.isGlobal)}precompile(){this._canRender&&(this._updateConfiguration(),this.techniques.precompile(o,this._configuration))}render(){const e=this.bindRenderTarget();if(this.layerView.fadeHelper.updateForFrame(this.view.stage.renderView.renderer.renderContext.time),!this._canRender)return e;this._updateConfiguration(),a(this._passParameters,this.layerView,this.bindParameters.camera);const i=this.techniques.get(o,this._configuration);return this.renderingContext.bindTechnique(i,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(p.TRIANGLE_STRIP,0,4,this.layerView.data.visibleGaussians),e}get _canRender(){return n(this.layerView.data)}_updateConfiguration(){this._configuration.fadingEnabled=this.layerView.fadeHelper.fadingEnabled,this._configuration.clippingEnabled=null!=this.layerView.clippingBox,this._configuration.hasSlicePlane=this.layerView.slicePlaneEnabled&&null!=this.bindParameters.slicePlane,this._configuration.writeNormals=4===this.bindParameters.output}};e([i()],h.prototype,"consumes",void 0),e([i()],h.prototype,"produces",void 0),e([i({constructOnly:!0})],h.prototype,"layerView",void 0),h=e([t("esri.views.3d.webgl-engine.lib.GaussianSplatDepthRenderer")],h);export{h as GaussianSplatDepthRenderer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import{watch as i}from"../../../../core/reactiveUtils.js";import{property as t,subclass as s}from"../../../../core/accessorSupport/decorators.js";import{copy as r}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as o,set as n,positiveInfinity as h,equals as l}from"../../../../geometry/support/aaBoundingBox.js";import{InternalRenderCategory as u}from"../../webgl.js";import{addWraparound as c}from"../../layers/i3s/I3SUtil.js";import p from"../../webgl/RenderNode.js";import{canRenderGaussianSplats as m,prepareGaussianSplatPerspectiveParameters as d}from"./GaussianSplatRenderUtils.js";import{G as _}from"../../../../chunks/GaussianSplatComposition.glsl.js";import{GaussianSplatCompositionTechnique as g}from"../shaders/GaussianSplatCompositionTechnique.js";import{GaussianSplatCompositionTechniqueConfiguration as f}from"../shaders/GaussianSplatCompositionTechniqueConfiguration.js";import{G as C}from"../../../../chunks/GaussianSplatDepthComposition.glsl.js";import{GaussianSplatDepthCompositionTechnique as b}from"../shaders/GaussianSplatDepthCompositionTechnique.js";import{GaussianSplatPassParameters as P}from"../shaders/GaussianSplatPassParameters.js";import{GaussianSplatTechnique as S}from"../shaders/GaussianSplatTechnique.js";import{GaussianSplatTechniqueConfiguration as q}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{ColorAttachment1 as v,DepthStencilAttachment as w,PrimitiveType as R}from"../../../webgl/enums.js";let x=class extends p{constructor(e){super(e),this.consumes={required:[u.GAUSSIAN_SPLAT]},this.produces=u.GAUSSIAN_SPLAT,this._slicePlaneEnabled=!1,this.layerView=null,this._passParameters=new P,this._compositionPassParameters=new _,this._depthCompositionPassParameters=new C,this._compositionConfiguration=new f,this._clipBox=o(),this._previousSortRequestCameraDirection=a(),this._cameraSortDirty=!1,this._tileCullingRevision=0,this._sortRequestDirectionEpsilon=.01,this._configuration=new q(e.view.state.isGlobal),n(this._clipBox,h)}async initialize(){this.addHandles([i(()=>this.view.state.camera,()=>this._onCameraChange()),i(()=>2===this.view.state.mode,e=>{e&&this._cameraSortDirty&&this._requestCameraSort(this.view.state.camera.ray.direction),this.requestRender(1)})])}precompile(){this._canRender&&(this._updateConfigurations(),this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=this.bindParameters.hasOpaqueEmission,this.techniques.precompile(S,this._configuration),this.techniques.precompile(g,this._compositionConfiguration),this.techniques.precompile(b))}render(){const e=this.input;if(this._updateConfigurations(),this._fadeHelper.updateForFrame(this.view.stage.renderView.renderer.renderContext.time),!this._canRender)return e;const i=e.getAttachment(v);this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=null!=i;const{fullWidth:t,fullHeight:s}=this.bindParameters.camera;this._prepareParameters();const r=this.renderingContext,a=this.fboCache,o=a.acquire(t,s,"gaussian color output"),n=e.getAttachment(w);o.attachDepth(n);const h=this.techniques.get(S,this._configuration);this._renderGaussianColorAndDepth(o,h);const l=a.acquire(t,s,this.produces);this._depthCompositionPassParameters.splatDepth=o.getTexture(v),l.attachDepth(e.getAttachment(w)),r.bindFramebuffer(l.fbo);const u=this.techniques.get(b);r.bindTechnique(u,this.bindParameters,this._depthCompositionPassParameters),r.screen.draw(),this._compositionPassParameters.color=e.getTexture(),this._compositionPassParameters.splatColor=o.getTexture(),i?(l.acquireColor(v,8,"emissive"),this._compositionPassParameters.emission=e.getTexture(v)):this._compositionPassParameters.emission=null,r.bindFramebuffer(l.fbo);const c=this.techniques.get(g,this._compositionConfiguration);return r.bindTechnique(c,this.bindParameters,this._compositionPassParameters),r.screen.draw(),o.release(),l}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(e){this._slicePlaneEnabled!==e&&(this._slicePlaneEnabled=e,this.requestRender(1))}set clippingBox(e){const i=e||h;this._hasSameClipBox(i)||(n(this._clipBox,i),this._tileCullingRevision=c(this._tileCullingRevision,1),this._data.requestSort(),this.requestRender(1))}get clippingBox(){return this._clippingEnabled?this._clipBox:null}get tileCullingRevision(){return this._tileCullingRevision}get _clippingEnabled(){return!l(this._clipBox,h,(e,i)=>e===i)}get _isIdle(){return 2===this.view.state.mode}get _data(){return this.layerView.data}get _canRender(){return m(this._data)}get _fadeHelper(){return this.layerView.fadeHelper}_updateConfigurations(){this._configuration.alphaCutoff=this.view.qualitySettings.gaussianSplat.minimumOpacity,this._configuration.fadingEnabled=this._fadeHelper.fadingEnabled,this._configuration.receiveShadows=this.bindParameters.shadowMap.ready,this._configuration.hasShadowHighlights=this._configuration.receiveShadows&&this.bindParameters.hasShadowHighlights,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasSlicePlane=this._slicePlaneEnabled&&null!=this.bindParameters.slicePlane
|
|
2
|
+
import{__decorate as e}from"tslib";import{watch as i}from"../../../../core/reactiveUtils.js";import{property as t,subclass as s}from"../../../../core/accessorSupport/decorators.js";import{copy as r}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as o,set as n,positiveInfinity as h,equals as l}from"../../../../geometry/support/aaBoundingBox.js";import{InternalRenderCategory as u}from"../../webgl.js";import{addWraparound as c}from"../../layers/i3s/I3SUtil.js";import p from"../../webgl/RenderNode.js";import{canRenderGaussianSplats as m,prepareGaussianSplatPerspectiveParameters as d}from"./GaussianSplatRenderUtils.js";import{G as _}from"../../../../chunks/GaussianSplatComposition.glsl.js";import{GaussianSplatCompositionTechnique as g}from"../shaders/GaussianSplatCompositionTechnique.js";import{GaussianSplatCompositionTechniqueConfiguration as f}from"../shaders/GaussianSplatCompositionTechniqueConfiguration.js";import{G as C}from"../../../../chunks/GaussianSplatDepthComposition.glsl.js";import{GaussianSplatDepthCompositionTechnique as b}from"../shaders/GaussianSplatDepthCompositionTechnique.js";import{GaussianSplatPassParameters as P}from"../shaders/GaussianSplatPassParameters.js";import{GaussianSplatTechnique as S}from"../shaders/GaussianSplatTechnique.js";import{GaussianSplatTechniqueConfiguration as q}from"../shaders/GaussianSplatTechniqueConfiguration.js";import{ColorAttachment1 as v,DepthStencilAttachment as w,PrimitiveType as R}from"../../../webgl/enums.js";let x=class extends p{constructor(e){super(e),this.consumes={required:[u.GAUSSIAN_SPLAT]},this.produces=u.GAUSSIAN_SPLAT,this._slicePlaneEnabled=!1,this.layerView=null,this._passParameters=new P,this._compositionPassParameters=new _,this._depthCompositionPassParameters=new C,this._compositionConfiguration=new f,this._clipBox=o(),this._previousSortRequestCameraDirection=a(),this._cameraSortDirty=!1,this._tileCullingRevision=0,this._sortRequestDirectionEpsilon=.01,this._configuration=new q(e.view.state.isGlobal),n(this._clipBox,h)}async initialize(){this.addHandles([i(()=>this.view.state.camera,()=>this._onCameraChange()),i(()=>2===this.view.state.mode,e=>{e&&this._cameraSortDirty&&this._requestCameraSort(this.view.state.camera.ray.direction),this.requestRender(1)})])}precompile(){this._canRender&&(this._updateConfigurations(),this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=this.bindParameters.hasOpaqueEmission,this.techniques.precompile(S,this._configuration),this.techniques.precompile(g,this._compositionConfiguration),this.techniques.precompile(b))}render(){const e=this.input;if(this._updateConfigurations(),this._fadeHelper.updateForFrame(this.view.stage.renderView.renderer.renderContext.time),!this._canRender)return e;const i=e.getAttachment(v);this._compositionConfiguration.useFloatBlend=this.bindParameters.useFloatBlend.value,this._compositionConfiguration.hasEmission=null!=i;const{fullWidth:t,fullHeight:s}=this.bindParameters.camera;this._prepareParameters();const r=this.renderingContext,a=this.fboCache,o=a.acquire(t,s,"gaussian color output"),n=e.getAttachment(w);o.attachDepth(n);const h=this.techniques.get(S,this._configuration);this._renderGaussianColorAndDepth(o,h);const l=a.acquire(t,s,this.produces);this._depthCompositionPassParameters.splatDepth=o.getTexture(v),l.attachDepth(e.getAttachment(w)),r.bindFramebuffer(l.fbo);const u=this.techniques.get(b);r.bindTechnique(u,this.bindParameters,this._depthCompositionPassParameters),r.screen.draw(),this._compositionPassParameters.color=e.getTexture(),this._compositionPassParameters.splatColor=o.getTexture(),i?(l.acquireColor(v,8,"emissive"),this._compositionPassParameters.emission=e.getTexture(v)):this._compositionPassParameters.emission=null,r.bindFramebuffer(l.fbo);const c=this.techniques.get(g,this._compositionConfiguration);return r.bindTechnique(c,this.bindParameters,this._compositionPassParameters),r.screen.draw(),o.release(),l}get slicePlaneEnabled(){return this._slicePlaneEnabled}set slicePlaneEnabled(e){this._slicePlaneEnabled!==e&&(this._slicePlaneEnabled=e,this.requestRender(1))}set clippingBox(e){const i=e||h;this._hasSameClipBox(i)||(n(this._clipBox,i),this._tileCullingRevision=c(this._tileCullingRevision,1),this._data.requestSort(),this.requestRender(1))}get clippingBox(){return this._clippingEnabled?this._clipBox:null}get tileCullingRevision(){return this._tileCullingRevision}get _clippingEnabled(){return!l(this._clipBox,h,(e,i)=>e===i)}get _isIdle(){return 2===this.view.state.mode}get _data(){return this.layerView.data}get _canRender(){return m(this._data)}get _fadeHelper(){return this.layerView.fadeHelper}_updateConfigurations(){this._configuration.alphaCutoff=this.view.qualitySettings.gaussianSplat.minimumOpacity,this._configuration.fadingEnabled=this._fadeHelper.fadingEnabled,this._configuration.receiveShadows=this.bindParameters.shadowMap.ready,this._configuration.hasShadowHighlights=this._configuration.receiveShadows&&this.bindParameters.hasShadowHighlights,this._configuration.clippingEnabled=this._clippingEnabled,this._configuration.hasSlicePlane=this._slicePlaneEnabled&&null!=this.bindParameters.slicePlane}_onCameraChange(){this._tileCullingRevision=c(this._tileCullingRevision,1);const e=this.view.state.camera.ray.direction;this._cameraSortDirty=!0,(this._isIdle||this._shouldRequestSort(e))&&this._requestCameraSort(e)}_shouldRequestSort(e){return Math.abs(e[0]-this._previousSortRequestCameraDirection[0])>this._sortRequestDirectionEpsilon||Math.abs(e[1]-this._previousSortRequestCameraDirection[1])>this._sortRequestDirectionEpsilon||Math.abs(e[2]-this._previousSortRequestCameraDirection[2])>this._sortRequestDirectionEpsilon}_requestCameraSort(e){this._data.requestSort(),r(this._previousSortRequestCameraDirection,e),this._cameraSortDirty=!1}_prepareParameters(){d(this._passParameters,this.layerView,this.camera)}_hasSameClipBox(e){return l(this._clipBox,e,(e,i)=>e===i)}_renderGaussianColorAndDepth(e,i){const t=this.renderingContext;e.acquireColor(v,5,"gaussian depth output"),t.bindFramebuffer(e.fbo),t.setClearColor(0,0,0,0),t.clear(16384),this.renderingContext.bindTechnique(i,this.bindParameters,this._passParameters),this.renderingContext.drawArraysInstanced(R.TRIANGLE_STRIP,0,4,this._data.visibleGaussians)}};e([t()],x.prototype,"consumes",void 0),e([t()],x.prototype,"produces",void 0),e([t({constructOnly:!0})],x.prototype,"layerView",void 0),x=e([s("esri.views.3d.webgl-engine.lib.GaussianSplatRenderer")],x);export{x as GaussianSplatRenderer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{computeAttachmentOriginLines as t}from"./geometryDataUtils.js";import{Material as
|
|
2
|
+
import{computeAttachmentOriginLines as t}from"./geometryDataUtils.js";import{Material as e}from"./Material.js";class r extends e{constructor(){super(...arguments),this.primitiveVertexCount=1}computeAttachmentOrigin(e,r,s){return t(e,r,s,this._isClosed(s))}_isClosed(t){return(this.parameters.isClosed??!1)&&t>2}}export{r as LineMaterial};
|