WIP refactoring to move resource streaming to use KRResourceRequest lists

This commit is contained in:
2025-11-14 22:30:08 -08:00
parent d664e670f4
commit dec5872cf6
15 changed files with 95 additions and 21 deletions

View File

@@ -143,14 +143,14 @@ const std::string KRCamera::getSkyBox() const
return m_skyBox.getName();
}
void KRCamera::preStream(const KRViewport& viewport)
void KRCamera::preStream(const KRViewport& viewport, std::list<KRResourceRequest>& resourceRequests)
{
KRNode::preStream(viewport);
KRNode::preStream(viewport, resourceRequests);
m_skyBox.bind(&getContext());
if (m_skyBox.isBound()) {
m_skyBox.get()->requestResidency(0.0f, KRTexture::TEXTURE_USAGE_SKY_CUBE);
resourceRequests.emplace_back(m_skyBox.get(), KRTexture::TEXTURE_USAGE_SKY_CUBE);
}
}

View File

@@ -61,7 +61,7 @@ public:
void renderFrame(VkCommandBuffer& commandBuffer, KRSurface& compositeSurface, KRRenderGraph& renderGraph);
void preStream(const KRViewport& viewport) final;
void preStream(const KRViewport& viewport, std::list<KRResourceRequest>& resourceRequests) final;
void render(KRNode::RenderInfo& ri) final;
KRRenderSettings settings;

View File

@@ -313,9 +313,9 @@ void KRModel::render(KRNode::RenderInfo& ri)
}
}
void KRModel::preStream(const KRViewport& viewport)
void KRModel::preStream(const KRViewport& viewport, std::list<KRResourceRequest>& resourceRequests)
{
KRNode::preStream(viewport);
KRNode::preStream(viewport, resourceRequests);
loadModel();
float lod_coverage = viewport.coverage(getBounds());

View File

@@ -63,7 +63,7 @@ public:
virtual tinyxml2::XMLElement* saveXML(tinyxml2::XMLNode* parent);
virtual void render(KRNode::RenderInfo& ri) override;
virtual void preStream(const KRViewport& viewport) override;
virtual void preStream(const KRViewport& viewport, std::list<KRResourceRequest>& resourceRequests) override;
virtual hydra::AABB getBounds();

View File

@@ -684,7 +684,7 @@ KRNode* KRNode::LoadXML(KRScene& scene, tinyxml2::XMLElement* e)
return new_node;
}
void KRNode::preStream(const KRViewport& viewport)
void KRNode::preStream(const KRViewport& viewport, std::list<KRResourceRequest>& resourceRequests)
{
}

View File

@@ -32,6 +32,7 @@
#pragma once
#include "resources/KRResource.h"
#include "resources/KRResourceRequest.h"
#include "KRViewport.h"
#include "KROctreeNode.h"
#include "KRBehavior.h"
@@ -216,7 +217,7 @@ public:
KRScene& getScene();
virtual void preStream(const KRViewport& viewport);
virtual void preStream(const KRViewport& viewport, std::list<KRResourceRequest>& resourceRequests);
virtual void render(RenderInfo& ri);
virtual void physicsUpdate(float deltaTime);

View File

@@ -112,15 +112,15 @@ AABB KRSprite::getBounds()
}
void KRSprite::preStream(const KRViewport& viewport)
void KRSprite::preStream(const KRViewport& viewport, std::list<KRResourceRequest>& resourceRequests)
{
KRNode::preStream(viewport);
KRNode::preStream(viewport, resourceRequests);
// Pre-stream sprites, even if the alpha is zero
m_spriteTexture.bind(&getContext());
if (m_spriteTexture.isBound()) {
m_spriteTexture.get()->requestResidency(0.0f, KRTexture::TEXTURE_USAGE_SPRITE);
resourceRequests.emplace_back(m_spriteTexture.get(), KRTexture::TEXTURE_USAGE_SPRITE);
}
}

View File

@@ -52,7 +52,7 @@ public:
void setSpriteAlpha(float alpha);
float getSpriteAlpha() const;
virtual void preStream(const KRViewport& viewport) override;
virtual void preStream(const KRViewport& viewport, std::list<KRResourceRequest>& resourceRequests) override;
virtual void render(RenderInfo& ri) override;
virtual hydra::AABB getBounds() override;