From dbf31ceebe87668dea11cbf21902fc7be0e61f93 Mon Sep 17 00:00:00 2001 From: Kearwood Gilbert Date: Thu, 13 Nov 2025 22:17:11 -0800 Subject: [PATCH] Move more repeated logic out of node render methods into KRScene --- kraken/nodes/KRDirectionalLight.cpp | 3 --- kraken/nodes/KRLight.cpp | 3 --- kraken/nodes/KRModel.cpp | 7 +------ kraken/nodes/KRParticleSystemNewtonian.cpp | 3 --- kraken/nodes/KRPointLight.cpp | 2 -- kraken/nodes/KRSprite.cpp | 3 --- kraken/resources/scene/KRScene.cpp | 4 ++++ 7 files changed, 5 insertions(+), 20 deletions(-) diff --git a/kraken/nodes/KRDirectionalLight.cpp b/kraken/nodes/KRDirectionalLight.cpp index 02c1e11..9d07625 100755 --- a/kraken/nodes/KRDirectionalLight.cpp +++ b/kraken/nodes/KRDirectionalLight.cpp @@ -127,9 +127,6 @@ int KRDirectionalLight::configureShadowBufferViewports(const KRViewport& viewpor void KRDirectionalLight::render(RenderInfo& ri) { - - if (m_lod_visible <= LOD_VISIBILITY_PRESTREAM) return; - ri.reflectedObjects.push_back(this); KRLight::render(ri); diff --git a/kraken/nodes/KRLight.cpp b/kraken/nodes/KRLight.cpp index 15d9d23..a224975 100755 --- a/kraken/nodes/KRLight.cpp +++ b/kraken/nodes/KRLight.cpp @@ -225,8 +225,6 @@ void KRLight::render(RenderInfo& ri) { KRNode::render(ri); - ri.reflectedObjects.push_back(this); - if (ri.renderPass->getType() == RenderPassType::RENDER_PASS_SHADOWMAP && (ri.camera->settings.volumetric_environment_enable || ri.camera->settings.dust_particle_enable || (ri.camera->settings.m_cShadowBuffers > 0 && m_casts_shadow))) { allocateShadowBuffers(configureShadowBufferViewports(*ri.viewport)); renderShadowBuffers(ri); @@ -429,7 +427,6 @@ void KRLight::render(RenderInfo& ri) } } - ri.reflectedObjects.pop_back(); } void KRLight::allocateShadowBuffers(int cBuffers) diff --git a/kraken/nodes/KRModel.cpp b/kraken/nodes/KRModel.cpp index 4dc840f..d4b23f5 100755 --- a/kraken/nodes/KRModel.cpp +++ b/kraken/nodes/KRModel.cpp @@ -254,8 +254,6 @@ void KRModel::loadModel() void KRModel::render(KRNode::RenderInfo& ri) { - ri.reflectedObjects.push_back(this); - KRNode::render(ri); // Don't render meshes on second pass of the deferred lighting renderer, as only lights will be applied @@ -263,8 +261,7 @@ void KRModel::render(KRNode::RenderInfo& ri) && ri.renderPass->getType() != RenderPassType::RENDER_PASS_ADDITIVE_PARTICLES && ri.renderPass->getType() != RenderPassType::RENDER_PASS_PARTICLE_OCCLUSION && ri.renderPass->getType()!= RenderPassType::RENDER_PASS_VOLUMETRIC_EFFECTS_ADDITIVE - && ri.renderPass->getType() != RenderPassType::RENDER_PASS_SHADOWMAP - && ri.renderPass->getType() != RenderPassType::RENDER_PASS_PRESTREAM) { + && ri.renderPass->getType() != RenderPassType::RENDER_PASS_SHADOWMAP) { loadModel(); /* @@ -315,8 +312,6 @@ void KRModel::render(KRNode::RenderInfo& ri) } } } - - ri.reflectedObjects.pop_back(); } void KRModel::preStream(const KRViewport& viewport) diff --git a/kraken/nodes/KRParticleSystemNewtonian.cpp b/kraken/nodes/KRParticleSystemNewtonian.cpp index d715ca6..185c062 100755 --- a/kraken/nodes/KRParticleSystemNewtonian.cpp +++ b/kraken/nodes/KRParticleSystemNewtonian.cpp @@ -82,8 +82,6 @@ bool KRParticleSystemNewtonian::hasPhysics() void KRParticleSystemNewtonian::render(RenderInfo& ri) { - ri.reflectedObjects.push_back(this); - KRNode::render(ri); if (ri.renderPass->getType() == RenderPassType::RENDER_PASS_ADDITIVE_PARTICLES) { @@ -111,7 +109,6 @@ void KRParticleSystemNewtonian::render(RenderInfo& ri) vkCmdDraw(ri.commandBuffer, particle_count * 3, 1, 0, 0); } } - ri.reflectedObjects.pop_back(); } bool KRParticleSystemNewtonian::getShaderValue(ShaderValue value, float* output) const diff --git a/kraken/nodes/KRPointLight.cpp b/kraken/nodes/KRPointLight.cpp index 4cb66db..56895ca 100755 --- a/kraken/nodes/KRPointLight.cpp +++ b/kraken/nodes/KRPointLight.cpp @@ -75,8 +75,6 @@ AABB KRPointLight::getBounds() void KRPointLight::render(RenderInfo& ri) { - if (m_lod_visible <= LOD_VISIBILITY_PRESTREAM) return; - ri.reflectedObjects.push_back(this); KRLight::render(ri); diff --git a/kraken/nodes/KRSprite.cpp b/kraken/nodes/KRSprite.cpp index 605b58c..2d3ac09 100755 --- a/kraken/nodes/KRSprite.cpp +++ b/kraken/nodes/KRSprite.cpp @@ -126,8 +126,6 @@ void KRSprite::preStream(const KRViewport& viewport) void KRSprite::render(RenderInfo& ri) { - ri.reflectedObjects.push_back(this); - KRNode::render(ri); if (ri.renderPass->getType() == RenderPassType::RENDER_PASS_ADDITIVE_PARTICLES) { @@ -160,7 +158,6 @@ void KRSprite::render(RenderInfo& ri) } } } - ri.reflectedObjects.pop_back(); } bool KRSprite::getShaderValue(ShaderValue value, float* output) const diff --git a/kraken/resources/scene/KRScene.cpp b/kraken/resources/scene/KRScene.cpp index 0130909..f4d78af 100755 --- a/kraken/resources/scene/KRScene.cpp +++ b/kraken/resources/scene/KRScene.cpp @@ -157,7 +157,9 @@ void KRScene::render(KRNode::RenderInfo& ri) } } else { if ((*itr)->getLODVisibility() > KRNode::LOD_VISIBILITY_PRESTREAM) { + ri.reflectedObjects.push_back(node); node->render(ri); + ri.reflectedObjects.pop_back(); } } } @@ -361,7 +363,9 @@ void KRScene::render(KRNode::RenderInfo& ri, KROctreeNode* pOctreeNode, std::vec } else { if ((*itr)->getLODVisibility() > KRNode::LOD_VISIBILITY_PRESTREAM) { + ri.reflectedObjects.push_back(*itr); (*itr)->render(ri); + ri.reflectedObjects.pop_back(); } } }