UNPKG

@arcgis/core

Version:

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

33 lines (32 loc) 3.16 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{HighlightCellGridScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightCellGridScreenSpacePass.glsl.js";import{HighlightReadBitmap as t}from"../views/3d/webgl-engine/core/shaderLibrary/HighlightReadBitmap.glsl.js";import{Float2DrawUniform as i}from"../views/3d/webgl-engine/core/shaderModules/Float2DrawUniform.js";import{FloatPassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as r}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{IntegerPassUniform as o}from"../views/3d/webgl-engine/core/shaderModules/IntegerPassUniform.js";import{Texture2DPassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{Texture2DUintPassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Texture2DUintPassUniform.js";import{o as g,b as h}from"./HighlightDownsample.glsl.js";import{ShaderBuilder as s}from"../views/webgl/ShaderBuilder.js";function c(){const c=new s;c.include(e);const{fragment:a}=c;return a.uniforms.add(new n("blurInput",(e=>e.highlightBlurTexture)),new i("blurSize",(e=>e.blurSize)),new u("highlightTexture",(e=>e.highlightTexture)),new n("highlightOptionsTexture",(e=>e.highlightOptionsTexture)),new o("highlightLevel",(e=>e.highlightLevel)),new l("occludedIntensityFactor",(e=>e.occludedFactor))),a.constants.add("inner","float",1-(g-h)/g),c.include(t),a.main.add(r`vec2 highlightTextureSize = vec2(textureSize(highlightTexture,0)); vec2 uv = sUV; vec2 center = texture(blurInput, uv).rg; vec2 blurredHighlightValue = (vOutlinePossible == 0.0) ? center : center * 0.204164 + texture(blurInput, uv + blurSize * 1.407333).rg * 0.304005 + texture(blurInput, uv - blurSize * 1.407333).rg * 0.304005 + texture(blurInput, uv + blurSize * 3.294215).rg * 0.093913 + texture(blurInput, uv - blurSize * 3.294215).rg * 0.093913; float highlightIntensity = blurredHighlightValue.r; float occlusionWeight = blurredHighlightValue.g; if (highlightIntensity <= 0.01) { discard; } vec4 fillColor = texelFetch(highlightOptionsTexture, ivec2(highlightLevel, 0), 0); vec4 outlineColor = texelFetch(highlightOptionsTexture, ivec2(highlightLevel, 1), 0); uvec2 centerTexel = texelFetch(highlightTexture, ivec2(uv * highlightTextureSize), 0).rg; uint centerBits = readLevelBits(centerTexel, highlightLevel); bool centerFilled = (centerBits & 1u) == 1u; bool centerOccluded = (centerBits & 3u) == 3u; bool occluded = centerOccluded || (0.5 * highlightIntensity < occlusionWeight); float occlusionFactor = occluded ? occludedIntensityFactor : 1.0; float outlineFactor = centerFilled ? 1.0 : smoothstep(0.0, inner, highlightIntensity); float fillFactor = centerFilled ? 1.0 : 0.0; vec4 baseColor = mix(outlineColor, fillColor, fillFactor); float intensity = baseColor.a * occlusionFactor * outlineFactor; fragColor = vec4(baseColor.rgb, intensity);`),c}const a=Object.freeze(Object.defineProperty({__proto__:null,build:c},Symbol.toStringTag,{value:"Module"}));export{a as H,c as b};