@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
2 lines (1 loc) • 565 B
JavaScript
import{Vec3 as t}from"../../core/math/vec3.js";import{LIGHTTYPE_DIRECTIONAL as o}from"../constants.js";const r=[new t(-1,0,0),new t(1,0,0),new t(0,-1,0),new t(0,1,0),new t(0,0,-1),new t(0,0,1)];class e{constructor(){this.colors=new Float32Array(18)}update(t,e){const n=this.colors,{r:s,g:c,b:i}=t;for(let t=0;t<6;t++)n[3*t]=s,n[3*t+1]=c,n[3*t+2]=i;for(let t=0;t<e.length;t++){const s=e[t];if(s._type===o)for(let t=0;t<6;t++){const o=Math.max(r[t].dot(s._direction),0)*s._intensity,e=s._color;n[3*t]+=e.r*o,n[3*t+1]+=e.g*o,n[3*t+2]+=e.b*o}}}}export{e as LightCube};