Replaced more direct requestResidency calls with KRResourceRequest's

This commit is contained in:
2025-11-14 23:55:44 -08:00
parent 2e9fac869a
commit 274fd7a69e
3 changed files with 16 additions and 8 deletions

View File

@@ -221,6 +221,18 @@ float KRLight::getDecayStart() const
return m_decayStart;
}
void KRLight::preStream(const KRViewport& viewport, std::list<KRResourceRequest>& resourceRequests)
{
KRNode::preStream(viewport, resourceRequests);
// Pre-stream sprites, even if the alpha is zero
m_flareTexture.bind(&getContext());
if (m_flareTexture.isBound()) {
resourceRequests.emplace_back(m_flareTexture.get(), KRTexture::TEXTURE_USAGE_LIGHT_FLARE);
}
}
void KRLight::render(RenderInfo& ri)
{
KRNode::render(ri);
@@ -338,7 +350,7 @@ void KRLight::render(RenderInfo& ri)
}
if (ri.renderPass->getType() == RenderPassType::RENDER_PASS_PARTICLE_OCCLUSION) {
if (m_flareTexture.isSet() && m_flareSize > 0.0f) {
if (m_flareTexture.isBound() && m_flareSize > 0.0f) {
KRMesh* sphereModel = getContext().getMeshManager()->getMesh("__sphere");
if (sphereModel) {
@@ -385,7 +397,7 @@ void KRLight::render(RenderInfo& ri)
}
if (ri.renderPass->getType() == RenderPassType::RENDER_PASS_ADDITIVE_PARTICLES) {
if (m_flareTexture.isSet() && m_flareSize > 0.0f) {
if (m_flareTexture.isBound() && m_flareSize > 0.0f) {
if (m_occlusionQuery) {
int params = 0;
@@ -393,10 +405,6 @@ void KRLight::render(RenderInfo& ri)
GLDEBUG(glDeleteQueriesEXT(1, &m_occlusionQuery));
if (params) {
m_flareTexture.bind(&getContext());
if (m_flareTexture.isBound()) {
m_flareTexture.get()->requestResidency(0.0f, KRTexture::TEXTURE_USAGE_LIGHT_FLARE);
KRMeshManager::KRVBOData& vertices = getContext().getMeshManager()->KRENGINE_VBO_DATA_2D_SQUARE_VERTICES;
// Render light flare on transparency pass
@@ -422,7 +430,6 @@ void KRLight::render(RenderInfo& ri)
m_pContext->getMeshManager()->bindVBO(ri.commandBuffer, &vertices, 1.0f);
vkCmdDraw(ri.commandBuffer, 4, 1, 0, 0);
}
}
}
}

View File

@@ -65,6 +65,7 @@ public:
void setFlareOcclusionSize(float occlusion_size);
void deleteBuffers();
virtual void preStream(const KRViewport& viewport, std::list<KRResourceRequest>& resourceRequests) override;
virtual void render(RenderInfo& ri) override;
int getShadowBufferCount();

View File

@@ -328,7 +328,7 @@ void KRModel::preStream(const KRViewport& viewport, std::list<KRResourceRequest>
m_lightMap.bind(&getContext());
if (m_lightMap.isBound()) {
m_lightMap.get()->requestResidency(lod_coverage, KRTexture::TEXTURE_USAGE_LIGHT_MAP);
resourceRequests.emplace_back(m_lightMap.get(), KRTexture::TEXTURE_USAGE_LIGHT_MAP);
}
}