KRMaterial is now using KRResourceRequest's to load textures
This commit is contained in:
@@ -321,7 +321,7 @@ void KRModel::preStream(const KRViewport& viewport, std::list<KRResourceRequest>
|
|||||||
|
|
||||||
for (int i = 0; i < kMeshLODCount; i++) {
|
for (int i = 0; i < kMeshLODCount; i++) {
|
||||||
if (m_meshes[i].isBound()) {
|
if (m_meshes[i].isBound()) {
|
||||||
m_meshes[i].get()->preStream(lod_coverage);
|
m_meshes[i].get()->preStream(resourceRequests, lod_coverage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -228,32 +228,32 @@ bool KRMaterial::isTransparent()
|
|||||||
return m_tr < 1.0 || m_alpha_mode == KRMATERIAL_ALPHA_MODE_BLENDONESIDE || m_alpha_mode == KRMATERIAL_ALPHA_MODE_BLENDTWOSIDE;
|
return m_tr < 1.0 || m_alpha_mode == KRMATERIAL_ALPHA_MODE_BLENDONESIDE || m_alpha_mode == KRMATERIAL_ALPHA_MODE_BLENDTWOSIDE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KRMaterial::preStream(float lodCoverage)
|
void KRMaterial::preStream(std::list<KRResourceRequest>& resourceRequests, float lodCoverage)
|
||||||
{
|
{
|
||||||
getTextures();
|
getTextures();
|
||||||
|
|
||||||
if (m_ambientMap.isBound()) {
|
if (m_ambientMap.isBound()) {
|
||||||
m_ambientMap.get()->requestResidency(lodCoverage, KRTexture::TEXTURE_USAGE_AMBIENT_MAP);
|
resourceRequests.emplace_back(m_ambientMap.get(), KRTexture::TEXTURE_USAGE_AMBIENT_MAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_diffuseMap.isBound()) {
|
if (m_diffuseMap.isBound()) {
|
||||||
m_diffuseMap.get()->requestResidency(lodCoverage, KRTexture::TEXTURE_USAGE_DIFFUSE_MAP);
|
resourceRequests.emplace_back(m_diffuseMap.get(), KRTexture::TEXTURE_USAGE_DIFFUSE_MAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_normalMap.isBound()) {
|
if (m_normalMap.isBound()) {
|
||||||
m_normalMap.get()->requestResidency(lodCoverage, KRTexture::TEXTURE_USAGE_NORMAL_MAP);
|
resourceRequests.emplace_back(m_normalMap.get(), KRTexture::TEXTURE_USAGE_NORMAL_MAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_specularMap.isBound()) {
|
if (m_specularMap.isBound()) {
|
||||||
m_specularMap.get()->requestResidency(lodCoverage, KRTexture::TEXTURE_USAGE_SPECULAR_MAP);
|
resourceRequests.emplace_back(m_specularMap.get(), KRTexture::TEXTURE_USAGE_SPECULAR_MAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_reflectionMap.isBound()) {
|
if (m_reflectionMap.isBound()) {
|
||||||
m_reflectionMap.get()->requestResidency(lodCoverage, KRTexture::TEXTURE_USAGE_REFLECTION_MAP);
|
resourceRequests.emplace_back(m_reflectionMap.get(), KRTexture::TEXTURE_USAGE_REFLECTION_MAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_reflectionCube.isBound()) {
|
if (m_reflectionCube.isBound()) {
|
||||||
m_reflectionCube.get()->requestResidency(lodCoverage, KRTexture::TEXTURE_USAGE_REFECTION_CUBE);
|
resourceRequests.emplace_back(m_reflectionCube.get(), KRTexture::TEXTURE_USAGE_REFECTION_CUBE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -384,27 +384,22 @@ void KRMaterial::bind(KRNode::RenderInfo& ri, ModelFormat modelFormat, __uint32_
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (bDiffuseMap) {
|
if (bDiffuseMap) {
|
||||||
m_diffuseMap.get()->requestResidency(lod_coverage, KRTexture::TEXTURE_USAGE_DIFFUSE_MAP);
|
|
||||||
pShader->setImageBinding("diffuseTexture", m_diffuseMap.get(), getContext().getSamplerManager()->DEFAULT_WRAPPING_SAMPLER);
|
pShader->setImageBinding("diffuseTexture", m_diffuseMap.get(), getContext().getSamplerManager()->DEFAULT_WRAPPING_SAMPLER);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bSpecMap) {
|
if (bSpecMap) {
|
||||||
m_specularMap.get()->requestResidency(lod_coverage, KRTexture::TEXTURE_USAGE_SPECULAR_MAP);
|
|
||||||
pShader->setImageBinding("specularTexture", m_specularMap.get(), getContext().getSamplerManager()->DEFAULT_WRAPPING_SAMPLER);
|
pShader->setImageBinding("specularTexture", m_specularMap.get(), getContext().getSamplerManager()->DEFAULT_WRAPPING_SAMPLER);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bNormalMap) {
|
if (bNormalMap) {
|
||||||
m_normalMap.get()->requestResidency(lod_coverage, KRTexture::TEXTURE_USAGE_NORMAL_MAP);
|
|
||||||
pShader->setImageBinding("normalTexture", m_normalMap.get(), getContext().getSamplerManager()->DEFAULT_WRAPPING_SAMPLER);
|
pShader->setImageBinding("normalTexture", m_normalMap.get(), getContext().getSamplerManager()->DEFAULT_WRAPPING_SAMPLER);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bReflectionCubeMap) {
|
if (bReflectionCubeMap) {
|
||||||
m_reflectionCube.get()->requestResidency(lod_coverage, KRTexture::TEXTURE_USAGE_REFECTION_CUBE);
|
|
||||||
pShader->setImageBinding("reflectionCubeTexture", m_reflectionCube.get(), getContext().getSamplerManager()->DEFAULT_CLAMPED_SAMPLER);
|
pShader->setImageBinding("reflectionCubeTexture", m_reflectionCube.get(), getContext().getSamplerManager()->DEFAULT_CLAMPED_SAMPLER);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bReflectionMap) {
|
if (bReflectionMap) {
|
||||||
m_reflectionMap.get()->requestResidency(lod_coverage, KRTexture::TEXTURE_USAGE_REFLECTION_MAP);
|
|
||||||
pShader->setImageBinding("reflectionTexture", m_reflectionMap.get(), getContext().getSamplerManager()->DEFAULT_CLAMPED_SAMPLER);
|
pShader->setImageBinding("reflectionTexture", m_reflectionMap.get(), getContext().getSamplerManager()->DEFAULT_CLAMPED_SAMPLER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ public:
|
|||||||
bool needsVertexTangents();
|
bool needsVertexTangents();
|
||||||
|
|
||||||
kraken_stream_level getStreamLevel();
|
kraken_stream_level getStreamLevel();
|
||||||
void preStream(float lodCoverage);
|
void preStream(std::list<KRResourceRequest>& resourceRequests, float lodCoverage);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string m_name;
|
std::string m_name;
|
||||||
|
|||||||
@@ -187,13 +187,13 @@ void KRMesh::getMaterials()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void KRMesh::preStream(float lodCoverage)
|
void KRMesh::preStream(std::list<KRResourceRequest>& resourceRequests, float lodCoverage)
|
||||||
{
|
{
|
||||||
getSubmeshes();
|
getSubmeshes();
|
||||||
getMaterials();
|
getMaterials();
|
||||||
|
|
||||||
for (std::set<KRMaterial*>::iterator mat_itr = m_uniqueMaterials.begin(); mat_itr != m_uniqueMaterials.end(); mat_itr++) {
|
for (std::set<KRMaterial*>::iterator mat_itr = m_uniqueMaterials.begin(); mat_itr != m_uniqueMaterials.end(); mat_itr++) {
|
||||||
(*mat_itr)->preStream(lodCoverage);
|
(*mat_itr)->preStream(resourceRequests, lodCoverage);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Submesh& mesh : m_submeshes) {
|
for (Submesh& mesh : m_submeshes) {
|
||||||
@@ -236,7 +236,6 @@ void KRMesh::render(KRNode::RenderInfo& ri, const std::string& object_name, cons
|
|||||||
{
|
{
|
||||||
//fprintf(stderr, "Rendering model: %s\n", m_name.c_str());
|
//fprintf(stderr, "Rendering model: %s\n", m_name.c_str());
|
||||||
if (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) {
|
if (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) {
|
||||||
preStream(lod_coverage);
|
|
||||||
if (getStreamLevel() == kraken_stream_level::STREAM_LEVEL_OUT) {
|
if (getStreamLevel() == kraken_stream_level::STREAM_LEVEL_OUT) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public:
|
|||||||
virtual ~KRMesh();
|
virtual ~KRMesh();
|
||||||
|
|
||||||
kraken_stream_level getStreamLevel();
|
kraken_stream_level getStreamLevel();
|
||||||
void preStream(float lodCoverage);
|
void preStream(std::list<KRResourceRequest>& resourceRequests, float lodCoverage);
|
||||||
|
|
||||||
bool hasTransparency();
|
bool hasTransparency();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user