5 lines
44 KiB
JavaScript
5 lines
44 KiB
JavaScript
var u0=Object.defineProperty;var u=(C,M)=>{for(var N in M)u0(C,N,{get:M[N],enumerable:!0,configurable:!0,set:(I)=>M[N]=()=>I})};var f={};u(f,{str:()=>{{return mC}},squaredLength:()=>{{return d0}},sqrLen:()=>{{return NM}},sqlerp:()=>{{return WM}},slerp:()=>{{return e}},setAxisAngle:()=>{{return h0}},setAxes:()=>{{return AM}},set:()=>{{return oC}},scale:()=>{{return g0}},rotationTo:()=>{{return QM}},rotateZ:()=>{{return lC}},rotateY:()=>{{return iC}},rotateX:()=>{{return dC}},random:()=>{{return yC}},pow:()=>{{return zC}},normalize:()=>{{return C0}},multiply:()=>{{return q0}},mul:()=>{{return aC}},ln:()=>{{return w0}},lerp:()=>{{return CM}},length:()=>{{return f0}},len:()=>{{return MM}},invert:()=>{{return rC}},identity:()=>{{return gC}},getAxisAngle:()=>{{return nC}},getAngle:()=>{{return fC}},fromValues:()=>{{return bC}},fromMat3:()=>{{return v0}},fromEuler:()=>{{return sC}},exp:()=>{{return p0}},exactEquals:()=>{{return IM}},equals:()=>{{return VM}},dot:()=>{{return n0}},create:()=>{{return a}},copy:()=>{{return uC}},conjugate:()=>{{return xC}},clone:()=>{{return eC}},calculateW:()=>{{return cC}},add:()=>{{return tC}}});var F=0.000001,k=typeof Float32Array!=="undefined"?Float32Array:Array,n=Math.random,QN=Math.PI/180;if(!Math.hypot)Math.hypot=function(){var C=0,M=arguments.length;while(M--)C+=arguments[M]*arguments[M];return Math.sqrt(C)};function X0(){var C=new k(9);if(k!=Float32Array)C[1]=0,C[2]=0,C[3]=0,C[5]=0,C[6]=0,C[7]=0;return C[0]=1,C[4]=1,C[8]=1,C}var i={};u(i,{zero:()=>{{return FC}},transformQuat:()=>{{return HC}},transformMat4:()=>{{return LC}},transformMat3:()=>{{return PC}},subtract:()=>{{return Z0}},sub:()=>{{return _C}},str:()=>{{return OC}},squaredLength:()=>{{return P0}},squaredDistance:()=>{{return L0}},sqrLen:()=>{{return qC}},sqrDist:()=>{{return hC}},set:()=>{{return CC}},scaleAndAdd:()=>{{return EC}},scale:()=>{{return AC}},round:()=>{{return WC}},rotateZ:()=>{{return GC}},rotateY:()=>{{return DC}},rotateX:()=>{{return JC}},random:()=>{{return KC}},normalize:()=>{{return o}},negate:()=>{{return XC}},multiply:()=>{{return $0}},mul:()=>{{return TC}},min:()=>{{return VC}},max:()=>{{return QC}},lerp:()=>{{return ZC}},length:()=>{{return Y0}},len:()=>{{return t}},inverse:()=>{{return YC}},hermite:()=>{{return $C}},fromValues:()=>{{return s}},forEach:()=>{{return pC}},floor:()=>{{return IC}},exactEquals:()=>{{return RC}},equals:()=>{{return kC}},dot:()=>{{return m}},divide:()=>{{return B0}},div:()=>{{return jC}},distance:()=>{{return K0}},dist:()=>{{return SC}},cross:()=>{{return r}},create:()=>{{return x}},copy:()=>{{return a0}},clone:()=>{{return t0}},ceil:()=>{{return NC}},bezier:()=>{{return BC}},angle:()=>{{return UC}},add:()=>{{return MC}}});function x(){var C=new k(3);if(k!=Float32Array)C[0]=0,C[1]=0,C[2]=0;return C}function t0(C){var M=new k(3);return M[0]=C[0],M[1]=C[1],M[2]=C[2],M}function Y0(C){var M=C[0],N=C[1],I=C[2];return Math.hypot(M,N,I)}function s(C,M,N){var I=new k(3);return I[0]=C,I[1]=M,I[2]=N,I}function a0(C,M){return C[0]=M[0],C[1]=M[1],C[2]=M[2],C}function CC(C,M,N,I){return C[0]=M,C[1]=N,C[2]=I,C}function MC(C,M,N){return C[0]=M[0]+N[0],C[1]=M[1]+N[1],C[2]=M[2]+N[2],C}function Z0(C,M,N){return C[0]=M[0]-N[0],C[1]=M[1]-N[1],C[2]=M[2]-N[2],C}function $0(C,M,N){return C[0]=M[0]*N[0],C[1]=M[1]*N[1],C[2]=M[2]*N[2],C}function B0(C,M,N){return C[0]=M[0]/N[0],C[1]=M[1]/N[1],C[2]=M[2]/N[2],C}function NC(C,M){return C[0]=Math.ceil(M[0]),C[1]=Math.ceil(M[1]),C[2]=Math.ceil(M[2]),C}function IC(C,M){return C[0]=Math.floor(M[0]),C[1]=Math.floor(M[1]),C[2]=Math.floor(M[2]),C}function VC(C,M,N){return C[0]=Math.min(M[0],N[0]),C[1]=Math.min(M[1],N[1]),C[2]=Math.min(M[2],N[2]),C}function QC(C,M,N){return C[0]=Math.max(M[0],N[0]),C[1]=Math.max(M[1],N[1]),C[2]=Math.max(M[2],N[2]),C}function WC(C,M){return C[0]=Math.round(M[0]),C[1]=Math.round(M[1]),C[2]=Math.round(M[2]),C}function AC(C,M,N){return C[0]=M[0]*N,C[1]=M[1]*N,C[2]=M[2]*N,C}function EC(C,M,N,I){return C[0]=M[0]+N[0]*I,C[1]=M[1]+N[1]*I,C[2]=M[2]+N[2]*I,C}function K0(C,M){var N=M[0]-C[0],I=M[1]-C[1],V=M[2]-C[2];return Math.hypot(N,I,V)}function L0(C,M){var N=M[0]-C[0],I=M[1]-C[1],V=M[2]-C[2];return N*N+I*I+V*V}function P0(C){var M=C[0],N=C[1],I=C[2];return M*M+N*N+I*I}function XC(C,M){return C[0]=-M[0],C[1]=-M[1],C[2]=-M[2],C}function YC(C,M){return C[0]=1/M[0],C[1]=1/M[1],C[2]=1/M[2],C}function o(C,M){var N=M[0],I=M[1],V=M[2],Q=N*N+I*I+V*V;if(Q>0)Q=1/Math.sqrt(Q);return C[0]=M[0]*Q,C[1]=M[1]*Q,C[2]=M[2]*Q,C}function m(C,M){return C[0]*M[0]+C[1]*M[1]+C[2]*M[2]}function r(C,M,N){var I=M[0],V=M[1],Q=M[2],W=N[0],A=N[1],E=N[2];return C[0]=V*E-Q*A,C[1]=Q*W-I*E,C[2]=I*A-V*W,C}function ZC(C,M,N,I){var V=M[0],Q=M[1],W=M[2];return C[0]=V+I*(N[0]-V),C[1]=Q+I*(N[1]-Q),C[2]=W+I*(N[2]-W),C}function $C(C,M,N,I,V,Q){var W=Q*Q,A=W*(2*Q-3)+1,E=W*(Q-2)+Q,X=W*(Q-1),Y=W*(3-2*Q);return C[0]=M[0]*A+N[0]*E+I[0]*X+V[0]*Y,C[1]=M[1]*A+N[1]*E+I[1]*X+V[1]*Y,C[2]=M[2]*A+N[2]*E+I[2]*X+V[2]*Y,C}function BC(C,M,N,I,V,Q){var W=1-Q,A=W*W,E=Q*Q,X=A*W,Y=3*Q*A,$=3*E*W,K=E*Q;return C[0]=M[0]*X+N[0]*Y+I[0]*$+V[0]*K,C[1]=M[1]*X+N[1]*Y+I[1]*$+V[1]*K,C[2]=M[2]*X+N[2]*Y+I[2]*$+V[2]*K,C}function KC(C,M){M=M||1;var N=n()*2*Math.PI,I=n()*2-1,V=Math.sqrt(1-I*I)*M;return C[0]=Math.cos(N)*V,C[1]=Math.sin(N)*V,C[2]=I*M,C}function LC(C,M,N){var I=M[0],V=M[1],Q=M[2],W=N[3]*I+N[7]*V+N[11]*Q+N[15];return W=W||1,C[0]=(N[0]*I+N[4]*V+N[8]*Q+N[12])/W,C[1]=(N[1]*I+N[5]*V+N[9]*Q+N[13])/W,C[2]=(N[2]*I+N[6]*V+N[10]*Q+N[14])/W,C}function PC(C,M,N){var I=M[0],V=M[1],Q=M[2];return C[0]=I*N[0]+V*N[3]+Q*N[6],C[1]=I*N[1]+V*N[4]+Q*N[7],C[2]=I*N[2]+V*N[5]+Q*N[8],C}function HC(C,M,N){var I=N[0],V=N[1],Q=N[2],W=N[3],A=M[0],E=M[1],X=M[2],Y=V*X-Q*E,$=Q*A-I*X,K=I*E-V*A,B=V*K-Q*$,P=Q*Y-I*K,L=I*$-V*Y,Z=W*2;return Y*=Z,$*=Z,K*=Z,B*=2,P*=2,L*=2,C[0]=A+Y+B,C[1]=E+$+P,C[2]=X+K+L,C}function JC(C,M,N,I){var V=[],Q=[];return V[0]=M[0]-N[0],V[1]=M[1]-N[1],V[2]=M[2]-N[2],Q[0]=V[0],Q[1]=V[1]*Math.cos(I)-V[2]*Math.sin(I),Q[2]=V[1]*Math.sin(I)+V[2]*Math.cos(I),C[0]=Q[0]+N[0],C[1]=Q[1]+N[1],C[2]=Q[2]+N[2],C}function DC(C,M,N,I){var V=[],Q=[];return V[0]=M[0]-N[0],V[1]=M[1]-N[1],V[2]=M[2]-N[2],Q[0]=V[2]*Math.sin(I)+V[0]*Math.cos(I),Q[1]=V[1],Q[2]=V[2]*Math.cos(I)-V[0]*Math.sin(I),C[0]=Q[0]+N[0],C[1]=Q[1]+N[1],C[2]=Q[2]+N[2],C}function GC(C,M,N,I){var V=[],Q=[];return V[0]=M[0]-N[0],V[1]=M[1]-N[1],V[2]=M[2]-N[2],Q[0]=V[0]*Math.cos(I)-V[1]*Math.sin(I),Q[1]=V[0]*Math.sin(I)+V[1]*Math.cos(I),Q[2]=V[2],C[0]=Q[0]+N[0],C[1]=Q[1]+N[1],C[2]=Q[2]+N[2],C}function UC(C,M){var N=C[0],I=C[1],V=C[2],Q=M[0],W=M[1],A=M[2],E=Math.sqrt(N*N+I*I+V*V),X=Math.sqrt(Q*Q+W*W+A*A),Y=E*X,$=Y&&m(C,M)/Y;return Math.acos(Math.min(Math.max($,-1),1))}function FC(C){return C[0]=0,C[1]=0,C[2]=0,C}function OC(C){return"vec3("+C[0]+", "+C[1]+", "+C[2]+")"}function RC(C,M){return C[0]===M[0]&&C[1]===M[1]&&C[2]===M[2]}function kC(C,M){var N=C[0],I=C[1],V=C[2],Q=M[0],W=M[1],A=M[2];return Math.abs(N-Q)<=F*Math.max(1,Math.abs(N),Math.abs(Q))&&Math.abs(I-W)<=F*Math.max(1,Math.abs(I),Math.abs(W))&&Math.abs(V-A)<=F*Math.max(1,Math.abs(V),Math.abs(A))}var _C=Z0,TC=$0,jC=B0,SC=K0,hC=L0,t=Y0,qC=P0,pC=function(){var C=x();return function(M,N,I,V,Q,W){var A,E;if(!N)N=3;if(!I)I=0;if(V)E=Math.min(V*N+I,M.length);else E=M.length;for(A=I;A<E;A+=N)C[0]=M[A],C[1]=M[A+1],C[2]=M[A+2],Q(C,C,W),M[A]=C[0],M[A+1]=C[1],M[A+2]=C[2];return M}}();function wC(){var C=new k(4);if(k!=Float32Array)C[0]=0,C[1]=0,C[2]=0,C[3]=0;return C}function H0(C){var M=new k(4);return M[0]=C[0],M[1]=C[1],M[2]=C[2],M[3]=C[3],M}function J0(C,M,N,I){var V=new k(4);return V[0]=C,V[1]=M,V[2]=N,V[3]=I,V}function D0(C,M){return C[0]=M[0],C[1]=M[1],C[2]=M[2],C[3]=M[3],C}function G0(C,M,N,I,V){return C[0]=M,C[1]=N,C[2]=I,C[3]=V,C}function U0(C,M,N){return C[0]=M[0]+N[0],C[1]=M[1]+N[1],C[2]=M[2]+N[2],C[3]=M[3]+N[3],C}function F0(C,M,N){return C[0]=M[0]*N,C[1]=M[1]*N,C[2]=M[2]*N,C[3]=M[3]*N,C}function O0(C){var M=C[0],N=C[1],I=C[2],V=C[3];return Math.hypot(M,N,I,V)}function R0(C){var M=C[0],N=C[1],I=C[2],V=C[3];return M*M+N*N+I*I+V*V}function k0(C,M){var N=M[0],I=M[1],V=M[2],Q=M[3],W=N*N+I*I+V*V+Q*Q;if(W>0)W=1/Math.sqrt(W);return C[0]=N*W,C[1]=I*W,C[2]=V*W,C[3]=Q*W,C}function _0(C,M){return C[0]*M[0]+C[1]*M[1]+C[2]*M[2]+C[3]*M[3]}function T0(C,M,N,I){var V=M[0],Q=M[1],W=M[2],A=M[3];return C[0]=V+I*(N[0]-V),C[1]=Q+I*(N[1]-Q),C[2]=W+I*(N[2]-W),C[3]=A+I*(N[3]-A),C}function j0(C,M){return C[0]===M[0]&&C[1]===M[1]&&C[2]===M[2]&&C[3]===M[3]}function S0(C,M){var N=C[0],I=C[1],V=C[2],Q=C[3],W=M[0],A=M[1],E=M[2],X=M[3];return Math.abs(N-W)<=F*Math.max(1,Math.abs(N),Math.abs(W))&&Math.abs(I-A)<=F*Math.max(1,Math.abs(I),Math.abs(A))&&Math.abs(V-E)<=F*Math.max(1,Math.abs(V),Math.abs(E))&&Math.abs(Q-X)<=F*Math.max(1,Math.abs(Q),Math.abs(X))}var WN=function(){var C=wC();return function(M,N,I,V,Q,W){var A,E;if(!N)N=4;if(!I)I=0;if(V)E=Math.min(V*N+I,M.length);else E=M.length;for(A=I;A<E;A+=N)C[0]=M[A],C[1]=M[A+1],C[2]=M[A+2],C[3]=M[A+3],Q(C,C,W),M[A]=C[0],M[A+1]=C[1],M[A+2]=C[2],M[A+3]=C[3];return M}}();function a(){var C=new k(4);if(k!=Float32Array)C[0]=0,C[1]=0,C[2]=0;return C[3]=1,C}function gC(C){return C[0]=0,C[1]=0,C[2]=0,C[3]=1,C}function h0(C,M,N){N=N*0.5;var I=Math.sin(N);return C[0]=I*M[0],C[1]=I*M[1],C[2]=I*M[2],C[3]=Math.cos(N),C}function nC(C,M){var N=Math.acos(M[3])*2,I=Math.sin(N/2);if(I>F)C[0]=M[0]/I,C[1]=M[1]/I,C[2]=M[2]/I;else C[0]=1,C[1]=0,C[2]=0;return N}function fC(C,M){var N=n0(C,M);return Math.acos(2*N*N-1)}function q0(C,M,N){var I=M[0],V=M[1],Q=M[2],W=M[3],A=N[0],E=N[1],X=N[2],Y=N[3];return C[0]=I*Y+W*A+V*X-Q*E,C[1]=V*Y+W*E+Q*A-I*X,C[2]=Q*Y+W*X+I*E-V*A,C[3]=W*Y-I*A-V*E-Q*X,C}function dC(C,M,N){N*=0.5;var I=M[0],V=M[1],Q=M[2],W=M[3],A=Math.sin(N),E=Math.cos(N);return C[0]=I*E+W*A,C[1]=V*E+Q*A,C[2]=Q*E-V*A,C[3]=W*E-I*A,C}function iC(C,M,N){N*=0.5;var I=M[0],V=M[1],Q=M[2],W=M[3],A=Math.sin(N),E=Math.cos(N);return C[0]=I*E-Q*A,C[1]=V*E+W*A,C[2]=Q*E+I*A,C[3]=W*E-V*A,C}function lC(C,M,N){N*=0.5;var I=M[0],V=M[1],Q=M[2],W=M[3],A=Math.sin(N),E=Math.cos(N);return C[0]=I*E+V*A,C[1]=V*E-I*A,C[2]=Q*E+W*A,C[3]=W*E-Q*A,C}function cC(C,M){var N=M[0],I=M[1],V=M[2];return C[0]=N,C[1]=I,C[2]=V,C[3]=Math.sqrt(Math.abs(1-N*N-I*I-V*V)),C}function p0(C,M){var N=M[0],I=M[1],V=M[2],Q=M[3],W=Math.sqrt(N*N+I*I+V*V),A=Math.exp(Q),E=W>0?A*Math.sin(W)/W:0;return C[0]=N*E,C[1]=I*E,C[2]=V*E,C[3]=A*Math.cos(W),C}function w0(C,M){var N=M[0],I=M[1],V=M[2],Q=M[3],W=Math.sqrt(N*N+I*I+V*V),A=W>0?Math.atan2(W,Q)/W:0;return C[0]=N*A,C[1]=I*A,C[2]=V*A,C[3]=0.5*Math.log(N*N+I*I+V*V+Q*Q),C}function zC(C,M,N){return w0(C,M),g0(C,C,N),p0(C,C),C}function e(C,M,N,I){var V=M[0],Q=M[1],W=M[2],A=M[3],E=N[0],X=N[1],Y=N[2],$=N[3],K,B,P,L,Z;if(B=V*E+Q*X+W*Y+A*$,B<0)B=-B,E=-E,X=-X,Y=-Y,$=-$;if(1-B>F)K=Math.acos(B),P=Math.sin(K),L=Math.sin((1-I)*K)/P,Z=Math.sin(I*K)/P;else L=1-I,Z=I;return C[0]=L*V+Z*E,C[1]=L*Q+Z*X,C[2]=L*W+Z*Y,C[3]=L*A+Z*$,C}function yC(C){var M=n(),N=n(),I=n(),V=Math.sqrt(1-M),Q=Math.sqrt(M);return C[0]=V*Math.sin(2*Math.PI*N),C[1]=V*Math.cos(2*Math.PI*N),C[2]=Q*Math.sin(2*Math.PI*I),C[3]=Q*Math.cos(2*Math.PI*I),C}function rC(C,M){var N=M[0],I=M[1],V=M[2],Q=M[3],W=N*N+I*I+V*V+Q*Q,A=W?1/W:0;return C[0]=-N*A,C[1]=-I*A,C[2]=-V*A,C[3]=Q*A,C}function xC(C,M){return C[0]=-M[0],C[1]=-M[1],C[2]=-M[2],C[3]=M[3],C}function v0(C,M){var N=M[0]+M[4]+M[8],I;if(N>0)I=Math.sqrt(N+1),C[3]=0.5*I,I=0.5/I,C[0]=(M[5]-M[7])*I,C[1]=(M[6]-M[2])*I,C[2]=(M[1]-M[3])*I;else{var V=0;if(M[4]>M[0])V=1;if(M[8]>M[V*3+V])V=2;var Q=(V+1)%3,W=(V+2)%3;I=Math.sqrt(M[V*3+V]-M[Q*3+Q]-M[W*3+W]+1),C[V]=0.5*I,I=0.5/I,C[3]=(M[Q*3+W]-M[W*3+Q])*I,C[Q]=(M[Q*3+V]+M[V*3+Q])*I,C[W]=(M[W*3+V]+M[V*3+W])*I}return C}function sC(C,M,N,I){var V=0.5*Math.PI/180;M*=V,N*=V,I*=V;var Q=Math.sin(M),W=Math.cos(M),A=Math.sin(N),E=Math.cos(N),X=Math.sin(I),Y=Math.cos(I);return C[0]=Q*E*Y-W*A*X,C[1]=W*A*Y+Q*E*X,C[2]=W*E*X-Q*A*Y,C[3]=W*E*Y+Q*A*X,C}function mC(C){return"quat("+C[0]+", "+C[1]+", "+C[2]+", "+C[3]+")"}var eC=H0,bC=J0,uC=D0,oC=G0,tC=U0,aC=q0,g0=F0,n0=_0,CM=T0,f0=O0,MM=f0,d0=R0,NM=d0,C0=k0,IM=j0,VM=S0,QM=function(){var C=x(),M=s(1,0,0),N=s(0,1,0);return function(I,V,Q){var W=m(V,Q);if(W<-0.999999){if(r(C,M,V),t(C)<0.000001)r(C,N,V);return o(C,C),h0(I,C,Math.PI),I}else if(W>0.999999)return I[0]=0,I[1]=0,I[2]=0,I[3]=1,I;else return r(C,V,Q),I[0]=C[0],I[1]=C[1],I[2]=C[2],I[3]=1+W,C0(I,I)}}(),WM=function(){var C=a(),M=a();return function(N,I,V,Q,W,A){return e(C,I,W,A),e(M,V,Q,A),e(N,C,M,2*A*(1-A)),N}}(),AM=function(){var C=X0();return function(M,N,I,V){return C[0]=I[0],C[3]=I[1],C[6]=I[2],C[1]=V[0],C[4]=V[1],C[7]=V[2],C[2]=-N[0],C[5]=-N[1],C[8]=-N[2],C0(M,v0(M,C))}}();var w={};u(w,{transpose:()=>{{return BM}},translate:()=>{{return HM}},targetTo:()=>{{return zM}},subtract:()=>{{return x0}},sub:()=>{{return oM}},str:()=>{{return yM}},set:()=>{{return $M}},scale:()=>{{return JM}},rotateZ:()=>{{return FM}},rotateY:()=>{{return UM}},rotateX:()=>{{return GM}},rotate:()=>{{return DM}},perspectiveZO:()=>{{return fM}},perspectiveNO:()=>{{return y0}},perspectiveFromFieldOfView:()=>{{return dM}},perspective:()=>{{return nM}},orthoZO:()=>{{return lM}},orthoNO:()=>{{return r0}},ortho:()=>{{return iM}},multiplyScalarAndAdd:()=>{{return mM}},multiplyScalar:()=>{{return sM}},multiply:()=>{{return l0}},mul:()=>{{return uM}},lookAt:()=>{{return cM}},invert:()=>{{return KM}},identity:()=>{{return i0}},getTranslation:()=>{{return hM}},getScaling:()=>{{return z0}},getRotation:()=>{{return qM}},frustum:()=>{{return gM}},fromZRotation:()=>{{return jM}},fromYRotation:()=>{{return TM}},fromXRotation:()=>{{return _M}},fromValues:()=>{{return ZM}},fromTranslation:()=>{{return OM}},fromScaling:()=>{{return RM}},fromRotationTranslationScaleOrigin:()=>{{return wM}},fromRotationTranslationScale:()=>{{return pM}},fromRotationTranslation:()=>{{return c0}},fromRotation:()=>{{return kM}},fromQuat2:()=>{{return SM}},fromQuat:()=>{{return vM}},frob:()=>{{return rM}},exactEquals:()=>{{return eM}},equals:()=>{{return bM}},determinant:()=>{{return PM}},create:()=>{{return EM}},copy:()=>{{return YM}},clone:()=>{{return XM}},adjoint:()=>{{return LM}},add:()=>{{return xM}}});function EM(){var C=new k(16);if(k!=Float32Array)C[1]=0,C[2]=0,C[3]=0,C[4]=0,C[6]=0,C[7]=0,C[8]=0,C[9]=0,C[11]=0,C[12]=0,C[13]=0,C[14]=0;return C[0]=1,C[5]=1,C[10]=1,C[15]=1,C}function XM(C){var M=new k(16);return M[0]=C[0],M[1]=C[1],M[2]=C[2],M[3]=C[3],M[4]=C[4],M[5]=C[5],M[6]=C[6],M[7]=C[7],M[8]=C[8],M[9]=C[9],M[10]=C[10],M[11]=C[11],M[12]=C[12],M[13]=C[13],M[14]=C[14],M[15]=C[15],M}function YM(C,M){return C[0]=M[0],C[1]=M[1],C[2]=M[2],C[3]=M[3],C[4]=M[4],C[5]=M[5],C[6]=M[6],C[7]=M[7],C[8]=M[8],C[9]=M[9],C[10]=M[10],C[11]=M[11],C[12]=M[12],C[13]=M[13],C[14]=M[14],C[15]=M[15],C}function ZM(C,M,N,I,V,Q,W,A,E,X,Y,$,K,B,P,L){var Z=new k(16);return Z[0]=C,Z[1]=M,Z[2]=N,Z[3]=I,Z[4]=V,Z[5]=Q,Z[6]=W,Z[7]=A,Z[8]=E,Z[9]=X,Z[10]=Y,Z[11]=$,Z[12]=K,Z[13]=B,Z[14]=P,Z[15]=L,Z}function $M(C,M,N,I,V,Q,W,A,E,X,Y,$,K,B,P,L,Z){return C[0]=M,C[1]=N,C[2]=I,C[3]=V,C[4]=Q,C[5]=W,C[6]=A,C[7]=E,C[8]=X,C[9]=Y,C[10]=$,C[11]=K,C[12]=B,C[13]=P,C[14]=L,C[15]=Z,C}function i0(C){return C[0]=1,C[1]=0,C[2]=0,C[3]=0,C[4]=0,C[5]=1,C[6]=0,C[7]=0,C[8]=0,C[9]=0,C[10]=1,C[11]=0,C[12]=0,C[13]=0,C[14]=0,C[15]=1,C}function BM(C,M){if(C===M){var N=M[1],I=M[2],V=M[3],Q=M[6],W=M[7],A=M[11];C[1]=M[4],C[2]=M[8],C[3]=M[12],C[4]=N,C[6]=M[9],C[7]=M[13],C[8]=I,C[9]=Q,C[11]=M[14],C[12]=V,C[13]=W,C[14]=A}else C[0]=M[0],C[1]=M[4],C[2]=M[8],C[3]=M[12],C[4]=M[1],C[5]=M[5],C[6]=M[9],C[7]=M[13],C[8]=M[2],C[9]=M[6],C[10]=M[10],C[11]=M[14],C[12]=M[3],C[13]=M[7],C[14]=M[11],C[15]=M[15];return C}function KM(C,M){var N=M[0],I=M[1],V=M[2],Q=M[3],W=M[4],A=M[5],E=M[6],X=M[7],Y=M[8],$=M[9],K=M[10],B=M[11],P=M[12],L=M[13],Z=M[14],H=M[15],O=N*A-I*W,U=N*E-V*W,G=N*X-Q*W,J=I*E-V*A,D=I*X-Q*A,S=V*X-Q*E,_=Y*L-$*P,T=Y*Z-K*P,j=Y*H-B*P,h=$*Z-K*L,q=$*H-B*L,p=K*H-B*Z,R=O*p-U*q+G*h+J*j-D*T+S*_;if(!R)return null;return R=1/R,C[0]=(A*p-E*q+X*h)*R,C[1]=(V*q-I*p-Q*h)*R,C[2]=(L*S-Z*D+H*J)*R,C[3]=(K*D-$*S-B*J)*R,C[4]=(E*j-W*p-X*T)*R,C[5]=(N*p-V*j+Q*T)*R,C[6]=(Z*G-P*S-H*U)*R,C[7]=(Y*S-K*G+B*U)*R,C[8]=(W*q-A*j+X*_)*R,C[9]=(I*j-N*q-Q*_)*R,C[10]=(P*D-L*G+H*O)*R,C[11]=($*G-Y*D-B*O)*R,C[12]=(A*T-W*h-E*_)*R,C[13]=(N*h-I*T+V*_)*R,C[14]=(L*U-P*J-Z*O)*R,C[15]=(Y*J-$*U+K*O)*R,C}function LM(C,M){var N=M[0],I=M[1],V=M[2],Q=M[3],W=M[4],A=M[5],E=M[6],X=M[7],Y=M[8],$=M[9],K=M[10],B=M[11],P=M[12],L=M[13],Z=M[14],H=M[15];return C[0]=A*(K*H-B*Z)-$*(E*H-X*Z)+L*(E*B-X*K),C[1]=-(I*(K*H-B*Z)-$*(V*H-Q*Z)+L*(V*B-Q*K)),C[2]=I*(E*H-X*Z)-A*(V*H-Q*Z)+L*(V*X-Q*E),C[3]=-(I*(E*B-X*K)-A*(V*B-Q*K)+$*(V*X-Q*E)),C[4]=-(W*(K*H-B*Z)-Y*(E*H-X*Z)+P*(E*B-X*K)),C[5]=N*(K*H-B*Z)-Y*(V*H-Q*Z)+P*(V*B-Q*K),C[6]=-(N*(E*H-X*Z)-W*(V*H-Q*Z)+P*(V*X-Q*E)),C[7]=N*(E*B-X*K)-W*(V*B-Q*K)+Y*(V*X-Q*E),C[8]=W*($*H-B*L)-Y*(A*H-X*L)+P*(A*B-X*$),C[9]=-(N*($*H-B*L)-Y*(I*H-Q*L)+P*(I*B-Q*$)),C[10]=N*(A*H-X*L)-W*(I*H-Q*L)+P*(I*X-Q*A),C[11]=-(N*(A*B-X*$)-W*(I*B-Q*$)+Y*(I*X-Q*A)),C[12]=-(W*($*Z-K*L)-Y*(A*Z-E*L)+P*(A*K-E*$)),C[13]=N*($*Z-K*L)-Y*(I*Z-V*L)+P*(I*K-V*$),C[14]=-(N*(A*Z-E*L)-W*(I*Z-V*L)+P*(I*E-V*A)),C[15]=N*(A*K-E*$)-W*(I*K-V*$)+Y*(I*E-V*A),C}function PM(C){var M=C[0],N=C[1],I=C[2],V=C[3],Q=C[4],W=C[5],A=C[6],E=C[7],X=C[8],Y=C[9],$=C[10],K=C[11],B=C[12],P=C[13],L=C[14],Z=C[15],H=M*W-N*Q,O=M*A-I*Q,U=M*E-V*Q,G=N*A-I*W,J=N*E-V*W,D=I*E-V*A,S=X*P-Y*B,_=X*L-$*B,T=X*Z-K*B,j=Y*L-$*P,h=Y*Z-K*P,q=$*Z-K*L;return H*q-O*h+U*j+G*T-J*_+D*S}function l0(C,M,N){var I=M[0],V=M[1],Q=M[2],W=M[3],A=M[4],E=M[5],X=M[6],Y=M[7],$=M[8],K=M[9],B=M[10],P=M[11],L=M[12],Z=M[13],H=M[14],O=M[15],U=N[0],G=N[1],J=N[2],D=N[3];return C[0]=U*I+G*A+J*$+D*L,C[1]=U*V+G*E+J*K+D*Z,C[2]=U*Q+G*X+J*B+D*H,C[3]=U*W+G*Y+J*P+D*O,U=N[4],G=N[5],J=N[6],D=N[7],C[4]=U*I+G*A+J*$+D*L,C[5]=U*V+G*E+J*K+D*Z,C[6]=U*Q+G*X+J*B+D*H,C[7]=U*W+G*Y+J*P+D*O,U=N[8],G=N[9],J=N[10],D=N[11],C[8]=U*I+G*A+J*$+D*L,C[9]=U*V+G*E+J*K+D*Z,C[10]=U*Q+G*X+J*B+D*H,C[11]=U*W+G*Y+J*P+D*O,U=N[12],G=N[13],J=N[14],D=N[15],C[12]=U*I+G*A+J*$+D*L,C[13]=U*V+G*E+J*K+D*Z,C[14]=U*Q+G*X+J*B+D*H,C[15]=U*W+G*Y+J*P+D*O,C}function HM(C,M,N){var I=N[0],V=N[1],Q=N[2],W,A,E,X,Y,$,K,B,P,L,Z,H;if(M===C)C[12]=M[0]*I+M[4]*V+M[8]*Q+M[12],C[13]=M[1]*I+M[5]*V+M[9]*Q+M[13],C[14]=M[2]*I+M[6]*V+M[10]*Q+M[14],C[15]=M[3]*I+M[7]*V+M[11]*Q+M[15];else W=M[0],A=M[1],E=M[2],X=M[3],Y=M[4],$=M[5],K=M[6],B=M[7],P=M[8],L=M[9],Z=M[10],H=M[11],C[0]=W,C[1]=A,C[2]=E,C[3]=X,C[4]=Y,C[5]=$,C[6]=K,C[7]=B,C[8]=P,C[9]=L,C[10]=Z,C[11]=H,C[12]=W*I+Y*V+P*Q+M[12],C[13]=A*I+$*V+L*Q+M[13],C[14]=E*I+K*V+Z*Q+M[14],C[15]=X*I+B*V+H*Q+M[15];return C}function JM(C,M,N){var I=N[0],V=N[1],Q=N[2];return C[0]=M[0]*I,C[1]=M[1]*I,C[2]=M[2]*I,C[3]=M[3]*I,C[4]=M[4]*V,C[5]=M[5]*V,C[6]=M[6]*V,C[7]=M[7]*V,C[8]=M[8]*Q,C[9]=M[9]*Q,C[10]=M[10]*Q,C[11]=M[11]*Q,C[12]=M[12],C[13]=M[13],C[14]=M[14],C[15]=M[15],C}function DM(C,M,N,I){var V=I[0],Q=I[1],W=I[2],A=Math.hypot(V,Q,W),E,X,Y,$,K,B,P,L,Z,H,O,U,G,J,D,S,_,T,j,h,q,p,R,v;if(A<F)return null;if(A=1/A,V*=A,Q*=A,W*=A,E=Math.sin(N),X=Math.cos(N),Y=1-X,$=M[0],K=M[1],B=M[2],P=M[3],L=M[4],Z=M[5],H=M[6],O=M[7],U=M[8],G=M[9],J=M[10],D=M[11],S=V*V*Y+X,_=Q*V*Y+W*E,T=W*V*Y-Q*E,j=V*Q*Y-W*E,h=Q*Q*Y+X,q=W*Q*Y+V*E,p=V*W*Y+Q*E,R=Q*W*Y-V*E,v=W*W*Y+X,C[0]=$*S+L*_+U*T,C[1]=K*S+Z*_+G*T,C[2]=B*S+H*_+J*T,C[3]=P*S+O*_+D*T,C[4]=$*j+L*h+U*q,C[5]=K*j+Z*h+G*q,C[6]=B*j+H*h+J*q,C[7]=P*j+O*h+D*q,C[8]=$*p+L*R+U*v,C[9]=K*p+Z*R+G*v,C[10]=B*p+H*R+J*v,C[11]=P*p+O*R+D*v,M!==C)C[12]=M[12],C[13]=M[13],C[14]=M[14],C[15]=M[15];return C}function GM(C,M,N){var I=Math.sin(N),V=Math.cos(N),Q=M[4],W=M[5],A=M[6],E=M[7],X=M[8],Y=M[9],$=M[10],K=M[11];if(M!==C)C[0]=M[0],C[1]=M[1],C[2]=M[2],C[3]=M[3],C[12]=M[12],C[13]=M[13],C[14]=M[14],C[15]=M[15];return C[4]=Q*V+X*I,C[5]=W*V+Y*I,C[6]=A*V+$*I,C[7]=E*V+K*I,C[8]=X*V-Q*I,C[9]=Y*V-W*I,C[10]=$*V-A*I,C[11]=K*V-E*I,C}function UM(C,M,N){var I=Math.sin(N),V=Math.cos(N),Q=M[0],W=M[1],A=M[2],E=M[3],X=M[8],Y=M[9],$=M[10],K=M[11];if(M!==C)C[4]=M[4],C[5]=M[5],C[6]=M[6],C[7]=M[7],C[12]=M[12],C[13]=M[13],C[14]=M[14],C[15]=M[15];return C[0]=Q*V-X*I,C[1]=W*V-Y*I,C[2]=A*V-$*I,C[3]=E*V-K*I,C[8]=Q*I+X*V,C[9]=W*I+Y*V,C[10]=A*I+$*V,C[11]=E*I+K*V,C}function FM(C,M,N){var I=Math.sin(N),V=Math.cos(N),Q=M[0],W=M[1],A=M[2],E=M[3],X=M[4],Y=M[5],$=M[6],K=M[7];if(M!==C)C[8]=M[8],C[9]=M[9],C[10]=M[10],C[11]=M[11],C[12]=M[12],C[13]=M[13],C[14]=M[14],C[15]=M[15];return C[0]=Q*V+X*I,C[1]=W*V+Y*I,C[2]=A*V+$*I,C[3]=E*V+K*I,C[4]=X*V-Q*I,C[5]=Y*V-W*I,C[6]=$*V-A*I,C[7]=K*V-E*I,C}function OM(C,M){return C[0]=1,C[1]=0,C[2]=0,C[3]=0,C[4]=0,C[5]=1,C[6]=0,C[7]=0,C[8]=0,C[9]=0,C[10]=1,C[11]=0,C[12]=M[0],C[13]=M[1],C[14]=M[2],C[15]=1,C}function RM(C,M){return C[0]=M[0],C[1]=0,C[2]=0,C[3]=0,C[4]=0,C[5]=M[1],C[6]=0,C[7]=0,C[8]=0,C[9]=0,C[10]=M[2],C[11]=0,C[12]=0,C[13]=0,C[14]=0,C[15]=1,C}function kM(C,M,N){var I=N[0],V=N[1],Q=N[2],W=Math.hypot(I,V,Q),A,E,X;if(W<F)return null;return W=1/W,I*=W,V*=W,Q*=W,A=Math.sin(M),E=Math.cos(M),X=1-E,C[0]=I*I*X+E,C[1]=V*I*X+Q*A,C[2]=Q*I*X-V*A,C[3]=0,C[4]=I*V*X-Q*A,C[5]=V*V*X+E,C[6]=Q*V*X+I*A,C[7]=0,C[8]=I*Q*X+V*A,C[9]=V*Q*X-I*A,C[10]=Q*Q*X+E,C[11]=0,C[12]=0,C[13]=0,C[14]=0,C[15]=1,C}function _M(C,M){var N=Math.sin(M),I=Math.cos(M);return C[0]=1,C[1]=0,C[2]=0,C[3]=0,C[4]=0,C[5]=I,C[6]=N,C[7]=0,C[8]=0,C[9]=-N,C[10]=I,C[11]=0,C[12]=0,C[13]=0,C[14]=0,C[15]=1,C}function TM(C,M){var N=Math.sin(M),I=Math.cos(M);return C[0]=I,C[1]=0,C[2]=-N,C[3]=0,C[4]=0,C[5]=1,C[6]=0,C[7]=0,C[8]=N,C[9]=0,C[10]=I,C[11]=0,C[12]=0,C[13]=0,C[14]=0,C[15]=1,C}function jM(C,M){var N=Math.sin(M),I=Math.cos(M);return C[0]=I,C[1]=N,C[2]=0,C[3]=0,C[4]=-N,C[5]=I,C[6]=0,C[7]=0,C[8]=0,C[9]=0,C[10]=1,C[11]=0,C[12]=0,C[13]=0,C[14]=0,C[15]=1,C}function c0(C,M,N){var I=M[0],V=M[1],Q=M[2],W=M[3],A=I+I,E=V+V,X=Q+Q,Y=I*A,$=I*E,K=I*X,B=V*E,P=V*X,L=Q*X,Z=W*A,H=W*E,O=W*X;return C[0]=1-(B+L),C[1]=$+O,C[2]=K-H,C[3]=0,C[4]=$-O,C[5]=1-(Y+L),C[6]=P+Z,C[7]=0,C[8]=K+H,C[9]=P-Z,C[10]=1-(Y+B),C[11]=0,C[12]=N[0],C[13]=N[1],C[14]=N[2],C[15]=1,C}function SM(C,M){var N=new k(3),I=-M[0],V=-M[1],Q=-M[2],W=M[3],A=M[4],E=M[5],X=M[6],Y=M[7],$=I*I+V*V+Q*Q+W*W;if($>0)N[0]=(A*W+Y*I+E*Q-X*V)*2/$,N[1]=(E*W+Y*V+X*I-A*Q)*2/$,N[2]=(X*W+Y*Q+A*V-E*I)*2/$;else N[0]=(A*W+Y*I+E*Q-X*V)*2,N[1]=(E*W+Y*V+X*I-A*Q)*2,N[2]=(X*W+Y*Q+A*V-E*I)*2;return c0(C,M,N),C}function hM(C,M){return C[0]=M[12],C[1]=M[13],C[2]=M[14],C}function z0(C,M){var N=M[0],I=M[1],V=M[2],Q=M[4],W=M[5],A=M[6],E=M[8],X=M[9],Y=M[10];return C[0]=Math.hypot(N,I,V),C[1]=Math.hypot(Q,W,A),C[2]=Math.hypot(E,X,Y),C}function qM(C,M){var N=new k(3);z0(N,M);var I=1/N[0],V=1/N[1],Q=1/N[2],W=M[0]*I,A=M[1]*V,E=M[2]*Q,X=M[4]*I,Y=M[5]*V,$=M[6]*Q,K=M[8]*I,B=M[9]*V,P=M[10]*Q,L=W+Y+P,Z=0;if(L>0)Z=Math.sqrt(L+1)*2,C[3]=0.25*Z,C[0]=($-B)/Z,C[1]=(K-E)/Z,C[2]=(A-X)/Z;else if(W>Y&&W>P)Z=Math.sqrt(1+W-Y-P)*2,C[3]=($-B)/Z,C[0]=0.25*Z,C[1]=(A+X)/Z,C[2]=(K+E)/Z;else if(Y>P)Z=Math.sqrt(1+Y-W-P)*2,C[3]=(K-E)/Z,C[0]=(A+X)/Z,C[1]=0.25*Z,C[2]=($+B)/Z;else Z=Math.sqrt(1+P-W-Y)*2,C[3]=(A-X)/Z,C[0]=(K+E)/Z,C[1]=($+B)/Z,C[2]=0.25*Z;return C}function pM(C,M,N,I){var V=M[0],Q=M[1],W=M[2],A=M[3],E=V+V,X=Q+Q,Y=W+W,$=V*E,K=V*X,B=V*Y,P=Q*X,L=Q*Y,Z=W*Y,H=A*E,O=A*X,U=A*Y,G=I[0],J=I[1],D=I[2];return C[0]=(1-(P+Z))*G,C[1]=(K+U)*G,C[2]=(B-O)*G,C[3]=0,C[4]=(K-U)*J,C[5]=(1-($+Z))*J,C[6]=(L+H)*J,C[7]=0,C[8]=(B+O)*D,C[9]=(L-H)*D,C[10]=(1-($+P))*D,C[11]=0,C[12]=N[0],C[13]=N[1],C[14]=N[2],C[15]=1,C}function wM(C,M,N,I,V){var Q=M[0],W=M[1],A=M[2],E=M[3],X=Q+Q,Y=W+W,$=A+A,K=Q*X,B=Q*Y,P=Q*$,L=W*Y,Z=W*$,H=A*$,O=E*X,U=E*Y,G=E*$,J=I[0],D=I[1],S=I[2],_=V[0],T=V[1],j=V[2],h=(1-(L+H))*J,q=(B+G)*J,p=(P-U)*J,R=(B-G)*D,v=(1-(K+H))*D,c=(Z+O)*D,z=(P+U)*S,A0=(Z-O)*S,E0=(1-(K+L))*S;return C[0]=h,C[1]=q,C[2]=p,C[3]=0,C[4]=R,C[5]=v,C[6]=c,C[7]=0,C[8]=z,C[9]=A0,C[10]=E0,C[11]=0,C[12]=N[0]+_-(h*_+R*T+z*j),C[13]=N[1]+T-(q*_+v*T+A0*j),C[14]=N[2]+j-(p*_+c*T+E0*j),C[15]=1,C}function vM(C,M){var N=M[0],I=M[1],V=M[2],Q=M[3],W=N+N,A=I+I,E=V+V,X=N*W,Y=I*W,$=I*A,K=V*W,B=V*A,P=V*E,L=Q*W,Z=Q*A,H=Q*E;return C[0]=1-$-P,C[1]=Y+H,C[2]=K-Z,C[3]=0,C[4]=Y-H,C[5]=1-X-P,C[6]=B+L,C[7]=0,C[8]=K+Z,C[9]=B-L,C[10]=1-X-$,C[11]=0,C[12]=0,C[13]=0,C[14]=0,C[15]=1,C}function gM(C,M,N,I,V,Q,W){var A=1/(N-M),E=1/(V-I),X=1/(Q-W);return C[0]=Q*2*A,C[1]=0,C[2]=0,C[3]=0,C[4]=0,C[5]=Q*2*E,C[6]=0,C[7]=0,C[8]=(N+M)*A,C[9]=(V+I)*E,C[10]=(W+Q)*X,C[11]=-1,C[12]=0,C[13]=0,C[14]=W*Q*2*X,C[15]=0,C}function y0(C,M,N,I,V){var Q=1/Math.tan(M/2),W;if(C[0]=Q/N,C[1]=0,C[2]=0,C[3]=0,C[4]=0,C[5]=Q,C[6]=0,C[7]=0,C[8]=0,C[9]=0,C[11]=-1,C[12]=0,C[13]=0,C[15]=0,V!=null&&V!==Infinity)W=1/(I-V),C[10]=(V+I)*W,C[14]=2*V*I*W;else C[10]=-1,C[14]=-2*I;return C}function fM(C,M,N,I,V){var Q=1/Math.tan(M/2),W;if(C[0]=Q/N,C[1]=0,C[2]=0,C[3]=0,C[4]=0,C[5]=Q,C[6]=0,C[7]=0,C[8]=0,C[9]=0,C[11]=-1,C[12]=0,C[13]=0,C[15]=0,V!=null&&V!==Infinity)W=1/(I-V),C[10]=V*W,C[14]=V*I*W;else C[10]=-1,C[14]=-I;return C}function dM(C,M,N,I){var V=Math.tan(M.upDegrees*Math.PI/180),Q=Math.tan(M.downDegrees*Math.PI/180),W=Math.tan(M.leftDegrees*Math.PI/180),A=Math.tan(M.rightDegrees*Math.PI/180),E=2/(W+A),X=2/(V+Q);return C[0]=E,C[1]=0,C[2]=0,C[3]=0,C[4]=0,C[5]=X,C[6]=0,C[7]=0,C[8]=-((W-A)*E*0.5),C[9]=(V-Q)*X*0.5,C[10]=I/(N-I),C[11]=-1,C[12]=0,C[13]=0,C[14]=I*N/(N-I),C[15]=0,C}function r0(C,M,N,I,V,Q,W){var A=1/(M-N),E=1/(I-V),X=1/(Q-W);return C[0]=-2*A,C[1]=0,C[2]=0,C[3]=0,C[4]=0,C[5]=-2*E,C[6]=0,C[7]=0,C[8]=0,C[9]=0,C[10]=2*X,C[11]=0,C[12]=(M+N)*A,C[13]=(V+I)*E,C[14]=(W+Q)*X,C[15]=1,C}function lM(C,M,N,I,V,Q,W){var A=1/(M-N),E=1/(I-V),X=1/(Q-W);return C[0]=-2*A,C[1]=0,C[2]=0,C[3]=0,C[4]=0,C[5]=-2*E,C[6]=0,C[7]=0,C[8]=0,C[9]=0,C[10]=X,C[11]=0,C[12]=(M+N)*A,C[13]=(V+I)*E,C[14]=Q*X,C[15]=1,C}function cM(C,M,N,I){var V,Q,W,A,E,X,Y,$,K,B,P=M[0],L=M[1],Z=M[2],H=I[0],O=I[1],U=I[2],G=N[0],J=N[1],D=N[2];if(Math.abs(P-G)<F&&Math.abs(L-J)<F&&Math.abs(Z-D)<F)return i0(C);if(Y=P-G,$=L-J,K=Z-D,B=1/Math.hypot(Y,$,K),Y*=B,$*=B,K*=B,V=O*K-U*$,Q=U*Y-H*K,W=H*$-O*Y,B=Math.hypot(V,Q,W),!B)V=0,Q=0,W=0;else B=1/B,V*=B,Q*=B,W*=B;if(A=$*W-K*Q,E=K*V-Y*W,X=Y*Q-$*V,B=Math.hypot(A,E,X),!B)A=0,E=0,X=0;else B=1/B,A*=B,E*=B,X*=B;return C[0]=V,C[1]=A,C[2]=Y,C[3]=0,C[4]=Q,C[5]=E,C[6]=$,C[7]=0,C[8]=W,C[9]=X,C[10]=K,C[11]=0,C[12]=-(V*P+Q*L+W*Z),C[13]=-(A*P+E*L+X*Z),C[14]=-(Y*P+$*L+K*Z),C[15]=1,C}function zM(C,M,N,I){var V=M[0],Q=M[1],W=M[2],A=I[0],E=I[1],X=I[2],Y=V-N[0],$=Q-N[1],K=W-N[2],B=Y*Y+$*$+K*K;if(B>0)B=1/Math.sqrt(B),Y*=B,$*=B,K*=B;var P=E*K-X*$,L=X*Y-A*K,Z=A*$-E*Y;if(B=P*P+L*L+Z*Z,B>0)B=1/Math.sqrt(B),P*=B,L*=B,Z*=B;return C[0]=P,C[1]=L,C[2]=Z,C[3]=0,C[4]=$*Z-K*L,C[5]=K*P-Y*Z,C[6]=Y*L-$*P,C[7]=0,C[8]=Y,C[9]=$,C[10]=K,C[11]=0,C[12]=V,C[13]=Q,C[14]=W,C[15]=1,C}function yM(C){return"mat4("+C[0]+", "+C[1]+", "+C[2]+", "+C[3]+", "+C[4]+", "+C[5]+", "+C[6]+", "+C[7]+", "+C[8]+", "+C[9]+", "+C[10]+", "+C[11]+", "+C[12]+", "+C[13]+", "+C[14]+", "+C[15]+")"}function rM(C){return Math.hypot(C[0],C[1],C[2],C[3],C[4],C[5],C[6],C[7],C[8],C[9],C[10],C[11],C[12],C[13],C[14],C[15])}function xM(C,M,N){return C[0]=M[0]+N[0],C[1]=M[1]+N[1],C[2]=M[2]+N[2],C[3]=M[3]+N[3],C[4]=M[4]+N[4],C[5]=M[5]+N[5],C[6]=M[6]+N[6],C[7]=M[7]+N[7],C[8]=M[8]+N[8],C[9]=M[9]+N[9],C[10]=M[10]+N[10],C[11]=M[11]+N[11],C[12]=M[12]+N[12],C[13]=M[13]+N[13],C[14]=M[14]+N[14],C[15]=M[15]+N[15],C}function x0(C,M,N){return C[0]=M[0]-N[0],C[1]=M[1]-N[1],C[2]=M[2]-N[2],C[3]=M[3]-N[3],C[4]=M[4]-N[4],C[5]=M[5]-N[5],C[6]=M[6]-N[6],C[7]=M[7]-N[7],C[8]=M[8]-N[8],C[9]=M[9]-N[9],C[10]=M[10]-N[10],C[11]=M[11]-N[11],C[12]=M[12]-N[12],C[13]=M[13]-N[13],C[14]=M[14]-N[14],C[15]=M[15]-N[15],C}function sM(C,M,N){return C[0]=M[0]*N,C[1]=M[1]*N,C[2]=M[2]*N,C[3]=M[3]*N,C[4]=M[4]*N,C[5]=M[5]*N,C[6]=M[6]*N,C[7]=M[7]*N,C[8]=M[8]*N,C[9]=M[9]*N,C[10]=M[10]*N,C[11]=M[11]*N,C[12]=M[12]*N,C[13]=M[13]*N,C[14]=M[14]*N,C[15]=M[15]*N,C}function mM(C,M,N,I){return C[0]=M[0]+N[0]*I,C[1]=M[1]+N[1]*I,C[2]=M[2]+N[2]*I,C[3]=M[3]+N[3]*I,C[4]=M[4]+N[4]*I,C[5]=M[5]+N[5]*I,C[6]=M[6]+N[6]*I,C[7]=M[7]+N[7]*I,C[8]=M[8]+N[8]*I,C[9]=M[9]+N[9]*I,C[10]=M[10]+N[10]*I,C[11]=M[11]+N[11]*I,C[12]=M[12]+N[12]*I,C[13]=M[13]+N[13]*I,C[14]=M[14]+N[14]*I,C[15]=M[15]+N[15]*I,C}function eM(C,M){return C[0]===M[0]&&C[1]===M[1]&&C[2]===M[2]&&C[3]===M[3]&&C[4]===M[4]&&C[5]===M[5]&&C[6]===M[6]&&C[7]===M[7]&&C[8]===M[8]&&C[9]===M[9]&&C[10]===M[10]&&C[11]===M[11]&&C[12]===M[12]&&C[13]===M[13]&&C[14]===M[14]&&C[15]===M[15]}function bM(C,M){var N=C[0],I=C[1],V=C[2],Q=C[3],W=C[4],A=C[5],E=C[6],X=C[7],Y=C[8],$=C[9],K=C[10],B=C[11],P=C[12],L=C[13],Z=C[14],H=C[15],O=M[0],U=M[1],G=M[2],J=M[3],D=M[4],S=M[5],_=M[6],T=M[7],j=M[8],h=M[9],q=M[10],p=M[11],R=M[12],v=M[13],c=M[14],z=M[15];return Math.abs(N-O)<=F*Math.max(1,Math.abs(N),Math.abs(O))&&Math.abs(I-U)<=F*Math.max(1,Math.abs(I),Math.abs(U))&&Math.abs(V-G)<=F*Math.max(1,Math.abs(V),Math.abs(G))&&Math.abs(Q-J)<=F*Math.max(1,Math.abs(Q),Math.abs(J))&&Math.abs(W-D)<=F*Math.max(1,Math.abs(W),Math.abs(D))&&Math.abs(A-S)<=F*Math.max(1,Math.abs(A),Math.abs(S))&&Math.abs(E-_)<=F*Math.max(1,Math.abs(E),Math.abs(_))&&Math.abs(X-T)<=F*Math.max(1,Math.abs(X),Math.abs(T))&&Math.abs(Y-j)<=F*Math.max(1,Math.abs(Y),Math.abs(j))&&Math.abs($-h)<=F*Math.max(1,Math.abs($),Math.abs(h))&&Math.abs(K-q)<=F*Math.max(1,Math.abs(K),Math.abs(q))&&Math.abs(B-p)<=F*Math.max(1,Math.abs(B),Math.abs(p))&&Math.abs(P-R)<=F*Math.max(1,Math.abs(P),Math.abs(R))&&Math.abs(L-v)<=F*Math.max(1,Math.abs(L),Math.abs(v))&&Math.abs(Z-c)<=F*Math.max(1,Math.abs(Z),Math.abs(c))&&Math.abs(H-z)<=F*Math.max(1,Math.abs(H),Math.abs(z))}var nM=y0,iM=r0,uM=l0,oM=x0;class l{C;M;N;constructor(C=i.create(),M=f.create(),N=i.fromValues(1,1,1)){this.position=C;this.rotation=M;this.scale=N}rotateEuler(C,M,N){return f.fromEuler(this.rotation,C,M,N),this}toMat4(){const C=w.create();return w.fromRotationTranslationScale(C,this.rotation,this.position,this.scale),C}}var XN=(C)=>f.fromEuler(f.create(),C[0],C[1],C[2]),YN=(C)=>[C,C,C];class g{C;constructor(C){this.app=C;this.onStart&&C.onStart(this.onStart.bind(this)),this.onUpdate&&C.onUpdate(this.onUpdate.bind(this)),this.onAfterUpdate&&C.onAfterUpdate(this.onAfterUpdate.bind(this)),this.onBeforeUpdate&&C.onBeforeUpdate(this.onBeforeUpdate.bind(this)),this.onDraw&&C.onDraw(this.onDraw.bind(this))}}class M0 extends g{C;M;N;I;V;Q;projectionMatrix=w.create();buffers={textures:{}};faceDataType;colorDataType;constructor(C,M,N,I=new l([0,0,-6]),V=new l([100,100,0]),Q={}){super(C);this.app=C;this.mesh=M;this.shader=N;this.camera=I;this.light=V;this.config=Q;this.faceDataType=this.getDataType(M.config.faces),this.colorDataType=M.config.colors?this.getDataType(M.config.colors):null}getDataType(C){switch(C.BYTES_PER_ELEMENT){case 1:return 5121;case 2:return 5123;case 4:return 5125;default:return 5126}}configure(C){return this.config=C,this}makeBuffer(C,M=34962){const N=this.app.gl,I=N.createBuffer();if(!I)throw new Error("failed to create a buffer");return N.bindBuffer(M,I),N.bufferData(M,C,N.STATIC_DRAW),N.bindBuffer(M,null),I}initializeBuffers(){const C=this.app.gl.createVertexArray();if(!C)throw new Error("VAO creation failed");this.buffers.vao=C,this.app.gl.bindVertexArray(C),this.buffers.faces=this.makeBuffer(this.mesh.config.faces,this.app.gl.ELEMENT_ARRAY_BUFFER);const M=this.shader.mappings;if(this.buffers.position=this.makeBuffer(this.mesh.config.positions),this.bindAttrib(this.buffers.position,M.attributes.vertex,3,this.app.gl.FLOAT),this.mesh.config.normals)this.buffers.normal=this.makeBuffer(this.mesh.config.normals),this.bindAttrib(this.buffers.normal,M.attributes.normal,3,this.app.gl.FLOAT,!0);if(this.mesh.config.colors)this.buffers.color=this.makeBuffer(this.mesh.config.colors),this.bindAttrib(this.buffers.color,M.attributes.vertexColor,4,this.colorDataType||this.app.gl.UNSIGNED_BYTE);if(this.mesh.config.uvs)this.buffers.uv=this.makeBuffer(this.mesh.config.uvs),this.bindAttrib(this.buffers.uv,M.attributes.uv0,2,this.app.gl.FLOAT);this.app.gl.bindVertexArray(null)}async initializeTextures(){const{gl:C}=this.app;for(let[M,N]of Object.entries(this.shader.textures)){await N.loadImage();const I=C.createTexture();if(!I)throw new Error("failed to allocate texture");const V=N.texture;C.bindTexture(C.TEXTURE_2D,I),C.texImage2D(C.TEXTURE_2D,0,C.RGBA,N.width,N.height,0,C.RGBA,C.UNSIGNED_BYTE,V);const Q=N.config.uvClamp?C.CLAMP_TO_EDGE:C.REPEAT;C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,Q),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,Q),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,C.NEAREST),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,C.NEAREST),this.buffers.textures[M]=I}}bindTextures(){const{gl:C}=this.app,M=this.app.gl.TEXTURE0,N=Object.entries(this.buffers.textures),I=[];return N.forEach(([V,Q],W)=>{const A=this.shader.mappings.uniforms[V];if(!A)return;C.activeTexture(M+W),C.bindTexture(C.TEXTURE_2D,Q),C.uniform1i(A,W),I.push(()=>{C.activeTexture(M+W),C.bindTexture(C.TEXTURE_2D,null)})}),I}bindAttrib(C,M,N,I,V=!1){const Q=this.app.gl;Q.bindBuffer(Q.ARRAY_BUFFER,C);const W=Number.isSafeInteger(M)?M:this.shader.attrib(M);if(W!==-1)Q.vertexAttribPointer(W,N,I,V,0,0),Q.enableVertexAttribArray(W);Q.bindBuffer(Q.ARRAY_BUFFER,null)}initializeShader(C,M){const N=w.invert(w.create(),this.camera.toMat4()),I=this.app.gl,{uniforms:V}=this.shader.mappings;this.shader.use(),I.uniform1f(V.time,C),I.uniform4fv(V.light0Color,[1,1,1,1]),I.uniformMatrix4fv(V.view,!1,N),I.uniformMatrix4fv(V.projection,!1,this.projectionMatrix),I.uniform3fv(V.light0,this.light.position),I.uniformMatrix4fv(V.objectToWorld,!1,M.toMat4()),I.uniformMatrix4fv(V.objectToWorldInv,!1,w.invert(w.create(),M.toMat4())),this.shader.onPrerender(this.app,C)}async onStart(C,M){M.loading("baking vectors"),M.telemetry?.addRenderers(1),M.telemetry?.addTriangles(this.mesh.config.faces.length),M.telemetry?.addVertexes(this.mesh.config.vertexCount),w.perspective(this.projectionMatrix,this.app.config.fov||45,this.app.aspect,this.app.config.zNear||0.1,this.app.config.zFar||100),this.shader.compile(),this.shader.link(),this.initializeBuffers(),this.shader.link(),await this.initializeTextures()}onRenderableUpdate(C,M){const N=this.app.gl;N.bindVertexArray(this.buffers.vao||null),N.bindBuffer(N.ELEMENT_ARRAY_BUFFER,this.buffers.faces||null),N.bindBuffer(N.ARRAY_BUFFER,this.buffers.position||null),this.initializeShader(C,M);const I=this.bindTextures();N.drawElements(this.config.drawMode??N.TRIANGLES,this.mesh.config.faces.length,this.faceDataType,0);const V=N.getError();if(V!==0)throw console.log({err:V}),new Error(`(MeshRenderer<Mesh#${this.mesh.name}>) webgl failure: ${V}`);N.bindVertexArray(null),N.bindBuffer(N.ELEMENT_ARRAY_BUFFER,null),N.bindBuffer(N.ARRAY_BUFFER,null),I.forEach((Q)=>Q())}}class N0 extends g{constructor(){super(...arguments)}panes=[];addTransform(C,M){this.panes.push({name:C,type:"transform",onChange:M})}}class I0 extends g{C;el;frameTimes=[];maxFrameTimes=100;lastFrameTime=0;activeTriangles=0;activeVertexes=0;activeRenderers=0;activeTextures=0;constructor(C,M="#telemetry"){super(C);this.app=C;if(this.el=document.querySelector(M),this.el&&location.search.includes("telemetry"))this.el.style.display="block"}insertTime(C){if(this.frameTimes.push(C),this.frameTimes.length>this.maxFrameTimes)this.frameTimes.shift()}async onStart(){this.lastFrameTime=0,this.frameTimes=[],setTimeout(()=>this.setText(),0),setInterval(()=>{this.setText()},1001)}setText(){const C=this.frameTimes.reduce((N,I)=>N+I,0)/this.frameTimes.length,M=1000/C;this.el.innerHTML=`${M.toFixed(1)} FPS (${C.toFixed(3)} ms)<br />update :: b: ${this.app.registry.onBeforeUpdate.length} | u: ${this.app.registry.onUpdate.length} | a: ${this.app.registry.onAfterUpdate.length} | d: ${this.app.registry.onDraw.length}<br />render :: mr: ${this.activeRenderers} | v: ${this.activeVertexes} | t: ${this.activeTriangles}<br />others :: tex: ${this.activeTextures}`}onAfterUpdate(C){const M=C-this.lastFrameTime;this.insertTime(M),this.lastFrameTime=C}addTriangles(C){this.activeTriangles+=C}addVertexes(C){this.activeVertexes+=C}addRenderers(C){this.activeRenderers+=C}addTextures(C){this.activeTextures+=C}}class tM{C;canvas;telemetry;gl;editor;loadingMessages=new Set(["[noeidelon] [stage 2]"]);registry={onBeforeUpdate:[],onAfterUpdate:[],onUpdate:[],onStart:[],onDraw:[]};constructor(C={}){this.config=C;try{this.canvas=document.querySelector("canvas"),this.canvas.width=window.innerWidth,this.canvas.height=window.innerHeight;const M=this.canvas.getContext("webgl2");if(!M)throw new Error("Canvas was unable to get a webgl2 context");const N=this.gl=M;if(N.viewport(0,0,N.drawingBufferWidth,N.drawingBufferHeight),this.gl.getExtension("EXT_texture_filter_anisotropic"),location.search.includes("telemetry")||C.telemetry)this.telemetry=new I0(this);if(location.search.includes("editor")||C.editor)this.editor=new N0(this)}catch(M){const N=document.querySelector("main");if(N)N.innerHTML="<div><i>your browser didn't let me set up webgl.</i></div>";throw new Error(`Unable to initialize WebGL. Your browser or machine may not support it.\n -> ${M}`)}}get aspect(){return this.canvas.clientWidth/this.canvas.clientHeight}clear(){const C=this.gl;C.clearColor(0,0,0,1),C.clearDepth(1),C.enable(C.DEPTH_TEST),C.depthFunc(C.LEQUAL),C.clear(C.COLOR_BUFFER_BIT|C.DEPTH_BUFFER_BIT)}loading(C){this.loadingMessages.add(C.toLowerCase()),document.querySelector("#loading-text").innerHTML=[...this.loadingMessages].join("<br />")}ready(){document.querySelector("#loading")?.classList.remove("loading-active")}onBeforeUpdate(C){this.registry.onBeforeUpdate.push(C)}onAfterUpdate(C){this.registry.onAfterUpdate.push(C)}onUpdate(C){this.registry.onUpdate.push(C)}onStart(C){this.registry.onStart.push(C)}onDraw(C){this.registry.onDraw.push(C)}doUpdate(C){this.registry.onBeforeUpdate.forEach((M)=>M(C,this)),this.registry.onUpdate.forEach((M)=>M(C,this)),this.registry.onAfterUpdate.forEach((M)=>M(C,this)),this.registry.onDraw.forEach((M)=>M(C,this))}async doStart(C=0){this.loading("setting launch parameters"),this.clear();try{for(let M of this.registry.onStart)await M(C,this)}catch(M){if(this.loading('[panic] <span style="color: red">failed to start noeidelon</span>'),this.telemetry)this.loading(`<span style="color: purple">${M}</span>`);return}this.ready()}async oneShot(C=0){await this.doStart(C),this.doUpdate(C)}async start(){await this.doStart();const C=(M)=>{this.doUpdate(M),requestAnimationFrame(C)};requestAnimationFrame(C)}}class d{C;static VERTEX=35633;static FRAGMENT=35632;constructor(C){this.config=C}vertexCode="";fragmentCode="";_app;program=null;mappings={};textures={};materialValues={};prerenderHooks=[];get gl(){const C=this._app?.gl;if(!C)throw new Error("GL context not defined at shader compile time.");return C}app(C){return this._app=C,this.program=C.gl.createProgram(),this}vertex(C){return this.vertexCode=C,this}fragment(C){return this.fragmentCode=C,this}prerenderHook(C){return this.prerenderHooks.push(C),this}attrib(C){return this.gl.getAttribLocation(this.program,C)}uniform(C){return this.gl.getUniformLocation(this.program,C)}generateMappings(C){return{attributes:{normal:this.attrib(C.attributes.normal),uv0:this.attrib(C.attributes.uv0),vertex:this.attrib(C.attributes.vertex),vertexColor:this.attrib(C.attributes.vertexColor)},uniforms:{albedo:this.uniform(C.uniforms.albedo),light0:this.uniform(C.uniforms.light0),light0Color:this.uniform(C.uniforms.light0Color),objectToWorld:this.uniform(C.uniforms.objectToWorld),objectToWorldInv:this.uniform(C.uniforms.objectToWorldInv),projection:this.uniform(C.uniforms.projection),texture0:this.uniform(C.uniforms.texture0),texture1:this.uniform(C.uniforms.texture1),texture2:this.uniform(C.uniforms.texture2),time:this.uniform(C.uniforms.time),view:this.uniform(C.uniforms.view)}}}attach(C,M){const N=this.gl,I=N.createShader(C);if(!I)throw new Error(`failed to init ${aM(C)} shader`);N.shaderSource(I,M),N.compileShader(I),N.attachShader(this.program,I)}addTexture(C,M){return this.textures[C]=M,this}compile(){const C=this.gl;this.attach(C.FRAGMENT_SHADER,this.fragmentCode),this.attach(C.VERTEX_SHADER,this.vertexCode)}link(){if(this.gl.linkProgram(this.program),!this.gl.getProgramParameter(this.program,this.gl.LINK_STATUS))throw new Error("Unable to initialize the shader program: "+this.gl.getProgramInfoLog(this.program));this.mappings=this.generateMappings(this.config)}bindAttrib(C,M){this.gl.bindAttribLocation(this.program,C,M)}use(){this._app?.gl.useProgram(this.program)}onPrerender(C,M){for(let N of this.prerenderHooks)N(C,this,M)}}var aM=(C)=>{switch(C){case d.FRAGMENT:return"fragment";case d.VERTEX:return"vertex";default:return"some unknown type of"}};var s0=`#version 300 es
|
|
precision highp float;uniform sampler2D u_texture_0;uniform sampler2D u_texture_1;in vec2 uv0;in vec3 normal;in vec3 light_pos;out vec4 fragColor;void main(){vec4 normalTex=texture(u_texture_1,uv0);vec3 normal=normalize(normal*normalTex.xyz);float light=dot(normal,light_pos);fragColor=vec4(1.0);fragColor.rgb=texture(u_texture_0,uv0).rgb;fragColor.rgb*=max(light,0.1);fragColor.a=1.0;}`;var b=`#version 300 es
|
|
uniform mat4 u_view;uniform mat4 u_projection;uniform mat4 u_object_to_world;uniform mat4 u_object_to_world_inv;uniform vec3 u_light_0;in vec4 a_vertex;in vec2 a_uv0;in vec3 a_normal;in vec4 a_vertex_color;out vec2 uv0;out vec3 normal;out vec4 vertex_color;out vec3 light_pos;void main(){mat4 worldInv=inverse(u_view);mat4 MVW=u_projection*u_view*u_object_to_world;gl_Position=MVW*a_vertex;uv0=a_uv0;normal=normalize(mat3(worldInv)*a_normal);vertex_color=a_vertex_color;light_pos=normalize(mat3(u_object_to_world_inv)*u_light_0);}`;var V0={attributes:{vertex:"a_vertex",uv0:"a_uv0",normal:"a_normal",vertexColor:"a_vertex_color"},uniforms:{view:"u_view",projection:"u_projection",objectToWorld:"u_object_to_world",objectToWorldInv:"u_object_to_world_inv",light0:"u_light_0",light0Color:"u_light_0_color",time:"u_time",albedo:"u_albedo",texture0:"u_texture_0",texture1:"u_texture_1",texture2:"u_texture_2"}},vN=(C)=>new d(V0).vertex(b).fragment(s0).app(C);var m0=`#version 300 es
|
|
precision highp float;in vec4 vertex_color;out vec4 fragColor;void main(){fragColor=vertex_color;}`;class Q0{C;constructor(C){this.config=C}get name(){return this.config.name}}var e0=new Q0({colors:new Uint8Array([0,254,0,255,0,254,0,255,0,254,0,255,0,254,0,255,0,254,0,255,0,254,0,255,0,254,0,255,0,254,0,255,0,254,0,255,0,254,0,255,0,254,0,255,0,254,0,255,0,254,0,255,0,254,0,255,254,0,0,255,254,0,0,255,254,0,0,255,254,0,0,255,254,0,0,255,254,0,0,255,254,0,0,255,254,0,0,255,254,0,0,255,254,0,0,255,254,0,0,255,254,0,0,255,254,0,0,255,254,0,0,255,0,0,254,255,0,0,254,255,0,0,254,255,0,0,254,255,0,0,254,255,0,0,254,255,0,0,254,255,0,0,254,255,0,0,254,255,0,0,254,255,0,0,254,255,0,0,254,255,0,0,254,255,0,0,254,255]),faces:new Uint8Array([0,1,2,3,4,1,5,6,4,7,8,6,4,9,10,11,7,5,0,3,1,3,5,4,5,7,6,7,12,8,4,6,9,11,13,7,14,15,16,17,18,15,19,20,18,21,22,20,18,23,24,25,21,19,14,17,15,17,19,18,19,21,20,21,26,22,18,20,23,25,27,21,28,29,30,31,32,29,33,34,32,35,36,34,32,37,38,39,35,33,28,31,29,31,33,32,33,35,34,35,40,36,32,34,37,39,41,35]),name:"src/meshes/gizmo.ply",normals:new Float32Array([-0.057735033,0.5773503,-0.5773503,0.057735033,-0.5773503,-0.5773503,-0.057735033,-0.5773503,-0.5773503,0.057735033,0.5773503,-0.5773503,0.057735033,-0.5773503,0.5773503,0.057735033,0.5773503,0.5773503,-0.057735033,-0.5773503,0.5773503,-0.057735033,0.5773503,0.5773503,-0.057735033,-0.5773503,-0.5773503,-0.057735033,-0.5773503,-0.5773503,0.057735033,-0.5773503,-0.5773503,0.057735033,0.5773503,-0.5773503,-0.057735033,0.5773503,-0.5773503,-0.057735033,0.5773503,-0.5773503,-0.5773503,0.5773503,-0.057735033,0.5773503,-0.5773503,-0.057735033,-0.5773503,-0.5773503,-0.057735033,0.5773503,0.5773503,-0.057735033,0.5773503,-0.5773503,0.057735033,0.5773503,0.5773503,0.057735033,-0.5773503,-0.5773503,0.057735033,-0.5773503,0.5773503,0.057735033,-0.5773503,-0.5773503,-0.057735033,-0.5773503,-0.5773503,-0.057735033,0.5773503,-0.5773503,-0.057735033,0.5773503,0.5773503,-0.057735033,-0.5773503,0.5773503,-0.057735033,-0.5773503,0.5773503,-0.057735033,-0.5773503,0.057735033,-0.5773503,0.5773503,-0.057735033,-0.5773503,-0.5773503,-0.057735033,-0.5773503,0.5773503,0.057735033,-0.5773503,0.5773503,-0.057735033,0.5773503,0.5773503,0.057735033,0.5773503,-0.5773503,-0.057735033,0.5773503,-0.5773503,0.057735033,0.5773503,-0.5773503,-0.057735033,-0.5773503,-0.5773503,-0.057735033,-0.5773503,0.5773503,-0.057735033,-0.5773503,0.5773503,0.057735033,-0.5773503,-0.5773503,0.057735033,-0.5773503,-0.5773503,0.057735033,-0.5773503]),positions:new Float32Array([0,0.05,-0.05,1,-0.05,-0.05,0,-0.05,-0.05,1,0.05,-0.05,1,-0.05,0.05,1,0.05,0.05,0,-0.05,0.05,0,0.05,0.05,0,-0.05,-0.05,0,-0.05,-0.05,1,-0.05,-0.05,1,0.05,-0.05,0,0.05,-0.05,0,0.05,-0.05,-0.05,0.05,0,0.05,-0.05,0,-0.05,-0.05,0,0.05,0.05,0,0.05,-0.05,1,0.05,0.05,1,-0.05,-0.05,1,-0.05,0.05,1,-0.05,-0.05,0,-0.05,-0.05,0,0.05,-0.05,0,0.05,0.05,0,-0.05,0.05,0,-0.05,0.05,0,-0.05,1,-0.05,0.05,0,-0.05,-0.05,0,-0.05,0.05,1,-0.05,0.05,0,0.05,0.05,1,0.05,-0.05,0,0.05,-0.05,1,0.05,-0.05,0,-0.05,-0.05,0,-0.05,0.05,0,-0.05,0.05,1,-0.05,-0.05,1,-0.05,-0.05,1,-0.05]),uvs:new Float32Array([0.625,0,0.375,0.25,0.375,0,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.125,0.75,0.125,0.5,0.875,0.5,0.625,1,0.875,0.75,0.625,0,0.375,0.25,0.375,0,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.125,0.75,0.125,0.5,0.875,0.5,0.625,1,0.875,0.75,0.625,0,0.375,0.25,0.375,0,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.125,0.75,0.125,0.5,0.875,0.5,0.625,1,0.875,0.75]),vertexCount:42});var IN=(C)=>new d(V0).vertex(b).fragment(m0).app(C),b0=(C,M,N)=>{const I=new l(N?.position,N?.rotation),V=new M0(C,e0,IN(C),M).configure({});new W0(C,I,V)};class W0 extends g{C;M;N;constructor(C,M,N,I=!1){super(C);this.app=C;this.transform=M;this.renderer=N;if(I)b0(C,N.camera,M)}onDraw(C){this.renderer.onRenderableUpdate(C,this.transform)}}
|
|
export{f as c,l as d,XN as e,YN as f,M0 as g,tM as h,d as i,s0 as j,b as k,vN as l,Q0 as m,W0 as n};
|