From 37b30901b3b652933865eb791641d8e5c11d8eb4 Mon Sep 17 00:00:00 2001 From: vladislavbelov Date: Tue, 15 Mar 2022 22:13:22 +0000 Subject: [PATCH] Removes C++ code for conditional defines removed in f29d059617. Differential Revision: https://code.wildfiregames.com/D4551 This was SVN commit r26661. --- binaries/data/config/default.cfg | 6 --- source/graphics/Decal.cpp | 3 +- source/graphics/Material.cpp | 37 +----------------- source/graphics/Material.h | 19 ++------- source/graphics/MaterialManager.cpp | 60 ----------------------------- source/graphics/Model.cpp | 4 -- source/graphics/ShaderDefines.cpp | 12 ------ source/graphics/ShaderDefines.h | 25 ------------ source/renderer/DecalRData.cpp | 2 +- source/renderer/ModelRenderer.cpp | 30 +-------------- source/renderer/PatchRData.cpp | 4 +- 11 files changed, 10 insertions(+), 192 deletions(-) diff --git a/binaries/data/config/default.cfg b/binaries/data/config/default.cfg index 793792ae84..3f169e9a3e 100644 --- a/binaries/data/config/default.cfg +++ b/binaries/data/config/default.cfg @@ -159,12 +159,6 @@ variant_diversity = "full" ; Quality level of shader effects (set to 10 to display all effects) materialmgr.quality = 2.0 -; Maximum distance to display parallax effect. Set to 0 to disable parallax. -materialmgr.PARALLAX_DIST.max = 150 -; Maximum distance to display high quality parallax effect. -materialmgr.PARALLAX_HQ_DIST.max = 75 -; Maximum distance to display very high quality parallax effect. Set to 30 to enable. -materialmgr.PARALLAX_VHQ_DIST.max = 0 ;;;;;;;;;;;;;;;;;;;;;;;; ; Color of the sky (in "r g b" format) diff --git a/source/graphics/Decal.cpp b/source/graphics/Decal.cpp index 513c456610..1594d462e8 100644 --- a/source/graphics/Decal.cpp +++ b/source/graphics/Decal.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2022 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -112,5 +112,4 @@ void CModelDecal::SetTransform(const CMatrix3D& transform) void CModelDecal::RemoveShadows() { m_Decal.m_Material.AddShaderDefine(str_DISABLE_RECEIVE_SHADOWS, str_1); - m_Decal.m_Material.RecomputeCombinedShaderDefines(); } diff --git a/source/graphics/Material.cpp b/source/graphics/Material.cpp index 1273fbdac3..c8653d58d1 100644 --- a/source/graphics/Material.cpp +++ b/source/graphics/Material.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2022 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -35,13 +35,6 @@ void CMaterial::SetShaderEffect(const CStr& effect) void CMaterial::AddShaderDefine(CStrIntern key, CStrIntern value) { m_ShaderDefines.Add(key, value); - m_CombinedShaderDefines.clear(); -} - -void CMaterial::AddConditionalDefine(const char* defname, const char* defvalue, int type, std::vector &args) -{ - m_ConditionalDefines.Add(defname, defvalue, type, args); - m_CombinedShaderDefines.clear(); } void CMaterial::AddStaticUniform(const char* key, const CVector4D& value) @@ -66,31 +59,3 @@ void CMaterial::AddRequiredSampler(const CStr& samplerName) CStrIntern string(samplerName); m_RequiredSamplers.push_back(string); } - - -// Set up m_CombinedShaderDefines so that index i contains m_ShaderDefines, plus -// the extra defines from m_ConditionalDefines[j] for all j where bit j is set in i. -// This lets GetShaderDefines() cheaply return the defines for any combination of conditions. -// -// (This might scale badly if we had a large number of conditional defines per material, -// but currently we don't expect to have many.) -void CMaterial::RecomputeCombinedShaderDefines() -{ - m_CombinedShaderDefines.clear(); - int size = m_ConditionalDefines.GetSize(); - - // Loop over all 2^n combinations of flags - for (int i = 0; i < (1 << size); i++) - { - CShaderDefines defs = m_ShaderDefines; - for (int j = 0; j < size; j++) - { - if (i & (1 << j)) - { - const CShaderConditionalDefines::CondDefine& def = m_ConditionalDefines.GetItem(j); - defs.Add(def.m_DefName, def.m_DefValue); - } - } - m_CombinedShaderDefines.push_back(defs); - } -} diff --git a/source/graphics/Material.h b/source/graphics/Material.h index eb4d20280e..d4de7015de 100644 --- a/source/graphics/Material.h +++ b/source/graphics/Material.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2020 Wildfire Games. +/* Copyright (C) 2022 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -56,15 +56,7 @@ public: // Must call RecomputeCombinedShaderDefines after this, before rendering with this material void AddShaderDefine(CStrIntern key, CStrIntern value); - // conditionFlags is a bitmask representing which indexes of the - // GetConditionalDefines() list are currently matching. - // Use 0 if you don't care about conditional defines. - const CShaderDefines& GetShaderDefines(uint32_t conditionFlags) const { return m_CombinedShaderDefines.at(conditionFlags); } - - // Must call RecomputeCombinedShaderDefines after this, before rendering with this material - void AddConditionalDefine(const char* defname, const char* defvalue, int type, std::vector &args); - - const CShaderConditionalDefines& GetConditionalDefines() const { return m_ConditionalDefines; } + const CShaderDefines& GetShaderDefines() const { return m_ShaderDefines; } void AddStaticUniform(const char* key, const CVector4D& value); const CShaderUniforms& GetStaticUniforms() const { return m_StaticUniforms; } @@ -78,9 +70,6 @@ public: void AddRequiredSampler(const CStr& samplerName); const std::vector& GetRequiredSampler() const { return m_RequiredSamplers; } - // Must be called after all AddShaderDefine and AddConditionalDefine - void RecomputeCombinedShaderDefines(); - private: // This pointer is kept to make it easier for the fixed pipeline to @@ -92,12 +81,10 @@ private: CStrIntern m_ShaderEffect; CShaderDefines m_ShaderDefines; - CShaderConditionalDefines m_ConditionalDefines; - std::vector m_CombinedShaderDefines; CShaderUniforms m_StaticUniforms; CShaderRenderQueries m_RenderQueries; bool m_AlphaBlending; }; -#endif +#endif // INCLUDED_MATERIAL diff --git a/source/graphics/MaterialManager.cpp b/source/graphics/MaterialManager.cpp index bd6fb07d22..362f5f0d7c 100644 --- a/source/graphics/MaterialManager.cpp +++ b/source/graphics/MaterialManager.cpp @@ -63,7 +63,6 @@ CMaterial CMaterialManager::LoadMaterial(const VfsPath& pathname) EL(uniform); EL(renderquery); EL(required_texture); - EL(conditional_define); AT(effect); AT(if); AT(define); @@ -71,10 +70,6 @@ CMaterial CMaterialManager::LoadMaterial(const VfsPath& pathname) AT(material); AT(name); AT(value); - AT(type); - AT(min); - AT(max); - AT(conf); #undef AT #undef EL @@ -117,59 +112,6 @@ CMaterial CMaterialManager::LoadMaterial(const VfsPath& pathname) { material.AddShaderDefine(CStrIntern(attrs.GetNamedItem(at_name)), CStrIntern(attrs.GetNamedItem(at_value))); } - else if (token == el_conditional_define) - { - std::vector args; - - CStr type = attrs.GetNamedItem(at_type).c_str(); - int typeID = -1; - - if (type == CStr("draw_range")) - { - typeID = DCOND_DISTANCE; - - float valmin = -1.0f; - float valmax = -1.0f; - - CStr conf = attrs.GetNamedItem(at_conf); - if (!conf.empty()) - { - CFG_GET_VAL("materialmgr." + conf + ".min", valmin); - CFG_GET_VAL("materialmgr." + conf + ".max", valmax); - } - else - { - CStr dmin = attrs.GetNamedItem(at_min); - if (!dmin.empty()) - valmin = attrs.GetNamedItem(at_min).ToFloat(); - - CStr dmax = attrs.GetNamedItem(at_max); - if (!dmax.empty()) - valmax = attrs.GetNamedItem(at_max).ToFloat(); - } - - args.push_back(valmin); - args.push_back(valmax); - - if (valmin >= 0.0f) - { - std::stringstream sstr; - sstr << valmin; - material.AddShaderDefine(CStrIntern(conf + "_MIN"), CStrIntern(sstr.str())); - } - - if (valmax >= 0.0f) - { - std::stringstream sstr; - sstr << valmax; - material.AddShaderDefine(CStrIntern(conf + "_MAX"), CStrIntern(sstr.str())); - } - } - - material.AddConditionalDefine(attrs.GetNamedItem(at_name).c_str(), - attrs.GetNamedItem(at_value).c_str(), - typeID, args); - } else if (token == el_uniform) { std::stringstream str(attrs.GetNamedItem(at_value)); @@ -189,8 +131,6 @@ CMaterial CMaterialManager::LoadMaterial(const VfsPath& pathname) } } - material.RecomputeCombinedShaderDefines(); - m_Materials[pathname] = material; return material; } diff --git a/source/graphics/Model.cpp b/source/graphics/Model.cpp index 01258f26dd..afd2ae4bfa 100644 --- a/source/graphics/Model.cpp +++ b/source/graphics/Model.cpp @@ -530,10 +530,7 @@ void CModel::AddFlagsRec(int flags) m_Flags |= flags; if (flags & MODELFLAG_IGNORE_LOS) - { m_Material.AddShaderDefine(str_IGNORE_LOS, str_1); - m_Material.RecomputeCombinedShaderDefines(); - } for (size_t i = 0; i < m_Props.size(); ++i) if (m_Props[i].m_Model->ToCModel()) @@ -545,7 +542,6 @@ void CModel::RemoveShadowsRec() m_Flags &= ~MODELFLAG_CASTSHADOWS; m_Material.AddShaderDefine(str_DISABLE_RECEIVE_SHADOWS, str_1); - m_Material.RecomputeCombinedShaderDefines(); for (size_t i = 0; i < m_Props.size(); ++i) { diff --git a/source/graphics/ShaderDefines.cpp b/source/graphics/ShaderDefines.cpp index 9a668f055f..2624a2d947 100644 --- a/source/graphics/ShaderDefines.cpp +++ b/source/graphics/ShaderDefines.cpp @@ -251,18 +251,6 @@ void CShaderRenderQueries::Add(const char* name) } } -void CShaderConditionalDefines::Add(const char* defname, const char* defvalue, int type, std::vector &args) -{ - CondDefine cd; - cd.m_DefName = CStrIntern(defname); - cd.m_DefValue = CStrIntern(defvalue); - cd.m_CondArgs = args; - cd.m_CondType = type; - - m_Defines.push_back(cd); -} - - // Explicit instantiations: template<> CShaderParams::InternedItems_t CShaderParams::s_InternedItems = CShaderParams::InternedItems_t(); diff --git a/source/graphics/ShaderDefines.h b/source/graphics/ShaderDefines.h index bb8f123ca2..f02bade4f7 100644 --- a/source/graphics/ShaderDefines.h +++ b/source/graphics/ShaderDefines.h @@ -206,29 +206,4 @@ private: std::vector m_Items; }; - -enum DEFINE_CONDITION_TYPES -{ - DCOND_DISTANCE -}; - -class CShaderConditionalDefines -{ -public: - struct CondDefine - { - CStrIntern m_DefName; - CStrIntern m_DefValue; - int m_CondType; - std::vector m_CondArgs; - }; - - void Add(const char* defname, const char* defvalue, int type, std::vector &args); - size_t GetSize() const { return m_Defines.size(); } - const CondDefine& GetItem(size_t i) const { return m_Defines[i]; } - -private: - std::vector m_Defines; -}; - #endif // INCLUDED_SHADERDEFINES diff --git a/source/renderer/DecalRData.cpp b/source/renderer/DecalRData.cpp index 7dd31479ff..10356e2bcf 100644 --- a/source/renderer/DecalRData.cpp +++ b/source/renderer/DecalRData.cpp @@ -116,7 +116,7 @@ void CDecalRData::RenderDecals( } CShaderDefines defines = contextDecal; - defines.SetMany(material.GetShaderDefines(0)); + defines.SetMany(material.GetShaderDefines()); CShaderTechniquePtr techBase = g_Renderer.GetShaderManager().LoadEffect( material.GetShaderEffect(), defines); if (!techBase) diff --git a/source/renderer/ModelRenderer.cpp b/source/renderer/ModelRenderer.cpp index 7276d97a91..fef3734ade 100644 --- a/source/renderer/ModelRenderer.cpp +++ b/source/renderer/ModelRenderer.cpp @@ -430,34 +430,8 @@ void ShaderModelRenderer::Render( for (size_t i = 0; i < m->submissions[cullGroup].size(); ++i) { CModel* model = m->submissions[cullGroup][i]; - - uint32_t condFlags = 0; - - const CShaderConditionalDefines& condefs = model->GetMaterial().GetConditionalDefines(); - for (size_t j = 0; j < condefs.GetSize(); ++j) - { - const CShaderConditionalDefines::CondDefine& item = condefs.GetItem(j); - int type = item.m_CondType; - switch (type) - { - case DCOND_DISTANCE: - { - CVector3D modelpos = model->GetTransform().GetTranslation(); - float dist = worldToCam.Transform(modelpos).Z; - - float dmin = item.m_CondArgs[0]; - float dmax = item.m_CondArgs[1]; - - if ((dmin < 0 || dist >= dmin) && (dmax < 0 || dist < dmax)) - condFlags |= (1 << j); - - break; - } - } - } - - CShaderDefines defs = model->GetMaterial().GetShaderDefines(condFlags); - SMRMaterialBucketKey key(model->GetMaterial().GetShaderEffect(), defs); + const CShaderDefines& defines = model->GetMaterial().GetShaderDefines(); + SMRMaterialBucketKey key(model->GetMaterial().GetShaderEffect(), defines); MaterialBuckets_t::iterator it = materialBuckets.find(key); if (it == materialBuckets.end()) diff --git a/source/renderer/PatchRData.cpp b/source/renderer/PatchRData.cpp index 7827eccf43..1fca4149ec 100644 --- a/source/renderer/PatchRData.cpp +++ b/source/renderer/PatchRData.cpp @@ -741,7 +741,7 @@ void CPatchRData::RenderBases( continue; } CShaderDefines defines = context; - defines.SetMany(material.GetShaderDefines(0)); + defines.SetMany(material.GetShaderDefines()); CShaderTechniquePtr techBase = g_Renderer.GetShaderManager().LoadEffect( material.GetShaderEffect(), defines); @@ -954,7 +954,7 @@ void CPatchRData::RenderBlends( if (!bestTex->GetMaterial().GetSamplers().empty()) { CShaderDefines defines = contextBlend; - defines.SetMany(bestTex->GetMaterial().GetShaderDefines(0)); + defines.SetMany(bestTex->GetMaterial().GetShaderDefines()); layer.m_ShaderTech = g_Renderer.GetShaderManager().LoadEffect( bestTex->GetMaterial().GetShaderEffect(), defines); }