UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

39 lines (36 loc) 1.5 kB
import { DebugGraphics } from '../../platform/graphics/debug-graphics.js'; import { RenderPass } from '../../platform/graphics/render-pass.js'; import { SHADER_FORWARD } from '../../scene/constants.js'; /** * @import { BindGroup } from '../../platform/graphics/bind-group.js' */ /** * A render pass implementing rendering of mesh instance receivers for light-mapper. */ class RenderPassLightmapper extends RenderPass { constructor(device, renderer, camera, worldClusters, receivers, lightArray){ super(device), /** @type {BindGroup[]} */ this.viewBindGroups = []; this.renderer = renderer; this.camera = camera; this.worldClusters = worldClusters; this.receivers = receivers; this.lightArray = lightArray; } destroy() { this.viewBindGroups.forEach((bg)=>{ bg.defaultUniformBuffer.destroy(); bg.destroy(); }); this.viewBindGroups.length = 0; } execute() { const device = this.device; DebugGraphics.pushGpuMarker(device, 'Lightmapper'); const { renderer, camera, receivers, renderTarget, worldClusters, lightArray } = this; renderer.renderForwardLayer(camera, renderTarget, null, undefined, SHADER_FORWARD, this.viewBindGroups, { meshInstances: receivers, splitLights: lightArray, lightClusters: worldClusters }); DebugGraphics.popGpuMarker(device); } } export { RenderPassLightmapper };