@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
12 lines (11 loc) • 1.75 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{isColorOrColorEmission as e}from"../ShaderOutput.js";import{VertexTextureCoordinates as s}from"../attributes/VertexTextureCoordinates.glsl.js";import{Float3DrawUniform as i}from"../../shaderModules/Float3DrawUniform.js";import{Float3PassUniform as o}from"../../shaderModules/Float3PassUniform.js";import{glsl as r,If as t}from"../../shaderModules/glsl.js";import{Texture2DDrawUniform as m}from"../../shaderModules/Texture2DDrawUniform.js";import{Texture2DPassUniform as n}from"../../shaderModules/Texture2DPassUniform.js";import{GLEmissiveTexturePassParameters as a}from"../../../lib/GLTextureMaterial.js";import{BindType as u}from"../../../../../webgl/BindType.js";var d;!function(e){e[e.None=0]="None",e[e.Value=1]="Value",e[e.Texture=2]="Texture",e[e.COUNT=3]="COUNT"}(d||(d={}));class f extends a{}function l(a,f){if(!e(f.output))return;const{emissionSource:l,hasEmissiveTextureTransform:c,bindType:x}=f,p=l===d.Texture;p&&(a.include(s,f),a.fragment.uniforms.add(x===u.Pass?new n("texEmission",(e=>e.textureEmissive)):new m("texEmission",(e=>e.textureEmissive))));const v=l===d.Value||p;v&&a.fragment.uniforms.add(x===u.Pass?new o("emissionFactor",(e=>e.emissiveFactor)):new i("emissionFactor",(e=>e.emissiveFactor))),a.fragment.code.add(r`
vec4 getEmissions() {
vec4 emissions = ${v?"vec4(emissionFactor, 1.0)":"vec4(0.0)"};
${t(p,`emissions *= textureLookup(texEmission, ${c?"emissiveUV":"vuv0"});\n emissions.w = emissions.rgb == vec3(0.0) ? 0.0: emissions.w;`)}
return emissions;
}
`)}export{d as EmissionSource,l as Emissions,f as EmissionsParameters};