You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
2.0 KiB
26 lines
2.0 KiB
// All material copyright Esri, All Rights Reserved, unless otherwise specified. |
|
// See https://js.arcgis.com/4.30/esri/copyright.txt for details. |
|
//>>built |
|
define("exports ../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl ../views/3d/webgl-engine/core/shaderModules/FloatPassUniform ../views/3d/webgl-engine/core/shaderModules/interfaces ../views/3d/webgl-engine/core/shaderModules/ShaderBuilder ../views/3d/webgl-engine/lib/VertexAttribute".split(" "),function(g,q,r,a,t,b){function h(k){const c=new t.ShaderBuilder,{vertex:d,fragment:u,attributes:e,varyings:l}=c;q.addProjViewLocalOrigin(d,k);const {isAttributeDriven:f,usesHalfFloat:m}=k;e.add(b.VertexAttribute.POSITION, |
|
"vec3");e.add(b.VertexAttribute.UV0,"vec2");f&&(e.add(b.VertexAttribute.FEATUREATTRIBUTE,"float"),l.add("attributeValue","float"));m&&c.constants.add("compressionFactor","float",.25);l.add("unitCirclePos","vec2");d.uniforms.add(new r.FloatPassUniform("radius",({resolutionForScale:n,searchRadius:v},{camera:p,screenToWorldRatio:w,overlayStretch:x})=>2*v*(0===n?1:n/w)*p.pixelRatio/p.fullViewport[2]/x));d.code.add(a.glsl` |
|
void main() { |
|
unitCirclePos = uv0; |
|
|
|
vec4 posProj = proj * (view * vec4(${b.VertexAttribute.POSITION}, 1.0)); |
|
vec4 quadOffset = vec4(unitCirclePos * radius, 0.0, 0.0); |
|
|
|
${f?a.glsl`attributeValue = ${b.VertexAttribute.FEATUREATTRIBUTE};`:""} |
|
gl_Position = posProj + quadOffset; |
|
} |
|
`);u.code.add(a.glsl` |
|
void main() { |
|
float radiusRatioSquared = dot(unitCirclePos, unitCirclePos); |
|
if (radiusRatioSquared > 1.0) { |
|
discard; |
|
} |
|
|
|
float oneMinusRadiusRatioSquared = 1.0 - radiusRatioSquared; |
|
float density = oneMinusRadiusRatioSquared * oneMinusRadiusRatioSquared ${f?a.glsl` * attributeValue`:""} ${m?a.glsl` * compressionFactor`:""}; |
|
fragColor = vec4(density); |
|
} |
|
`);return c}const y=Object.freeze(Object.defineProperty({__proto__:null,build:h},Symbol.toStringTag,{value:"Module"}));g.HeatmapDensity=y;g.build=h}); |