@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
21 lines (17 loc) • 1.92 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{ScreenSpacePass as e}from"../views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.glsl.js";import{If as r,glsl as o}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Texture2DPassUniform as s}from"../views/3d/webgl-engine/core/shaderModules/Texture2DPassUniform.js";import{NoParameters as t}from"../views/webgl/NoParameters.js";import{ShaderBuilder as a}from"../views/webgl/ShaderBuilder.js";class n extends t{}function i(t){const n=new a;n.include(e);const i=t.hasEmission,c=n.fragment;return c.uniforms.add(new s("colorTexture",(e=>e.colorTexture)),new s("alphaTexture",(e=>e.alphaTexture)),new s("frontFaceTexture",(e=>e.frontFaceTexture))),n.outputs.add("fragColor","vec4",0),i&&(n.outputs.add("fragEmission","vec4",1),c.uniforms.add(new s("emissionTexture",(e=>e.emissionTexture))),c.uniforms.add(new s("emissionFrontFaceTexture",(e=>e.emissionFrontFaceTexture)))),c.main.add(o`
float srcAlpha = texture(alphaTexture, uv).r;
if(srcAlpha == 0.0){
fragColor = vec4(0.0);
${r(i,"fragEmission = vec4(0.0);")}
return;
}
vec4 srcColor = texture(colorTexture, uv);
vec4 frontFace = texture(frontFaceTexture, uv);
vec4 transparentColor = vec4(mix(srcColor.rgb / srcAlpha, frontFace.rgb, frontFace.a), 1.0 - srcColor.a);
fragColor = transparentColor;
${r(i,"vec4 emission = texture(emissionTexture, uv);\n vec4 emissionFrontFace = texture(emissionFrontFaceTexture, uv);\n fragEmission = vec4(mix(emission.rgb / srcAlpha, emissionFrontFace.rgb, emissionFrontFace.a), emissionFrontFace.a);")}
`),n}const c=Object.freeze(Object.defineProperty({__proto__:null,OITBlendPassParameters:n,build:i},Symbol.toStringTag,{value:"Module"}));export{n as O,c as a,i as b};