12345678910111213141516171819202122232425262728293031323334353637 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.25/esri/copyright.txt for details.
- */
- import{isSome as e}from"../core/maybe.js";import{O as r}from"./vec2f64.js";import{ShaderOutput as o}from"../views/3d/webgl-engine/core/shaderLibrary/ShaderOutput.js";import{SliceDraw as i}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{Transform as a}from"../views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js";import{multipassTerrainTest as t}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MultipassTerrainTest.glsl.js";import{defaultMaskAlphaCutoff as s}from"../views/3d/webgl-engine/core/shaderLibrary/util/AlphaCutoff.js";import{ColorConversion as d}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{addProjViewLocalOrigin as l}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float2PassUniform as n}from"../views/3d/webgl-engine/core/shaderModules/Float2PassUniform.js";import{FloatPassUniform as g}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as p}from"../views/3d/webgl-engine/core/shaderModules/interfaces.js";import{ShaderBuilder as c}from"../views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js";import{Texture2DPassUniform as u}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{TransparencyPassType as m}from"../views/3d/webgl-engine/lib/TransparencyPassType.js";import{VertexAttribute as v}from"../views/3d/webgl-engine/lib/VertexAttribute.js";function f(f){const w=new c,{vertex:h,fragment:b}=w;return l(h,f),w.include(a,f),w.attributes.add(v.POSITION,"vec3"),w.attributes.add(v.UV0,"vec2"),w.varyings.add("vpos","vec3"),f.hasMultipassTerrain&&w.varyings.add("depth","float"),h.uniforms.add(new n("textureCoordinateScaleFactor",(o=>e(o.texture)&&e(o.texture.descriptor.textureCoordinateScaleFactor)?o.texture.descriptor.textureCoordinateScaleFactor:r))),h.code.add(p`
- void main(void) {
- vpos = position;
- ${f.hasMultipassTerrain?"depth = (view * vec4(vpos, 1.0)).z;":""}
- vTexCoord = uv0 * textureCoordinateScaleFactor;
- gl_Position = transformPosition(proj, view, vpos);
- }
- `),w.include(i,f),w.include(t,f),b.uniforms.add([new u("tex",(e=>e.texture)),new g("opacity",(e=>e.opacity))]),w.varyings.add("vTexCoord","vec2"),f.output===o.Alpha?b.code.add(p`
- void main() {
- discardBySlice(vpos);
- ${f.hasMultipassTerrain?"terrainDepthTest(gl_FragCoord, depth);":""}
- float alpha = texture2D(tex, vTexCoord).a * opacity;
- if (alpha < ${p.float(s)}) {
- discard;
- }
- gl_FragColor = vec4(alpha);
- }
- `):(b.include(d),b.code.add(p`
- void main() {
- discardBySlice(vpos);
- ${f.hasMultipassTerrain?"terrainDepthTest(gl_FragCoord, depth);":""}
- gl_FragColor = texture2D(tex, vTexCoord) * opacity;
- if (gl_FragColor.a < ${p.float(s)}) {
- discard;
- }
- gl_FragColor = highlightSlice(gl_FragColor, vpos);
- ${f.transparencyPassType===m.Color?"gl_FragColor = premultiplyAlpha(gl_FragColor);":""}
- }
- `)),w}const w=Object.freeze(Object.defineProperty({__proto__:null,build:f},Symbol.toStringTag,{value:"Module"}));export{w as I,f as b};
|