UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

24 lines (21 loc) 1.89 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{addProjViewLocalOrigin as e}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{FloatPassUniform as o}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as i}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{VertexAttribute as r}from"../views/3d/webgl-engine/lib/VertexAttribute.js";import{ShaderBuilder as a}from"../views/webgl/ShaderBuilder.js";function t(t){const s=new a,{vertex:d,fragment:u,attributes:l,varyings:n}=s;e(d,t);const{isAttributeDriven:c,usesHalfFloat:f}=t;return l.add(r.POSITION,"vec3"),l.add(r.UV0,"vec2"),c&&(l.add(r.FEATUREATTRIBUTE,"float"),n.add("attributeValue","float")),f&&u.constants.add("compressionFactor","float",.25),n.add("unitCirclePos","vec2"),d.uniforms.add(new o("radius",(({resolutionForScale:e,searchRadius:o},{camera:i,screenToWorldRatio:r,overlayStretch:a})=>2*o*(0===e?1:e/r)*i.pixelRatio/i.fullViewport[2]/a))),d.main.add(i` unitCirclePos = uv0; vec4 posProj = proj * (view * vec4(${r.POSITION}, 1.0)); vec4 quadOffset = vec4(unitCirclePos * radius, 0.0, 0.0); ${c?i`attributeValue = ${r.FEATUREATTRIBUTE};`:""} gl_Position = posProj + quadOffset; `),u.main.add(i` float radiusRatioSquared = dot(unitCirclePos, unitCirclePos); if (radiusRatioSquared > 1.0) { fragColor = vec4(0.0); } else { float oneMinusRadiusRatioSquared = 1.0 - radiusRatioSquared; float density = oneMinusRadiusRatioSquared * oneMinusRadiusRatioSquared ${c?i` * attributeValue`:""} ${f?i` * compressionFactor`:""}; fragColor = vec4(density); } `),s}const s=Object.freeze(Object.defineProperty({__proto__:null,build:t},Symbol.toStringTag,{value:"Module"}));export{s as H,t as b};