add adapter for specgloss materials

This commit is contained in:
WLs50
2025-03-17 11:12:51 +01:00
parent eaab6a29e4
commit e8fc147b5f
2 changed files with 16 additions and 0 deletions

View File

@@ -129,6 +129,12 @@ std::string_view MaterialAdapterLegacyMatFile::GetShader() const {
if (m_shader == "water") {
return "legacy_water";
}
if (IsSpecGlossShader() && HasSpecGlossMap()) {
if (IsNormalMapShader() && HasNormalMap()) {
return "legacy_normalmap_specgloss";
}
return "legacy_specgloss";
}
if (IsNormalMapShader() && HasNormalMap()) {
return "legacy_normalmap";
}
@@ -252,11 +258,19 @@ bool MaterialAdapterLegacyMatFile::HasNormalMap() const {
m_texture_mapping.find("2:") != m_texture_mapping.end();
}
bool MaterialAdapterLegacyMatFile::HasSpecGlossMap() const {
return m_texture_mapping.find("_specgloss:") != m_texture_mapping.end();
}
bool MaterialAdapterLegacyMatFile::IsNormalMapShader() const {
return m_shader.find("normalmap") != std::string::npos ||
m_shader.find("parallax") != std::string::npos;
}
bool MaterialAdapterLegacyMatFile::IsSpecGlossShader() const {
return m_shader.find("specgloss") != std::string::npos;
}
std::optional<float> MaterialAdapterLegacyMatFile::GetOpacity() const {
return m_opacity;
}

View File

@@ -72,6 +72,8 @@ struct MaterialAdapterLegacyMatFile : public MaterialAdapterInternal {
glm::dvec2 m_size{-1., -1.};
virtual glm::dvec2 GetSize() const override { return m_size; }
bool HasNormalMap() const;
bool HasSpecGlossMap() const;
bool IsSpecGlossShader() const;
bool IsNormalMapShader() const;
std::unordered_map<std::string, TextureEntry> m_texture_mapping;
virtual int GetShadowRank() const override { return m_shadow_rank; }