@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
18 lines (17 loc) • 2.1 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{create as e}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{ScreenSpacePass as r}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{Float4PassUniform as o}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as l}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as i}from"../views/webgl/NoParameters.js";import{ShaderBuilder as a}from"../views/webgl/ShaderBuilder.js";class m extends i{constructor(){super(...arguments),this.borderColor=e()}}function c(){const e=new a;return e.include(r),e.outputs.add("fragColor","vec4",0),e.fragment.uniforms.add(new t("colorTexture",e=>e.color),new t("cutFillVolumes",e=>e.cutFillVolumes),new t("cutFillMask",e=>e.cutFillMask),new s("pixelRatio",(e,r)=>r.camera.pixelRatio),new o("borderColor",e=>e.borderColor)).main.add(l`vec4 color = texture(colorTexture, uv, 0.0);
vec4 volumesColor = texture(cutFillVolumes, uv, 0.0);
ivec2 iuv = ivec2(uv * vec2(textureSize(cutFillMask, 0)));
vec2 m0 = texelFetch(cutFillMask, iuv, 0).rg;
vec2 m1 = texelFetch(cutFillMask, iuv + ivec2(-1, 0), 0).rg;
vec2 m2 = texelFetch(cutFillMask, iuv + ivec2(1, 0), 0).rg;
vec2 m3 = texelFetch(cutFillMask, iuv + ivec2(0, -1), 0).rg;
vec2 m4 = texelFetch(cutFillMask, iuv + ivec2(0, 1), 0).rg;
float d = (
step(1.5, abs(m0.r - m1.r) + abs(m0.g - m1.g))
+ step(1.5, abs(m0.r - m2.r) + abs(m0.g - m2.g))
+ step(1.5, abs(m0.r - m3.r) + abs(m0.g - m3.g))
+ step(1.5, abs(m0.r - m4.r) + abs(m0.g - m4.g))
) * 0.25 * pixelRatio;
vec4 base = mix(color, volumesColor, max(m0.r, m0.g) * volumesColor.a);
fragColor = mix(base, borderColor, d);`),e}const u=Object.freeze(Object.defineProperty({__proto__:null,CutFillCompositionPassParameters:m,build:c},Symbol.toStringTag,{value:"Module"}));export{m as C,u as a,c as b};