<!-- SOLUV · part 634 -->
ction Vt(U,pt){return u[U]!==pt?(s.bindFramebuffer(U,pt),u[U]=pt,U===s.DRAW_FRAMEBUFFER&&(u[s.FRAMEBUFFER]=pt),U===s.FRAMEBUFFER&&(u[s.DRAW_FRAMEBUFFER]=pt),!0):!1}function bt(U,pt){let $=p,mt=!1;if(U){$=f.get(pt),$===void 0&&($=[],f.set(pt,$));let St=U.textures;if($.length!==St.length||$[0]!==s.COLOR_ATTACHMENT0){for(let it=0,Ft=St.length;it<Ft;it++)$[it]=s.COLOR_ATTACHMENT0+it;$.length=St.length,mt=!0}}else $[0]!==s.BACK&&($[0]=s.BACK,mt=!0);mt&&s.drawBuffers($)}function Gt(U){return _!==U?(s.useProgram(U),_=U,!0):!1}let he={[$i]:s.FUNC_ADD,[Uf]:s.FUNC_SUBTRACT,[Ff]:s.FUNC_REVERSE_SUBTRACT};he[Of]=s.MIN,he[Bf]=s.MAX;let tt={[zf]:s.ZERO,[Vf]:s.ONE,[kf]:s.SRC_COLOR,[Eu]:s.SRC_ALPHA,[Yf]:s.SRC_ALPHA_SATURATE,[Xf]:s.DST_COLOR,[Hf]:s.DST_ALPHA,[Gf]:s.ONE_MINUS_SRC_COLOR,[Au]:s.ONE_MINUS_SRC_ALPHA,[qf]:s.ONE_MINUS_DST_COLOR,[Wf]:s.ONE_MINUS_DST_ALPHA,[Zf]:s.CONSTANT_COLOR,[Jf]:s.ONE_MINUS_CONSTANT_COLOR,[$f]:s.CONSTANT_ALPHA,[Kf]:s.ONE_MINUS_CONSTANT_ALPHA};function rt(U,pt,$,mt,St,it,Ft,It,ge,oe){if(U===Bn){g===!0&&(xt(s.BLEND),g=!1);return}if(g===!1&&(j(s.BLEND),g=!0),U!==Nf){if(U!==m||oe!==I){if((S!==$i||E!==$i)&&(s.blendEquation(s.FUNC_ADD),S=$i,E=$i),oe)switch(U){case zs:s.blendFuncSeparate(s.ONE,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA);break;case Mu:s.blendFunc(s.ONE,s.ONE);break;case bu:s.blendFuncSeparate(s.ZERO,s.ONE_MINUS_SRC_COLOR,s.ZERO,s.ONE);break;case Tu:s.blendFuncSeparate(s.DST_COLOR,s.ONE_MINUS_SRC_ALPHA,s.ZERO,s.ONE);break;default:Lt("WebGLState: Invalid blending: ",U);break}else switch(U){case zs:s.blendFuncSeparate(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA);break;case Mu:s.blendFuncSeparate(s.SRC_ALPHA,s.ONE,s.ONE,s.ONE);break;case bu:Lt("WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true");break;case Tu:Lt("WebGLState: MultiplyBlending requires material.premultipliedAlpha = true");break;default:Lt("WebGLState: Invalid blending: ",U);break}b=null,x=null,T=null,R=null,v.set(0,0,0),A=0,m=U,I=oe}return}St=St||pt,it=it||$,Ft=Ft||mt,(pt!==S||St!==E)&&(s.blendEquationSeparate(he[pt],he[St]),S=pt,E=St),($!==b||mt!==x||it!==T||Ft!==R)&&(s.blendFuncSeparate(tt[$],tt[mt],tt[it],tt[Ft]),b=$,x=mt,T=it,R=Ft),(It.equals(v)===!1||ge!==A)&&(s.blendColor(It.r,It.g,It.b,ge),v.copy(It),A=ge),m=U,I=!1}function at(U,pt){U.side===On?xt(s.CULL_FACE):j(s.CULL_FACE);let $=U.side===$e;pt&&($=!$),ot($),U.blending===zs&&U.transparent===!1?rt(Bn):rt(U.blending,U.blendEquation,U.blendSrc,U.blendDst,U.blendEquationAlpha,U.blendSrcAlpha,U.blendDstAlpha,U.blendColor,U.blendAlpha,U.premultipliedAlpha),a.setFunc(U.depthFunc),a.setTest(U.depthTest),a.setMask(U.depthWrite),r.setMask(U.colorWrite);let mt=U.stencilWrite;o.setTest(mt),mt&&(o.setMask(U.stencilWriteMask),o.setFunc(U.stencilFunc,U.stencilRef,U.stencilFuncMask),o.setOp(U.stencilFail,U.stencilZFail,U.stencilZPass)),Ot(U.polygonOffset,U.polygonOffsetFactor,U.polygonOffsetUnits),U.alphaToCoverage===!0?j(s.SAMPLE_ALPHA_TO_COVERAGE):xt(s.SAMPLE_ALPHA_TO_COVERAGE)}function ot(U){L!==U&&(U?s.frontFace(s.CW):s.frontFace(s.CCW),L=U)}function ht(U){U!==Pf?(j(s.CULL_FACE),U!==F&&(U===Su?s.cullFace(s.BACK):U===Lf?s.cullFace(s.FRONT):s.cullFace(s.FRONT_AND_BACK))):xt(s.CULL_FACE),F=U}function Bt(U){U!==z&&(W&&s.lineWidth(U),z=U)}function Ot(U,pt,$){U?(j(s.POLYGON_OFFSET_FILL),(D!==pt||B!==$)&&(D=pt,B=$,a.getReversed()&&(pt=-pt),s.polygonOffset(pt,$))):xt(s.POLYGON_OFFSET_FILL)}function Ht(U){U?j(s.SCISSOR_TEST):xt(s.SCISSOR_TEST)}function qt(U){U===void 0&&(U=s.TEXTURE0+X-1),Q!==U&&(s.activeTexture(U),Q=U)}function P(U,pt,$){$===void 0&&(Q===null?$=s.TEXTURE0+X-1:$=Q);let mt=et[$];mt===void 0&&(mt={type:void 0,texture:void 0},et[$]=mt),(mt.type!==U||mt.texture!==pt)&&(Q!==$&&(s.activeTexture($),Q=$),s.bindTexture(U,pt||J[U]),mt.type=U,mt.texture=pt)}function ae(){let U=et[Q];U!==void 0&&U.type!==void 0&&(s.bindTexture(U.type,null),U.type=void 0,U.texture=void 0)}function jt(){try{s.compressedTexImage2D(...arguments)}catch(U){Lt("WebGLState:",U)}}function w(){try{s.compressedTexImage3D(...arguments)}catch(U){Lt("WebGLState:",U)}}function y(){try{s.texSubImage2D(...arguments)}catch(U){Lt("WebGLState:",U)}}function O(){try{s.texSubImage3D(...arguments)}catch(U){Lt("WebGLState:",U)}}function G(){try{s.compressedTexSubImage2D(...arguments)}catch(U){Lt("WebGLState:",U)}}function Y(){try{s.compressedTexSubImage3D(...arguments)}catch(U){Lt("WebGLState:",U)}}function lt(){try{s.texStorage2D(...arguments)}catch(U){Lt("WebGLState:",U)}}function ct(){try{s.texStorage3D(...arguments)}catch(U){Lt("WebGLState:",U)}}function Z(){try{s.texImage2D(...arguments)}catch(U){Lt("WebGLState:",U)}}function K(){try{s.texImage3D(...arguments)}catch(U){Lt("WebGLState:",U)}}function dt(U){return d[U]!==void 0?d[U]:s.getParameter(U)}function Nt(U,pt){d[U]!==pt&&(s.pixelStorei(U,pt),d[U]=pt)}function gt(U){se.equals(U)===!1&&(s.scissor(U.x,U.y,U.z,U.w),se.copy(U))}function ft(U){Qt.equals(U)===!1&&(s.viewport(U.x,U.y,U.z,U.w),Qt