playcanvas
Version:
PlayCanvas WebGL game engine
39 lines (36 loc) • 1.54 kB
JavaScript
import { DebugHelper } from '../../core/debug.js';
import { RenderPass } from '../../platform/graphics/render-pass.js';
import { SHADOWUPDATE_NONE, SHADOWUPDATE_THISFRAME } from '../constants.js';
/**
* A render pass used to render directional shadows.
*
* @ignore
*/ class RenderPassShadowDirectional extends RenderPass {
execute() {
var { light, camera, shadowRenderer, allCascadesRendering } = this;
var faceCount = light.numShadowFaces;
var shadowUpdateOverrides = light.shadowUpdateOverrides;
// render all faces
for(var face = 0; face < faceCount; face++){
if ((shadowUpdateOverrides == null ? void 0 : shadowUpdateOverrides[face]) !== SHADOWUPDATE_NONE) {
shadowRenderer.renderFace(light, camera, face, !allCascadesRendering);
}
if ((shadowUpdateOverrides == null ? void 0 : shadowUpdateOverrides[face]) === SHADOWUPDATE_THISFRAME) {
shadowUpdateOverrides[face] = SHADOWUPDATE_NONE;
}
}
}
after() {
// apply VSM blur if needed
this.shadowRenderer.renderVsm(this.light, this.camera);
}
constructor(device, shadowRenderer, light, camera, allCascadesRendering){
super(device);
DebugHelper.setName(this, this.name + "-" + light._node.name);
this.shadowRenderer = shadowRenderer;
this.light = light;
this.camera = camera;
this.allCascadesRendering = allCascadesRendering;
}
}
export { RenderPassShadowDirectional };