UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 1.85 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{textureBindingBitmap as e}from"../../../definitions.js";import{Technique as i}from"../Technique.js";import{TechniqueType as t}from"../TechniqueType.js";import{BitmapShader as s}from"../shaders/BitmapShader.js";import{TextureSamplingMode as o,CompareFunction as n,StencilOperation as r}from"../../../../../../webgl/enums.js";const a={nearest:{samplingMode:o.NEAREST,mips:!1},bilinear:{samplingMode:o.LINEAR,mips:!1},bicubic:{samplingMode:o.LINEAR,mips:!1},trilinear:{samplingMode:o.LINEAR_MIPMAP_LINEAR,mips:!0}},m=(e,i,t)=>{if("dynamic"===t.samplingMode){const{state:t}=e,s=i.resolution/i.pixelRatio/t.resolution,o=Math.round(e.pixelRatio)!==e.pixelRatio,n=s>1.05||s<.95;return t.rotation||n||o||i.isSourceScaled||i.rotation?a.bilinear:a.nearest}return a[t.samplingMode]};class p extends i{constructor(){super(...arguments),this.name="BrushBitmap",this.type=t.Bitmap,this.shaders={bitmap:new s}}render(i,t){const{context:s,renderingOptions:o,painter:p}=i;for(const c of t.bitmaps){const t=c.texture;if(!c.source||!c.isReady||null==t)continue;const l=m(i,c,o);i.timeline.begin(this.name),p.setPipelineState({depth:!1,stencil:{test:{mask:255,ref:c.stencilRef,compare:n.EQUAL,op:{fail:r.KEEP,zFail:r.KEEP,zPass:r.KEEP}},write:!1},color:{write:[!0,!0,!0,!0],blendMode:"additive"===c.blendFunction?"additive":"composite"}}),c.setSamplingProfile(l);const{coordScale:d,computedOpacity:u,transforms:f}=c,h={texture:{texture:t,unit:e},dvsMat3:f.displayViewScreenMat3,coordScale:d,opacity:u};p.submitDrawMesh(s,{shader:this.shaders.bitmap,uniforms:{config:h},defines:{bicubic:l===a.bicubic},optionalAttributes:null,useComputeBuffer:!1},p.quadMesh),i.timeline.end(this.name)}}}export{p as BitmapTechnique};