UNPKG

@arcgis/core

Version:

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

27 lines (26 loc) 2.39 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{ReadShadowMapPassParameters as e}from"../shading/ReadShadowMap.glsl.js";import{BackgroundGrid as t}from"./BackgroundGrid.glsl.js";import{TileBlendInput as o}from"./TileBlendInput.js";import{glsl as r,If as c}from"../../shaderModules/glsl.js";import{Uniform as n}from"../../../../../webgl/Uniform.js";class s extends e{constructor(){super(...arguments),this.overlayOpacity=1}}function d(e,n){const{vertex:s,fragment:d,varyings:x}=e;x.add("vtc","vec2"),s.uniforms.add(new l("texOffsetAndScale")),d.uniforms.add(new u("tex")),d.uniforms.add(new i("textureOpacities"));const f=n.textureFadingEnabled&&!n.renderOccluded;f&&(s.uniforms.add(new l("nextTexOffsetAndScale")),x.add("nvtc","vec2"),d.uniforms.add(new u("texNext")),d.uniforms.add(new i("nextTexOpacities")),d.uniforms.add(new a("fadeFactor")));const v=n.tileBlendInput===o.ColorComposite,p=n.tileBlendInput===o.GridComposite;p&&d.include(t),v&&d.uniforms.add(new i("backgroundColor")),s.code.add(r` void forwardTextureCoordinatesWithTransform(in vec2 uv) { vtc = texOffsetAndScale.xy + uv * texOffsetAndScale.zw; ${c(f,"nvtc = nextTexOffsetAndScale.xy + uv * nextTexOffsetAndScale.zw;")} }`),d.code.add(r` vec4 getColor(vec4 color, vec2 uv, vec3 opacities) { ${c(p||v,r`if (opacities.y <= 0.0) { return color * opacities.z * opacities.x; } vec4 bg = vec4(${v?r`backgroundColor`:r`gridColor(uv)`} * opacities.y, opacities.y); vec4 layer = color * opacities.z; return (bg * (1.0 - layer.a) + layer) * opacities.x;`,"return color;")} }`),f?d.code.add(r`vec4 getTileColor() { vec4 color = getColor(texture(tex, vtc), vtc, textureOpacities); if (fadeFactor >= 1.0) { return color; } vec4 nextColor = getColor(texture(texNext, nvtc), nvtc, nextTexOpacities); return mix(nextColor, color, fadeFactor); }`):d.code.add(r`vec4 getTileColor() { return getColor(texture(tex, vtc), vtc, textureOpacities); }`)}class a extends n{constructor(e){super(e,"float")}}class i extends n{constructor(e){super(e,"vec3")}}class l extends n{constructor(e){super(e,"vec4")}}class u extends n{constructor(e){super(e,"sampler2D")}}export{i as Float3Uniform,s as OverlayTerrainPassParameters,d as TerrainTexture,u as Texture2DUniform};