UNPKG

@arcgis/core

Version:

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

18 lines (17 loc) 3.07 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{create as e}from"../core/libs/gl-matrix-2/factories/vec4f64.js";import{ScreenSizeScaling as r}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSizeScaling.glsl.js";import{SliceDraw as o}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as i}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{terrainDepthTest as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/TerrainDepthTest.glsl.js";import{ColorConversion as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{addProjViewLocalOrigin as s,addViewNormal as a}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float3PassUniform as d}from"../views/3d/webgl-engine/core/shaderModules/Float3PassUniform.js";import{Float4PassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{glsl as g}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{VertexAttribute as c}from"../views/3d/webgl-engine/lib/VertexAttribute.js";import{outputColorHighlightOID as m}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOID.glsl.js";import{ShaderBuilder as v}from"../views/webgl/ShaderBuilder.js";function w(e){const w=new v;w.include(i,e),w.include(r,e),w.fragment.include(o,e),w.include(m,e),w.include(n,e);const{vertex:b,fragment:u}=w;return u.include(l),s(b,e),u.uniforms.add(new t("uColor",(e=>e.color))),w.attributes.add(c.POSITION,"vec3"),w.varyings.add("vWorldPosition","vec3"),e.screenSizeEnabled&&w.attributes.add(c.OFFSET,"vec3"),e.shadingEnabled&&(a(b),w.attributes.add(c.NORMAL,"vec3"),w.varyings.add("vViewNormal","vec3"),u.uniforms.add(new d("shadingDirection",(e=>e.shadingDirection))),u.uniforms.add(new t("shadedColor",(e=>f(e.shadingTint,e.color))))),b.main.add(g` vWorldPosition = ${e.screenSizeEnabled?g`screenSizeScaling(offset, position)`:g`position`}; ${e.shadingEnabled?g`vec3 worldNormal = normal; vViewNormal = (viewNormal * vec4(worldNormal, 1)).xyz;`:""} forwardViewPosDepth((view * vec4(vWorldPosition, 1.0)).xyz); gl_Position = transformPosition(proj, view, vWorldPosition); `),u.main.add(g` discardBySlice(vWorldPosition); discardByTerrainDepth(); ${e.shadingEnabled?g`vec3 viewNormalNorm = normalize(vViewNormal); float shadingFactor = 1.0 - clamp(-dot(viewNormalNorm, shadingDirection), 0.0, 1.0); vec4 finalColor = mix(uColor, shadedColor, shadingFactor);`:g`vec4 finalColor = uColor;`} outputColorHighlightOID(finalColor, vWorldPosition, finalColor.rgb);`),w}function f(e,r){const o=1-e[3],i=e[3]+r[3]*o;return 0===i?(b[3]=i,b):(b[0]=(e[0]*e[3]+r[0]*r[3]*o)/i,b[1]=(e[1]*e[3]+r[1]*r[3]*o)/i,b[2]=(e[2]*e[3]+r[2]*r[3]*o)/i,b[3]=r[3],b)}const b=e(),u=Object.freeze(Object.defineProperty({__proto__:null,build:w},Symbol.toStringTag,{value:"Module"}));export{u as S,w as b};