From 1fef1e2acdc6d8e115498def2c326e235cee1da3 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Tue, 30 Apr 2024 19:05:55 -0400 Subject: [PATCH] Prepare for dyeable gear --- parts/mdl/mdlpart.cpp | 2 ++ renderer/include/drawobject.h | 2 ++ renderer/src/gamerenderer.cpp | 5 ++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/parts/mdl/mdlpart.cpp b/parts/mdl/mdlpart.cpp index b2b0c5a..069a8e8 100644 --- a/parts/mdl/mdlpart.cpp +++ b/parts/mdl/mdlpart.cpp @@ -253,6 +253,8 @@ RenderMaterial MDLPart::createMaterial(const physis_Material &material) newMaterial.type = MaterialType::Skin; } + newMaterial.tableTexture = renderer->device().createDummyTexture(); + char type = t[t.length() - 5]; auto texture = physis_texture_parse(cache.lookupFile(QLatin1String(material.textures[i]))); if (texture.rgba != nullptr) { diff --git a/renderer/include/drawobject.h b/renderer/include/drawobject.h index 4b499d6..5c6578d 100644 --- a/renderer/include/drawobject.h +++ b/renderer/include/drawobject.h @@ -25,6 +25,8 @@ struct RenderMaterial { std::optional specularTexture; std::optional multiTexture; + Texture tableTexture; + Buffer materialBuffer; }; diff --git a/renderer/src/gamerenderer.cpp b/renderer/src/gamerenderer.cpp index 0e00611..83dd059 100644 --- a/renderer/src/gamerenderer.cpp +++ b/renderer/src/gamerenderer.cpp @@ -1213,7 +1213,7 @@ GameRenderer::createDescriptorFor(const DrawObject *object, const CachedPipeline info->imageView = m_viewPositionBuffer.imageView; } else if (strcmp(name, "g_SamplerDepth") == 0) { info->imageView = m_depthBuffer.imageView; - } else if (strcmp(name, "g_SamplerNormal") == 0) { + } else if (strcmp(name, "g_SamplerNormal") == 0 || strcmp(name, "g_SamplerIndex") == 0) { Q_ASSERT(material); info->imageView = material->normalTexture->imageView; } else if (strcmp(name, "g_SamplerLightDiffuse") == 0) { @@ -1232,6 +1232,9 @@ GameRenderer::createDescriptorFor(const DrawObject *object, const CachedPipeline info->imageView = m_tileNormal.imageView; } else if (strcmp(name, "g_SamplerTileDiffuse") == 0) { info->imageView = m_tileDiffuse.imageView; + } else if (strcmp(name, "g_SamplerTable") == 0) { + Q_ASSERT(material); + info->imageView = material->tableTexture.imageView; } else { info->imageView = m_dummyTex.imageView; qInfo() << "Unknown image" << name;