Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Fix] Fix compatibility with deprecated Layer.renderTarget #5877

Merged
merged 1 commit into from Dec 4, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 13 additions & 3 deletions src/scene/renderer/renderer.js
Expand Up @@ -1077,9 +1077,8 @@ class Renderer {
for (let i = 0; i < numCameras; i++) {
const camera = comp.cameras[i];

// update camera and frustum
camera.frameUpdate(camera.renderTarget);
this.updateCameraFrustum(camera.camera);
let currentRenderTarget;
let cameraChanged = true;
this._camerasRendered++;

// for all of its enabled layers
Expand All @@ -1088,6 +1087,17 @@ class Renderer {
const layer = comp.getLayerById(layerIds[j]);
if (layer && layer.enabled) {

// update camera and frustum when the render target changes
// TODO: This is done here to handle the backwards compatibility with the deprecated Layer.renderTarget,
// when this is no longer needed, this code can be moved up to execute once per camera.
const renderTarget = camera.renderTarget ?? layer.renderTarget;
slimbuck marked this conversation as resolved.
Show resolved Hide resolved
if (cameraChanged || renderTarget !== currentRenderTarget) {
cameraChanged = false;
currentRenderTarget = renderTarget;
camera.frameUpdate(renderTarget);
this.updateCameraFrustum(camera.camera);
}

// cull each layer's non-directional lights once with each camera
// lights aren't collected anywhere, but marked as visible
this.cullLights(camera.camera, layer._lights);
Expand Down