UNPKG

@arcgis/core

Version:

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

29 lines (24 loc) 2.19 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{ReadDepth as r}from"../views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js";import{Float2DrawUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Float2DrawUniform.js";import{FloatPassUniform as o}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as a}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DDrawUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Texture2DDrawUniform.js";import{Texture2DPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{ShaderBuilder as s}from"../views/webgl/ShaderBuilder.js";const d=4;function i(){const i=new s,f=i.fragment;i.include(e);const u=(d+1)/2,c=1/(2*u*u);return f.include(r),f.uniforms.add(new n("depthMap",(e=>e.depthTexture)),new l("tex",(e=>e.colorTexture)),new t("blurSize",(e=>e.blurSize)),new o("projScale",((e,r)=>{const t=r.camera.distance;return t>5e4?Math.max(0,e.projScale-(t-5e4)):e.projScale}))),f.code.add(a` void blurFunction(vec2 uv, float r, float center_d, float sharpness, inout float wTotal, inout float bTotal) { float c = texture(tex, uv).r; float d = linearDepthFromTexture(depthMap, uv); float ddiff = d - center_d; float w = exp(-r * r * ${a.float(c)} - ddiff * ddiff * sharpness); wTotal += w; bTotal += w * c; } `),i.outputs.add("fragBlur","float"),f.main.add(a` float b = 0.0; float w_total = 0.0; float center_d = linearDepthFromTexture(depthMap, uv); float sharpness = -0.05 * projScale / center_d; for (int r = -${a.int(d)}; r <= ${a.int(d)}; ++r) { float rf = float(r); vec2 uvOffset = uv + rf * blurSize; blurFunction(uvOffset, rf, center_d, sharpness, w_total, b); } fragBlur = b / w_total;`),i}const f=Object.freeze(Object.defineProperty({__proto__:null,build:i},Symbol.toStringTag,{value:"Module"}));export{f as S,i as b};