Move more repeated logic out of node render methods into KRScene

This commit is contained in:
2025-11-13 22:17:11 -08:00
parent e029e0b3fc
commit dbf31ceebe
7 changed files with 5 additions and 20 deletions

View File

@@ -127,9 +127,6 @@ int KRDirectionalLight::configureShadowBufferViewports(const KRViewport& viewpor
void KRDirectionalLight::render(RenderInfo& ri) void KRDirectionalLight::render(RenderInfo& ri)
{ {
if (m_lod_visible <= LOD_VISIBILITY_PRESTREAM) return;
ri.reflectedObjects.push_back(this); ri.reflectedObjects.push_back(this);
KRLight::render(ri); KRLight::render(ri);

View File

@@ -225,8 +225,6 @@ void KRLight::render(RenderInfo& ri)
{ {
KRNode::render(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))) { 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)); allocateShadowBuffers(configureShadowBufferViewports(*ri.viewport));
renderShadowBuffers(ri); renderShadowBuffers(ri);
@@ -429,7 +427,6 @@ void KRLight::render(RenderInfo& ri)
} }
} }
ri.reflectedObjects.pop_back();
} }
void KRLight::allocateShadowBuffers(int cBuffers) void KRLight::allocateShadowBuffers(int cBuffers)

View File

@@ -254,8 +254,6 @@ void KRModel::loadModel()
void KRModel::render(KRNode::RenderInfo& ri) void KRModel::render(KRNode::RenderInfo& ri)
{ {
ri.reflectedObjects.push_back(this);
KRNode::render(ri); KRNode::render(ri);
// Don't render meshes on second pass of the deferred lighting renderer, as only lights will be applied // 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_ADDITIVE_PARTICLES
&& ri.renderPass->getType() != RenderPassType::RENDER_PASS_PARTICLE_OCCLUSION && ri.renderPass->getType() != RenderPassType::RENDER_PASS_PARTICLE_OCCLUSION
&& ri.renderPass->getType()!= RenderPassType::RENDER_PASS_VOLUMETRIC_EFFECTS_ADDITIVE && ri.renderPass->getType()!= RenderPassType::RENDER_PASS_VOLUMETRIC_EFFECTS_ADDITIVE
&& ri.renderPass->getType() != RenderPassType::RENDER_PASS_SHADOWMAP && ri.renderPass->getType() != RenderPassType::RENDER_PASS_SHADOWMAP) {
&& ri.renderPass->getType() != RenderPassType::RENDER_PASS_PRESTREAM) {
loadModel(); loadModel();
/* /*
@@ -315,8 +312,6 @@ void KRModel::render(KRNode::RenderInfo& ri)
} }
} }
} }
ri.reflectedObjects.pop_back();
} }
void KRModel::preStream(const KRViewport& viewport) void KRModel::preStream(const KRViewport& viewport)

View File

@@ -82,8 +82,6 @@ bool KRParticleSystemNewtonian::hasPhysics()
void KRParticleSystemNewtonian::render(RenderInfo& ri) void KRParticleSystemNewtonian::render(RenderInfo& ri)
{ {
ri.reflectedObjects.push_back(this);
KRNode::render(ri); KRNode::render(ri);
if (ri.renderPass->getType() == RenderPassType::RENDER_PASS_ADDITIVE_PARTICLES) { 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); vkCmdDraw(ri.commandBuffer, particle_count * 3, 1, 0, 0);
} }
} }
ri.reflectedObjects.pop_back();
} }
bool KRParticleSystemNewtonian::getShaderValue(ShaderValue value, float* output) const bool KRParticleSystemNewtonian::getShaderValue(ShaderValue value, float* output) const

View File

@@ -75,8 +75,6 @@ AABB KRPointLight::getBounds()
void KRPointLight::render(RenderInfo& ri) void KRPointLight::render(RenderInfo& ri)
{ {
if (m_lod_visible <= LOD_VISIBILITY_PRESTREAM) return;
ri.reflectedObjects.push_back(this); ri.reflectedObjects.push_back(this);
KRLight::render(ri); KRLight::render(ri);

View File

@@ -126,8 +126,6 @@ void KRSprite::preStream(const KRViewport& viewport)
void KRSprite::render(RenderInfo& ri) void KRSprite::render(RenderInfo& ri)
{ {
ri.reflectedObjects.push_back(this);
KRNode::render(ri); KRNode::render(ri);
if (ri.renderPass->getType() == RenderPassType::RENDER_PASS_ADDITIVE_PARTICLES) { 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 bool KRSprite::getShaderValue(ShaderValue value, float* output) const

View File

@@ -157,7 +157,9 @@ void KRScene::render(KRNode::RenderInfo& ri)
} }
} else { } else {
if ((*itr)->getLODVisibility() > KRNode::LOD_VISIBILITY_PRESTREAM) { if ((*itr)->getLODVisibility() > KRNode::LOD_VISIBILITY_PRESTREAM) {
ri.reflectedObjects.push_back(node);
node->render(ri); node->render(ri);
ri.reflectedObjects.pop_back();
} }
} }
} }
@@ -361,7 +363,9 @@ void KRScene::render(KRNode::RenderInfo& ri, KROctreeNode* pOctreeNode, std::vec
} else { } else {
if ((*itr)->getLODVisibility() > KRNode::LOD_VISIBILITY_PRESTREAM) if ((*itr)->getLODVisibility() > KRNode::LOD_VISIBILITY_PRESTREAM)
{ {
ri.reflectedObjects.push_back(*itr);
(*itr)->render(ri); (*itr)->render(ri);
ri.reflectedObjects.pop_back();
} }
} }
} }