Custom Gis Application with Arcgis Javascript API with modern layouting
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

23 lines
2.6 KiB

// All material copyright Esri, All Rights Reserved, unless otherwise specified.
// See https://js.arcgis.com/4.30/esri/copyright.txt for details.
//>>built
define("exports ../core/screenUtils ./vec42 ../core/libs/gl-matrix-2/factories/vec4f64 ../views/3d/webgl-engine/core/shaderModules/BooleanPassUniform ../views/3d/webgl-engine/core/shaderModules/Float4PassUniform ../views/3d/webgl-engine/core/shaderModules/interfaces ../views/3d/webgl-engine/core/shaderModules/ShaderBuilder ../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform ../views/3d/webgl-engine/lib/VertexAttribute".split(" "),function(e,f,r,g,l,t,h,u,k,v){function m(){const b=new u.ShaderBuilder;
b.attributes.add(v.VertexAttribute.POSITION,"vec2");b.vertex.uniforms.add(new t.Float4PassUniform("drawPosition",(a,c)=>{var d=c.camera.pixelRatio;const w=a.magnifier.offset.x*d,x=a.magnifier.offset.y*d;f.screenPointObjectToArray(a.magnifier.position,n);const p=c.camera.screenToRender(n,y);a=Math.ceil(d*a.magnifier.size);d=c.camera.fullWidth;c=c.camera.fullHeight;return r.set(z,-1+(p[0]+w)/d*2,-1+(p[1]-x)/c*2,a/d*2,a/c*2)}));b.varyings.add("vUV","vec2");b.vertex.code.add(h.glsl`void main(void) {
vUV = position;
gl_Position = vec4(drawPosition.xy + vec2(position - 0.5) * drawPosition.zw, 0.0, 1.0);
}`);b.fragment.uniforms.add(new k.Texture2DPassUniform("textureInput",a=>a.input));b.fragment.uniforms.add(new k.Texture2DPassUniform("textureMask",a=>a.mask));b.fragment.uniforms.add(new k.Texture2DPassUniform("textureOverlay",a=>a.overlay));b.fragment.uniforms.add(new l.BooleanPassUniform("maskEnabled",a=>a.magnifier.maskEnabled));b.fragment.uniforms.add(new l.BooleanPassUniform("overlayEnabled",a=>a.magnifier.overlayEnabled));b.fragment.code.add(h.glsl`const float barrelFactor = 1.1;
vec2 barrel(vec2 uv) {
vec2 uvn = uv * 2.0 - 1.0;
if (uvn.x == 0.0 && uvn.y == 0.0) {
return vec2(0.5, 0.5);
}
float theta = atan(uvn.y, uvn.x);
float r = pow(length(uvn), barrelFactor);
return r * vec2(cos(theta), sin(theta)) * 0.5 + 0.5;
}
void main() {
float mask = maskEnabled ? texture(textureMask, vUV).a : 1.0;
vec4 inputColor = texture(textureInput, barrel(vUV)) * mask;
vec4 overlayColor = overlayEnabled ? texture(textureOverlay, vUV) : vec4(0);
fragColor = overlayColor + (1.0 - overlayColor.a) * inputColor;
}`);return b}class q extends h.NoParameters{constructor(){super(...arguments);this.input=this.overlay=this.mask=null;this.size=0}}const n=f.createScreenPointArray(),y=f.createRenderScreenPointArray(),z=g.create();g=Object.freeze(Object.defineProperty({__proto__:null,MagnifierPassParameters:q,build:m},Symbol.toStringTag,{value:"Module"}));e.Magnifier=g;e.MagnifierPassParameters=q;e.build=m});