playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
33 lines (32 loc) • 1.05 kB
JavaScript
import { RenderPass } from "../../platform/graphics/render-pass.js";
class RenderPassShadowLocalClustered extends RenderPass {
constructor(device, shadowRenderer, shadowRendererLocal) {
super(device);
this.requiresCubemaps = false;
this.shadowRenderer = shadowRenderer;
this.shadowRendererLocal = shadowRendererLocal;
}
update(localLights) {
const shadowLights = this.shadowRendererLocal.shadowLights;
const shadowCamera = this.shadowRendererLocal.prepareLights(shadowLights, localLights);
const count = shadowLights.length;
this.enabled = count > 0;
if (count) {
this.shadowRenderer.setupRenderPass(this, shadowCamera, false);
}
}
execute() {
const shadowLights = this.shadowRendererLocal.shadowLights;
const count = shadowLights.length;
for (let i = 0; i < count; i++) {
const light = shadowLights[i];
for (let face = 0; face < light.numShadowFaces; face++) {
this.shadowRenderer.renderFace(light, null, face, true);
}
}
shadowLights.length = 0;
}
}
export {
RenderPassShadowLocalClustered
};