Try to fix glow and chams crashes
This commit is contained in:
parent
625316c88e
commit
5eccd108d5
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user