Streamlined resource handling in Pre-Stream with KRResourceBinding::submitRequest
This commit is contained in:
@@ -70,6 +70,8 @@ KrResult KRCamera::update(const KrNodeInfo* nodeInfo)
|
||||
|
||||
KRCamera::KRCamera(KRScene& scene, std::string name)
|
||||
: KRNode(scene, name)
|
||||
, m_fontTexture(KRTextureBinding("font", KRTexture::TEXTURE_USAGE_UI))
|
||||
, m_skyBox(KRTextureBinding(KRTexture::TEXTURE_USAGE_SKY_CUBE))
|
||||
{
|
||||
m_surfaceHandle = KR_NULL_HANDLE;
|
||||
m_last_frame_start = 0;
|
||||
@@ -148,16 +150,8 @@ void KRCamera::preStream(const KRViewport& viewport, std::list<KRResourceRequest
|
||||
{
|
||||
KRNode::preStream(viewport, resourceRequests);
|
||||
|
||||
m_skyBox.bind(&getContext());
|
||||
m_fontTexture.bind(&getContext());
|
||||
|
||||
if (m_skyBox.isBound()) {
|
||||
resourceRequests.emplace_back(m_skyBox.get(), KRTexture::TEXTURE_USAGE_SKY_CUBE);
|
||||
}
|
||||
|
||||
if (m_fontTexture.isBound()) {
|
||||
resourceRequests.emplace_back(m_fontTexture.get(), KRTexture::TEXTURE_USAGE_UI);
|
||||
}
|
||||
m_skyBox.submitRequest(&getContext(), resourceRequests);
|
||||
m_fontTexture.submitRequest(&getContext(), resourceRequests);
|
||||
}
|
||||
|
||||
void KRCamera::render(KRNode::RenderInfo& ri)
|
||||
|
||||
@@ -63,7 +63,9 @@ void KRLight::InitNodeInfo(KrNodeInfo* nodeInfo)
|
||||
nodeInfo->light.light_shafts = true;
|
||||
}
|
||||
|
||||
KRLight::KRLight(KRScene& scene, std::string name) : KRNode(scene, name)
|
||||
KRLight::KRLight(KRScene& scene, std::string name)
|
||||
: KRNode(scene, name)
|
||||
, m_flareTexture(KRTextureBinding(KRTexture::TEXTURE_USAGE_LIGHT_FLARE))
|
||||
{
|
||||
m_intensity = 1.0f;
|
||||
m_dust_particle_intensity = 1.0f;
|
||||
@@ -226,11 +228,7 @@ void KRLight::preStream(const KRViewport& viewport, std::list<KRResourceRequest>
|
||||
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);
|
||||
}
|
||||
m_flareTexture.submitRequest(&getContext(), resourceRequests);
|
||||
}
|
||||
|
||||
void KRLight::render(RenderInfo& ri)
|
||||
|
||||
@@ -56,6 +56,7 @@ void KRModel::InitNodeInfo(KrNodeInfo* nodeInfo)
|
||||
|
||||
KRModel::KRModel(KRScene& scene, std::string name)
|
||||
: KRNode(scene, name)
|
||||
, m_lightMap(KRTexture::TEXTURE_USAGE_LIGHT_MAP)
|
||||
, m_min_lod_coverage(0.0f)
|
||||
, m_receivesShadow(true)
|
||||
, m_faces_camera(false)
|
||||
@@ -82,8 +83,8 @@ KRModel::KRModel(KRScene& scene, std::string name)
|
||||
|
||||
KRModel::KRModel(KRScene& scene, std::string instance_name, std::string model_name[kMeshLODCount], std::string light_map, float lod_min_coverage, bool receives_shadow, bool faces_camera, Vector3 rim_color, float rim_power)
|
||||
: KRNode(scene, instance_name)
|
||||
, m_lightMap(light_map, KRTexture::TEXTURE_USAGE_LIGHT_MAP)
|
||||
{
|
||||
m_lightMap.set(light_map);
|
||||
for (int lod = 0; lod < kMeshLODCount; lod++) {
|
||||
m_meshes[lod].set(model_name[lod]);
|
||||
}
|
||||
@@ -312,17 +313,10 @@ void KRModel::preStream(const KRViewport& viewport, std::list<KRResourceRequest>
|
||||
float lod_coverage = viewport.coverage(getBounds());
|
||||
|
||||
for (int i = 0; i < kMeshLODCount; i++) {
|
||||
if (m_meshes[i].isBound()) {
|
||||
m_meshes[i].get()->preStream(resourceRequests, lod_coverage);
|
||||
resourceRequests.emplace_back(m_meshes[i].get(), 0, lod_coverage);
|
||||
}
|
||||
m_meshes[i].submitRequest(&getContext(), resourceRequests, lod_coverage);
|
||||
}
|
||||
|
||||
m_lightMap.bind(&getContext());
|
||||
|
||||
if (m_lightMap.isBound()) {
|
||||
resourceRequests.emplace_back(m_lightMap.get(), KRTexture::TEXTURE_USAGE_LIGHT_MAP);
|
||||
}
|
||||
m_lightMap.submitRequest(&getContext(), resourceRequests);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -54,7 +54,9 @@ void KRSprite::InitNodeInfo(KrNodeInfo* nodeInfo)
|
||||
nodeInfo->sprite.texture = -1;
|
||||
}
|
||||
|
||||
KRSprite::KRSprite(KRScene& scene, std::string name) : KRNode(scene, name)
|
||||
KRSprite::KRSprite(KRScene& scene, std::string name)
|
||||
: KRNode(scene, name)
|
||||
, m_spriteTexture(KRTextureBinding(KRTexture::TEXTURE_USAGE_SPRITE))
|
||||
{
|
||||
m_spriteAlpha = 1.0f;
|
||||
}
|
||||
@@ -117,11 +119,7 @@ void KRSprite::preStream(const KRViewport& viewport, std::list<KRResourceRequest
|
||||
KRNode::preStream(viewport, resourceRequests);
|
||||
|
||||
// Pre-stream sprites, even if the alpha is zero
|
||||
m_spriteTexture.bind(&getContext());
|
||||
|
||||
if (m_spriteTexture.isBound()) {
|
||||
resourceRequests.emplace_back(m_spriteTexture.get(), KRTexture::TEXTURE_USAGE_SPRITE);
|
||||
}
|
||||
m_spriteTexture.submitRequest(&getContext(), resourceRequests);
|
||||
}
|
||||
|
||||
void KRSprite::render(RenderInfo& ri)
|
||||
|
||||
Reference in New Issue
Block a user