Try to fix glow and chams crashes

This commit is contained in:
TotallyNotElite 2018-12-13 19:24:28 +01:00
parent 625316c88e
commit 5eccd108d5
4 changed files with 36 additions and 12 deletions

View File

@ -16,15 +16,22 @@ namespace effect_chams
class EffectChams : public IScreenSpaceEffect
{
std::vector<KeyValues *> chams_keyvalues;
public:
virtual void Init();
inline virtual void Shutdown()
{
mat_unlit.Shutdown();
mat_unlit_z.Shutdown();
mat_lit.Shutdown();
mat_lit_z.Shutdown();
init = false;
if (init)
{
mat_unlit.Shutdown();
mat_unlit_z.Shutdown();
mat_lit.Shutdown();
mat_lit_z.Shutdown();
for (auto kv : chams_keyvalues)
kv->deleteThis();
init = false;
}
}
inline virtual void SetParameters(KeyValues *params)

View File

@ -15,17 +15,24 @@ namespace effect_glow
class EffectGlow : public IScreenSpaceEffect
{
std::vector<KeyValues *> glow_keyvalues;
public:
virtual void Init();
inline virtual void Shutdown()
{
mat_unlit.Shutdown();
mat_unlit_z.Shutdown();
mat_blit.Shutdown();
mat_unlit.Shutdown();
mat_unlit_z.Shutdown();
mat_blur_x.Shutdown();
mat_blur_y.Shutdown();
if (init)
{
mat_unlit.Shutdown();
mat_unlit_z.Shutdown();
mat_blit.Shutdown();
mat_unlit.Shutdown();
mat_unlit_z.Shutdown();
mat_blur_x.Shutdown();
mat_blur_y.Shutdown();
for (auto kv : glow_keyvalues)
kv->deleteThis();
}
}
inline virtual void SetParameters(KeyValues *params)

View File

@ -35,6 +35,7 @@ CatCommand fix_black_chams("fix_black_chams", "Fix Black Chams", []() {
effect_chams::g_EffectChams.Shutdown();
effect_chams::g_EffectChams.Init();
});
void EffectChams::Init()
{
logging::Info("Init EffectChams...");
@ -43,12 +44,14 @@ void EffectChams::Init()
kv->SetString("$basetexture", "vgui/white_additive");
kv->SetInt("$ignorez", 0);
mat_unlit.Init("__cathook_echams_unlit", kv);
chams_keyvalues.push_back(kv);
}
{
KeyValues *kv = new KeyValues("UnlitGeneric");
kv->SetString("$basetexture", "vgui/white_additive");
kv->SetInt("$ignorez", 1);
mat_unlit_z.Init("__cathook_echams_unlit_z", kv);
chams_keyvalues.push_back(kv);
}
{
KeyValues *kv = new KeyValues("VertexLitGeneric");
@ -56,6 +59,7 @@ void EffectChams::Init()
kv->SetInt("$ignorez", 0);
kv->SetInt("$halflambert", 1);
mat_lit.Init("__cathook_echams_lit", kv);
chams_keyvalues.push_back(kv);
}
{
KeyValues *kv = new KeyValues("VertexLitGeneric");
@ -63,6 +67,7 @@ void EffectChams::Init()
kv->SetInt("$ignorez", 1);
kv->SetInt("$halflambert", 1);
mat_lit_z.Init("__cathook_echams_lit_z", kv);
chams_keyvalues.push_back(kv);
}
logging::Info("Init done!");
init = true;

View File

@ -135,12 +135,14 @@ void EffectGlow::Init()
kv->SetString("$basetexture", "vgui/white_additive");
kv->SetInt("$ignorez", 0);
mat_unlit.Init("__cathook_glow_unlit", kv);
glow_keyvalues.push_back(kv);
}
{
KeyValues *kv = new KeyValues("UnlitGeneric");
kv->SetString("$basetexture", "vgui/white_additive");
kv->SetInt("$ignorez", 1);
mat_unlit_z.Init("__cathook_glow_unlit_z", kv);
glow_keyvalues.push_back(kv);
}
// Initialize 2 buffers
GetBuffer(1);
@ -151,6 +153,7 @@ void EffectGlow::Init()
kv->SetInt("$additive", 1);
mat_blit.Init("__cathook_glow_blit", TEXTURE_GROUP_CLIENT_EFFECTS, kv);
mat_blit->Refresh();
glow_keyvalues.push_back(kv);
}
{
KeyValues *kv = new KeyValues("BlurFilterX");
@ -160,6 +163,7 @@ void EffectGlow::Init()
kv->SetInt("$alphatest", 1);
mat_blur_x.Init("_cathook_blurx", kv);
mat_blur_x->Refresh();
glow_keyvalues.push_back(kv);
}
{
KeyValues *kv = new KeyValues("BlurFilterY");
@ -170,6 +174,7 @@ void EffectGlow::Init()
kv->SetInt("$alphatest", 1);
mat_blur_y.Init("_cathook_blury", kv);
mat_blur_y->Refresh();
glow_keyvalues.push_back(kv);
}
{
SS_NeverSolid.m_bEnable = true;