UNPKG

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