UNPKG

@arcgis/core

Version:

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

17 lines (16 loc) 1.92 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{copy as e,multiply as r}from"../core/libs/gl-matrix-2/math/mat4.js";import{create as o}from"../core/libs/gl-matrix-2/factories/mat4f64.js";import{Float4BindUniform as a}from"../views/3d/webgl-engine/core/shaderModules/Float4BindUniform.js";import{FloatBindUniform as i}from"../views/3d/webgl-engine/core/shaderModules/FloatBindUniform.js";import{glsl as t}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{Matrix4PassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Matrix4PassUniform.js";import{VertexAttribute as s}from"../views/3d/webgl-engine/lib/VertexAttribute.js";import{ShaderBuilder as n}from"../views/webgl/ShaderBuilder.js";function m(){const e=new n;return e.attributes.add(s.POSITION,"vec3"),e.attributes.add(s.COLOR,"vec4"),e.attributes.add(s.SIZE,"float"),e.varyings.add("vcolor","vec4"),e.varyings.add("vsize","float"),e.vertex.uniforms.add(new l("transform",((e,r)=>c(e,r))),new a("viewport",(e=>e.camera.fullViewport)),new i("pixelRatio",(e=>e.camera.pixelRatio))),e.vertex.main.add(t`gl_Position = transform * vec4(position, 0); vcolor = color / 1.2; vsize = size * 5.0 * pixelRatio; gl_PointSize = vsize;`),e.fragment.main.add(t`float cap = 0.7; float scale = 1.0 / cap; float helper = clamp(length(abs(gl_PointCoord - vec2(0.5))), 0.0, cap); float alpha = clamp((cap - helper) * scale, 0.0, 1.0); float intensity = alpha * alpha * alpha; if (vsize < 3.0) { intensity *= 0.5; } fragColor = vec4(vcolor.xyz, intensity);`),e}function c(o,a){const i=24e-8;return e(d,a.camera.projectionMatrix),d[10]=i-1,d[11]=-1,d[14]=(i-2)*a.camera.near,r(d,d,a.camera.viewMatrix),r(d,d,o.modelMatrix)}const d=o(),f=Object.freeze(Object.defineProperty({__proto__:null,build:m},Symbol.toStringTag,{value:"Module"}));export{f as S,m as b};