@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 2.53 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
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{PrimitiveType as h,DataType as a}from"../../../../../webgl/enums.js";import{createProgram as n}from"../../../../../webgl/ProgramTemplate.js";import{VertexArrayObject as m}from"../../../../../webgl/VertexArrayObject.js";import{VertexBuffer as l}from"../../../../../webgl/VertexBuffer.js";import{VertexElementDescriptor as g}from"../../../../../webgl/VertexElementDescriptor.js";class _{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(null)}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(null)}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(1,771),e.drawArrays(h.TRIANGLE_STRIP,0,4),e.bindVAO(null)}_initialize(s,i,h){this._width=i,this._height=h;const _=new l(s,[new g("a_position",2,a.BYTE,0,4),new g("a_texcoord",2,a.BYTE,2,4)],new Int8Array([-1,-1,0,0,1,-1,1,0,-1,1,0,1,1,1,1,1]).buffer),d=new m(s,_),c=n(s,o,d.locations),f=n(s,u,d.locations);s.useProgram(c),c.setUniform1i("u_texture",r),c.setUniform1i("u_shade",e),c.setUniform1f("u_sigma",t),s.useProgram(f),f.setUniform1i("u_texture",r),f.setUniform1f("u_sigma",t),this._resources={quadGeometry:_,quadVAO:d,highlightProgram:c,blurProgram:f}}setup(r,e,s){this._resources?(this._width=e,this._height=s):this._initialize(r,e,s)}}export{_ as default};