Stars.glsl.js 2.0 KB

123456789101112131415161718192021
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. import{c as e,m as o}from"./mat4.js";import{c as r}from"./mat4f64.js";import{AlignPixel as i}from"../views/3d/webgl-engine/core/shaderLibrary/hud/AlignPixel.glsl.js";import{Float4PassUniform as a}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as t}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as s}from"../views/3d/webgl-engine/core/shaderModules/interfaces.js";import{Matrix4PassUniform as l}from"../views/3d/webgl-engine/core/shaderModules/Matrix4PassUniform.js";import{ShaderBuilder as n}from"../views/3d/webgl-engine/core/shaderModules/ShaderBuilder.js";import{VertexAttribute as d}from"../views/3d/webgl-engine/lib/VertexAttribute.js";function c(){const e=new n;return e.attributes.add(d.POSITION,"vec3"),e.attributes.add(d.COLOR,"vec4"),e.attributes.add(d.SIZE,"float"),e.varyings.add("vcolor","vec4"),e.varyings.add("vsize","float"),e.vertex.uniforms.add([new l("transform",((e,o)=>m(e,o))),new a("viewport",((e,o)=>o.camera.fullViewport)),new t("pixelRatio",((e,o)=>o.camera.pixelRatio))]),e.include(i),e.vertex.code.add(s`void main(void) {
  6. vec4 posProj = transform * vec4(position, 0);
  7. gl_Position = alignToPixelCenter(posProj, viewport.zw);
  8. vcolor = color / 1.2;
  9. vsize = size * 5.0 * pixelRatio;
  10. gl_PointSize = vsize;
  11. }`),e.fragment.code.add(s`void main() {
  12. float cap = 0.7;
  13. float scale = 1.0 / cap;
  14. float helper = clamp(length(abs(gl_PointCoord - vec2(0.5))), 0.0, cap);
  15. float alpha = clamp((cap - helper) * scale, 0.0, 1.0);
  16. float intensity = alpha * alpha * alpha;
  17. if (vsize < 3.0) {
  18. intensity *= 0.5;
  19. }
  20. gl_FragColor = vec4(vcolor.xyz, intensity);
  21. }`),e}function m(r,i){const a=24e-8;return e(p,i.camera.projectionMatrix),p[10]=a-1,p[11]=-1,p[14]=(a-2)*i.camera.near,o(p,p,i.camera.viewMatrix),o(p,p,r.modelMatrix)}const p=r(),v=Object.freeze(Object.defineProperty({__proto__:null,build:c},Symbol.toStringTag,{value:"Module"}));export{v as S,c as b};