@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.68 kB
JavaScript
import{isNone as e}from"../../../../../core/maybe.js";import{ATTRIBUTE_DATA_ANIMATION as t,TEXTURE_BINDING_ATTRIBUTE_DATA_0 as r,TEXTURE_BINDING_ATTRIBUTE_DATA_1 as i}from"../definitions.js";import s from"../VertexStream.js";import{Effect as a}from"./Effect.js";class o extends a{constructor(){super(...arguments),this.defines=[],this._desc={vsPath:"fx/integrate",fsPath:"fx/integrate",attributes:new Map([["a_position",0]])}}dispose(){this._quad&&this._quad.dispose()}bind(){}unbind(){}draw(r,i){if(!i?.size)return;const{context:a,renderingOptions:o}=r;this._quad||(this._quad=new s(a,[0,0,1,0,0,1,1,1]));const n=a.getBoundFramebufferObject(),{x:u,y:m,width:d,height:f}=a.getViewport();i.bindTextures(a);const c=i.getBlock(t);if(e(c))return;const _=c.getFBO(a),l=c.getFBO(a,1);a.setViewport(0,0,i.size,i.size),this._computeDelta(r,l,o.labelsAnimationTime),this._updateAnimationState(r,l,_),a.bindFramebuffer(n),a.setViewport(u,m,d,f)}_computeDelta(e,t,s){const{context:a,painter:o,displayLevel:n}=e,u=o.materialManager.getProgram(this._desc,["delta"]);a.bindFramebuffer(t),a.setClearColor(0,0,0,0),a.clear(a.gl.COLOR_BUFFER_BIT),a.useProgram(u),u.setUniform1i("u_maskTexture",r),u.setUniform1i("u_sourceTexture",i),u.setUniform1f("u_timeDelta",e.deltaTime),u.setUniform1f("u_animationTime",s),u.setUniform1f("u_zoomLevel",Math.round(10*n)),this._quad.draw()}_updateAnimationState(e,t,r){const{context:i,painter:s}=e,a=s.materialManager.getProgram(this._desc,["update"]);i.bindTexture(t.colorTexture,1),i.useProgram(a),a.setUniform1i("u_sourceTexture",1),i.bindFramebuffer(r),i.setClearColor(0,0,0,0),i.clear(i.gl.COLOR_BUFFER_BIT),this._quad.draw()}}export{o as AnimationEffect};