@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
42 lines (40 loc) • 4.11 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.19/LICENSE.txt */
import{addNearFar as o}from"../ForwardLinearDepthToWriteShadowMap.glsl.js";import{SliceDraw as r}from"../Slice.glsl.js";import{Transform as e}from"../Transform.glsl.js";import{NormalAttribute as t}from"../attributes/NormalAttribute.glsl.js";import{ObjectAndLayerIdColor as i}from"../attributes/ObjectAndLayerIdColor.glsl.js";import{TextureCoordinateAttribute as a}from"../attributes/TextureCoordinateAttribute.glsl.js";import{VertexNormal as s}from"../attributes/VertexNormal.glsl.js";import{OutputDepth as l}from"../output/OutputDepth.glsl.js";import{OutputHighlight as d}from"../output/OutputHighlight.glsl.js";import{VisualVariables as n}from"../shading/VisualVariables.glsl.js";import{DiscardOrAdjustAlphaPass as c}from"../util/DiscardOrAdjustAlpha.glsl.js";import{addProjViewLocalOrigin as u}from"../util/View.glsl.js";import{glsl as p,If as v}from"../../shaderModules/glsl.js";import{Texture2DPassUniform as m}from"../../shaderModules/Texture2DPassUniform.js";function f(f,g){const{vertex:x,fragment:O,varyings:j}=f,{hasColorTexture:h,alphaDiscardMode:w}=g,V=h&&1!==w,{output:C,normalType:b,hasColorTextureTransform:A}=g;switch(C){case 1:u(x,g),f.include(e),O.include(r,g),f.include(a,g),V&&O.uniforms.add(new m("tex",o=>o.texture)),x.main.add(p`vpos = getVertexInLocalOriginSpace();
vpos = subtractOrigin(vpos);
vpos = addVerticalOffset(vpos, localOrigin);
gl_Position = transformPosition(proj, view, vpos);
forwardTextureCoordinates();`),f.include(c,g),O.main.add(p`
discardBySlice(vpos);
${v(V,p`vec4 texColor = texture(tex, ${A?"colorUV":"vuv0"});
discardOrAdjustAlpha(texColor);`)}`);break;case 3:case 4:case 5:case 6:case 9:u(x,g),f.include(e),f.include(a,g),f.include(n,g),f.include(l,g),O.include(r,g),f.include(i,g),o(f),j.add("depth","float",{invariant:!0}),V&&O.uniforms.add(new m("tex",o=>o.texture)),x.main.add(p`vpos = getVertexInLocalOriginSpace();
vpos = subtractOrigin(vpos);
vpos = addVerticalOffset(vpos, localOrigin);
gl_Position = transformPositionWithDepth(proj, view, vpos, nearFar, depth);
forwardTextureCoordinates();
forwardObjectAndLayerIdColor();`),f.include(c,g),O.main.add(p`
discardBySlice(vpos);
${v(V,p`vec4 texColor = texture(tex, ${A?"colorUV":"vuv0"});
discardOrAdjustAlpha(texColor);`)}
${9===C?p`outputObjectAndLayerIdColor();`:p`outputDepth(depth);`}`);break;case 2:{u(x,g),f.include(e),f.include(t,g),f.include(s,g),f.include(a,g),f.include(n,g),V&&O.uniforms.add(new m("tex",o=>o.texture)),2===b&&j.add("vPositionView","vec3",{invariant:!0});const o=0===b||1===b;x.main.add(p`
vpos = getVertexInLocalOriginSpace();
${o?p`vNormalWorld = dpNormalView(vvLocalNormal(normalModel()));`:p`vPositionView = (view * vec4(vpos, 1.0)).xyz;`}
vpos = subtractOrigin(vpos);
vpos = addVerticalOffset(vpos, localOrigin);
gl_Position = transformPosition(proj, view, vpos);
forwardTextureCoordinates();`),O.include(r,g),f.include(c,g),O.main.add(p`
discardBySlice(vpos);
${v(V,p`vec4 texColor = texture(tex, ${A?"colorUV":"vuv0"});
discardOrAdjustAlpha(texColor);`)}
${2===b?p`vec3 normal = screenDerivativeNormal(vPositionView);`:p`vec3 normal = normalize(vNormalWorld);
if (gl_FrontFacing == false){
normal = -normal;
}`}
fragColor = vec4(0.5 + 0.5 * normal, 1.0);`);break}case 8:u(x,g),f.include(e),f.include(a,g),f.include(n,g),V&&O.uniforms.add(new m("tex",o=>o.texture)),x.main.add(p`vpos = getVertexInLocalOriginSpace();
vpos = subtractOrigin(vpos);
vpos = addVerticalOffset(vpos, localOrigin);
gl_Position = transformPosition(proj, view, vpos);
forwardTextureCoordinates();`),O.include(r,g),f.include(c,g),f.include(d,g),O.main.add(p`
discardBySlice(vpos);
${v(V,p`vec4 texColor = texture(tex, ${A?"colorUV":"vuv0"});
discardOrAdjustAlpha(texColor);`)}
calculateOcclusionAndOutputHighlight();`)}}export{f as DefaultMaterialAuxiliaryPasses};