UNPKG

@arcgis/core

Version:

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

26 lines (21 loc) 2.2 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{gauss as e}from"../core/mathUtils.js";import{ScreenSpacePass as r}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{Gamma as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/Gamma.glsl.js";import{FloatPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as t}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as l}from"../views/webgl/NoParameters.js";import{ShaderBuilder as a}from"../views/webgl/ShaderBuilder.js";class n extends l{constructor(){super(...arguments),this.blurRadius=0}}function c(l){const n=new a,c=n.fragment;n.include(r),c.include(o),c.uniforms.add(new i("colorTexture",e=>e.emissionsToDownsample),new s("blurRadius",e=>e.blurRadius));let u="";const d=7;for(let e=0;e<d;e++){u+=`locations1D[${e}] = ${(e/(d-1)*2-1).toFixed(3).toString()};`}const m=2;let f="";for(let r=0;r<d;r++){f+=`locations1DWeights[${r}] = ${e(r-Math.floor(d/2),m).toFixed(7).toString()};`}const v=0===l.glowStage;return c.code.add(t` float locations1D[${t.int(d)}]; float locations1DWeights[${t.int(d)}]; vec3 blurUniformSamples(sampler2D toBlur) { vec3 res = vec3(0.0); vec2 size = vec2(textureSize(toBlur, 0)); vec2 aspectCorrection = vec2(1.0, size.x / size.y); ${u} ${f} vec2 pixelCenterShift = 0.5 / size; for(int i=0;i < ${t.int(d)}; i++) { float uv1D = locations1D[i] + ${v?"pixelCenterShift.x":"pixelCenterShift.y"}; vec2 uvOffset = ${v?"vec2(uv1D, 0.0)":"vec2(0.0, uv1D)"}; vec2 uvDistorted = uv + uvOffset * blurRadius * aspectCorrection; vec3 sampleColor = texture(toBlur, uvDistorted).rgb; res += sampleColor * locations1DWeights[i]; } return res; } `).main.add(t`fragColor = vec4(blurUniformSamples(colorTexture), 0.0);`),n}const u=Object.freeze(Object.defineProperty({__proto__:null,GlowBlurPassParameters:n,build:c},Symbol.toStringTag,{value:"Module"}));export{n as G,u as a,c as b};