@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.75 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{textureBindingHighlight0 as r,textureBindingHighlight1 as e}from"../../definitions.js";import{alphaToRgbaChannelSelectorMatrix as s,rgbaToRgbaChannelSelectorMatrix as i,sigma as t}from"./parameters.js";import{highlight as o,blur as u}from"../../shaders/HighlightPrograms.js";import{BufferObject as a}from"../../../../../webgl/BufferObject.js";import{PrimitiveType as h,BlendFactor as m,Usage as n,DataType as _}from"../../../../../webgl/enums.js";import{createProgram as g}from"../../../../../webgl/ProgramTemplate.js";import{VertexArrayObject as d}from"../../../../../webgl/VertexArrayObject.js";import{VertexElementDescriptor as l}from"../../../../../webgl/VertexElementDescriptor.js";class c{constructor(){this._width=void 0,this._height=void 0,this._resources=null}dispose(){this._resources&&(this._resources.quadGeometry.dispose(),this._resources.quadVAO.dispose(),this._resources.highlightProgram.dispose(),this._resources.blurProgram.dispose(),this._resources=null)}preBlur(e,i){e.bindTexture(i,r),e.useProgram(this._resources.blurProgram),this._resources.blurProgram.setUniform4fv("u_direction",[1,0,1/this._width,0]),this._resources.blurProgram.setUniformMatrix4fv("u_channelSelector",s),e.bindVAO(this._resources.quadVAO),e.drawArrays(h.TRIANGLE_STRIP,0,4),e.bindVAO()}finalBlur(e,s){e.bindTexture(s,r),e.useProgram(this._resources.blurProgram),this._resources.blurProgram.setUniform4fv("u_direction",[0,1,0,1/this._height]),this._resources.blurProgram.setUniformMatrix4fv("u_channelSelector",i),e.bindVAO(this._resources.quadVAO),e.drawArrays(h.TRIANGLE_STRIP,0,4),e.bindVAO()}renderHighlight(e,s,i){e.bindTexture(s,r),e.useProgram(this._resources.highlightProgram),i.applyHighlightOptions(e,this._resources.highlightProgram),e.bindVAO(this._resources.quadVAO),e.setBlendingEnabled(!0),e.setBlendFunction(m.ONE,m.ONE_MINUS_SRC_ALPHA),e.drawArrays(h.TRIANGLE_STRIP,0,4),e.bindVAO()}_initialize(s,i,h){this._width=i,this._height=h;const m=a.createVertex(s,n.STATIC_DRAW,new Int8Array([-1,-1,0,0,1,-1,1,0,-1,1,0,1,1,1,1,1]).buffer),c=new d(s,new Map([["a_position",0],["a_texcoord",1]]),new Map([["geometry",[new l("a_position",2,_.BYTE,0,4),new l("a_texcoord",2,_.UNSIGNED_BYTE,2,4)]]]),new Map([["geometry",m]])),f=g(s,o),b=g(s,u);s.useProgram(f),f.setUniform1i("u_texture",r),f.setUniform1i("u_shade",e),f.setUniform1f("u_sigma",t),s.useProgram(b),b.setUniform1i("u_texture",r),b.setUniform1f("u_sigma",t),this._resources={quadGeometry:m,quadVAO:c,highlightProgram:f,blurProgram:b}}setup(r,e,s){this._resources?(this._width=e,this._height=s):this._initialize(r,e,s)}}export{c as default};