Removes C++ code for conditional defines removed in f29d059617
.
Differential Revision: https://code.wildfiregames.com/D4551 This was SVN commit r26661.
This commit is contained in:
parent
7f279c695d
commit
37b30901b3
@ -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)
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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<float> &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);
|
||||
}
|
||||
}
|
||||
|
@ -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<float> &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<CStrIntern>& 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<CShaderDefines> m_CombinedShaderDefines;
|
||||
CShaderUniforms m_StaticUniforms;
|
||||
CShaderRenderQueries m_RenderQueries;
|
||||
|
||||
bool m_AlphaBlending;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif // INCLUDED_MATERIAL
|
||||
|
@ -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<float> 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;
|
||||
}
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -251,18 +251,6 @@ void CShaderRenderQueries::Add(const char* name)
|
||||
}
|
||||
}
|
||||
|
||||
void CShaderConditionalDefines::Add(const char* defname, const char* defvalue, int type, std::vector<float> &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<CStrIntern>::InternedItems_t CShaderParams<CStrIntern>::s_InternedItems = CShaderParams<CStrIntern>::InternedItems_t();
|
||||
|
@ -206,29 +206,4 @@ private:
|
||||
std::vector<RenderQuery> m_Items;
|
||||
};
|
||||
|
||||
|
||||
enum DEFINE_CONDITION_TYPES
|
||||
{
|
||||
DCOND_DISTANCE
|
||||
};
|
||||
|
||||
class CShaderConditionalDefines
|
||||
{
|
||||
public:
|
||||
struct CondDefine
|
||||
{
|
||||
CStrIntern m_DefName;
|
||||
CStrIntern m_DefValue;
|
||||
int m_CondType;
|
||||
std::vector<float> m_CondArgs;
|
||||
};
|
||||
|
||||
void Add(const char* defname, const char* defvalue, int type, std::vector<float> &args);
|
||||
size_t GetSize() const { return m_Defines.size(); }
|
||||
const CondDefine& GetItem(size_t i) const { return m_Defines[i]; }
|
||||
|
||||
private:
|
||||
std::vector<CondDefine> m_Defines;
|
||||
};
|
||||
|
||||
#endif // INCLUDED_SHADERDEFINES
|
||||
|
@ -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)
|
||||
|
@ -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())
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user