UNPKG

playcanvas

Version:

Open-source WebGL/WebGPU 3D engine for the web

43 lines (42 loc) 1.72 kB
var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); import { DebugGraphics } from "../../platform/graphics/debug-graphics.js"; import { RenderPass } from "../../platform/graphics/render-pass.js"; import { SHADER_FORWARD } from "../../scene/constants.js"; class RenderPassLightmapper extends RenderPass { constructor(device, renderer, camera, worldClusters, receivers, lightArray) { super(device); /** @type {BindGroup[]} */ __publicField(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; if (device.supportsUniformBuffers && !renderer.viewUniformFormat) { renderer.initViewBindGroupFormat(renderer.scene.clusteredLightingEnabled); } renderer.renderForwardLayer(camera, renderTarget, null, void 0, SHADER_FORWARD, this.viewBindGroups, { meshInstances: receivers, splitLights: lightArray, lightClusters: worldClusters }); DebugGraphics.popGpuMarker(device); } } export { RenderPassLightmapper };