@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.73 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{TranslateAnchor as e}from"../../vectorTiles/style/StyleDefinition.js";import t from"./WGLBrush.js";import{CompareFunction as r,PrimitiveType as i,DataType as a}from"../../../../webgl/enums.js";class n extends t{constructor(){super(...arguments),this._programOptions={id:!1}}dispose(){}drawMany(t,n){const{context:l,displayLevel:s,requiredLevel:o,state:c,painter:u,spriteMosaic:d,styleLayerUID:f,requestRender:m,allowDelayedRender:p}=t;if(!n.some((e=>e.layerData.get(f)?.circleIndexCount??!1)))return;const y=t.styleLayer,g=y.circleMaterial,M=u.vectorTilesMaterialManager,v=1.2,E=y.getPaintValue("circle-translate",s),x=y.getPaintValue("circle-translate-anchor",s),I=this._programOptions,U=M.getMaterialProgram(l,g,I);if(p&&null!=m&&!U.compiled)return void m();l.useProgram(U),U.setUniformMatrix3fv("u_displayMat3",x===e.VIEWPORT?c.displayMat3:c.displayViewMat3),U.setUniform2fv("u_circleTranslation",E),U.setUniform1f("u_depth",y.z),U.setUniform1f("u_antialiasingWidth",v);let _=-1;for(const e of n){if(!e.layerData.has(f))continue;e.key.level!==_&&(_=e.key.level,g.setDataUniforms(U,s,y,_,d));const t=e.layerData.get(f);if(!t.circleIndexCount)continue;t.prepareForRendering(l);const n=t.vao;null!=n&&(l.bindVAO(n),U.setUniformMatrix3fv("u_dvsMat3",e.transforms.displayViewScreenMat3),o!==e.key.level?l.setStencilFunction(r.EQUAL,e.stencilRef,255):l.setStencilFunction(r.GREATER,255,255),l.drawElements(i.TRIANGLES,t.circleIndexCount,a.UNSIGNED_INT,Uint32Array.BYTES_PER_ELEMENT*t.circleIndexStart),e.triangleCount+=t.circleIndexCount/3)}}}export{n as WGLBrushVTLCircle};