@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
JavaScript
/*
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};