@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
13 lines (12 loc) • 1.3 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{AlignPixel as e}from"./AlignPixel.glsl.js";import{HUDRenderStyle as r}from"./HUDRenderStyle.js";import{Float4BindUniform as o}from"../../shaderModules/Float4BindUniform.js";import{FloatBindUniform as i}from"../../shaderModules/FloatBindUniform.js";import{glsl as l}from"../../shaderModules/glsl.js";import{Texture2DBindUniform as t}from"../../shaderModules/Texture2DBindUniform.js";function n(n){n.vertex.uniforms.add(new i("renderTransparentlyOccludedHUD",(e=>e.hudRenderStyle===r.Occluded?1:e.hudRenderStyle===r.NotOccluded?0:.75)),new o("viewport",(e=>e.camera.fullViewport)),new t("hudVisibilityTexture",(e=>e.hudVisibility?.getTexture()))),n.vertex.include(e),n.vertex.code.add(l`bool testHUDVisibility(vec4 posProj) {
vec4 posProjCenter = alignToPixelCenter(posProj, viewport.zw);
vec4 occlusionPixel = texture(hudVisibilityTexture, .5 + .5 * posProjCenter.xy / posProjCenter.w);
if (renderTransparentlyOccludedHUD > 0.5) {
return occlusionPixel.r * occlusionPixel.g > 0.0 && occlusionPixel.g * renderTransparentlyOccludedHUD < 1.0;
}
return occlusionPixel.r * occlusionPixel.g > 0.0 && occlusionPixel.g == 1.0;
}`)}export{n as HUDVisibility};