UNPKG

@arcgis/core

Version:

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

33 lines (27 loc) 2.61 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ 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 t}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as s}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 n}from"../views/webgl/ShaderBuilder.js";var a;!function(e){e[e.Horizontal=0]="Horizontal",e[e.Vertical=1]="Vertical",e[e.COUNT=2]="COUNT"}(a||(a={}));const c={sunny:5e-4,cloudy:5e-4,rainy:.0022,snowy:.0022,foggy:.0022};class u extends l{constructor(){super(...arguments),this.blurRadius=c.sunny}}function d(l){const c=new n,u=c.fragment;c.include(r),c.include(o),u.uniforms.add(new i("colorTexture",(e=>e.color)),new t("blurRadius",(e=>e.blurRadius)));let d="";const m=15;for(let e=0;e<m;e++){d+=`locations1D[${e}] = ${(e/(m-1)*2-1).toFixed(3).toString()};`}const v=2;let f="";for(let r=0;r<m;r++){f+=`locations1DWeights[${r}] = ${e(r-Math.floor(m/2),v).toFixed(7).toString()};`}const g=l.bloomStage===a.Horizontal;return u.code.add(s` float locations1D[${s.int(m)}]; float locations1DWeights[${s.int(m)}]; vec4 blurUniformSamples(sampler2D toBlur) { vec4 res = vec4(0.0); vec2 size = vec2(textureSize(toBlur, 0)); vec2 aspectCorrection = vec2(1.0, size.x / size.y); vec2 uvInPixel = uv * size; ${d} ${f} vec2 pixelCenterShift = 0.5 / size; for(int i=0;i < ${s.int(m)}; i++) { float uv1D = locations1D[i] + ${g?"pixelCenterShift.x":"pixelCenterShift.y"}; vec2 uvOffset = ${g?"vec2(uv1D, 0.0)":"vec2(0.0, uv1D)"}; vec2 uvDistorted = uv + uvOffset * blurRadius * aspectCorrection; vec4 sampleColor = texture(toBlur, uvDistorted); res += pow(sampleColor, vec4(GAMMA)) * locations1DWeights[i]; } res = pow(res, vec4(INV_GAMMA)); res.a = 1.0; return res; } `).main.add(s`fragColor = blurUniformSamples(colorTexture);`),c}const m=Object.freeze(Object.defineProperty({__proto__:null,BloomBlurPassParameters:u,get BlurDirection(){return a},blurRadiusPresets:c,build:d},Symbol.toStringTag,{value:"Module"}));export{m as B,a,u as b,c,d};