UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

22 lines (21 loc) 2.69 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{create as e}from"../core/libs/gl-matrix-2/factories/vec3f64.js";import{ReadDepth as r}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{Gamma as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{Float3BindUniform as a}from"../views/3d/webgl-engine/core/shaderModules/Float3BindUniform.js";import{Float3PassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{FloatPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as i}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DBindUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DBindUniform.js";import{ScreenSpacePassAtmosphere as m}from"../views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js";import{SphereIntersect as l}from"../views/3d/webgl-engine/shaders/SphereIntersect.glsl.js";import{ToneMapping as d}from"../views/3d/webgl-engine/shaders/ToneMapping.glsl.js";import{NoParameters as g}from"../views/webgl/NoParameters.js";import{ShaderBuilder as p}from"../views/webgl/ShaderBuilder.js";class c extends g{constructor(){super(...arguments),this.color=e(),this.strength=4e-6,this.atmosphereC=1,this.amount=0}}function f(){const e=new p;e.include(m,{needUVs:!0,needEyeDirection:!0});const g=e.fragment;return g.uniforms.add(new s("atmosphereC",(e=>e.atmosphereC)),new a("cameraPosition",(e=>e.camera.eye)),new n("depthTexture",(e=>e.mainDepth)),new s("fogStrength",(e=>e.strength)),new s("fogAmount",(e=>e.amount)),new t("fogColor",(e=>e.color))),e.include(o),g.include(l),g.include(d),g.include(r),g.code.add(i`float getFogAmount(float dist, vec3 rayDir) { if(dist == -1.0){ dist = 0.055 * sphereIntersect(cameraPosition, rayDir, atmosphereC).y; } return fogAmount * (1.0 - exp(-dist * fogStrength)); }`),g.main.add(i`vec3 rayDir = normalize(worldRay); float terrainDepth = -1.0; float depthSample = depthFromTexture(depthTexture, uv); if(depthSample < 1.0 && depthSample > 0.0){ vec3 cameraSpaceRay = normalize(eyeDir); cameraSpaceRay /= cameraSpaceRay.z; cameraSpaceRay *= linearizeDepth(depthSample);; terrainDepth = max(0.0, length(cameraSpaceRay)); } float fogAmount = getFogAmount(terrainDepth, rayDir); vec4 fog = vec4(fogColor, 1.0) * fogAmount; fragColor = delinearizeGamma(vec4(tonemapACES(fog.rgb), fog.a));`),e}const h=Object.freeze(Object.defineProperty({__proto__:null,FogPassParameters:c,build:f},Symbol.toStringTag,{value:"Module"}));export{c as F,h as a,f as b};