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