prevent hardlock on glow draw model
This commit is contained in:
parent
d8742dd83a
commit
1fb7357053
@ -252,7 +252,6 @@ void EffectGlow::BeginRenderGlow() {
|
|||||||
ptr->ClearBuffers(true, false);
|
ptr->ClearBuffers(true, false);
|
||||||
mat_unlit_z->AlphaModulate(1.0f);
|
mat_unlit_z->AlphaModulate(1.0f);
|
||||||
ptr->DepthRange(0.0f, 0.01f);
|
ptr->DepthRange(0.0f, 0.01f);
|
||||||
g_IVModelRender->ForcedMaterialOverride(mat_unlit_z);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EffectGlow::EndRenderGlow() {
|
void EffectGlow::EndRenderGlow() {
|
||||||
@ -309,9 +308,11 @@ void EffectGlow::DrawToBuffer(IClientEntity* entity) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EffectGlow::DrawEntity(IClientEntity* entity) {
|
void EffectGlow::DrawEntity(IClientEntity* entity) {
|
||||||
|
g_IVModelRender->ForcedMaterialOverride(mat_unlit_z);
|
||||||
entity->DrawModel(1);
|
entity->DrawModel(1);
|
||||||
IClientEntity* attach = g_IEntityList->GetClientEntity(*(int*)((uintptr_t)entity + netvar.m_Collision - 24) & 0xFFF);
|
IClientEntity* attach = g_IEntityList->GetClientEntity(*(int*)((uintptr_t)entity + netvar.m_Collision - 24) & 0xFFF);
|
||||||
while (attach) {
|
int passes = 0;
|
||||||
|
while (attach && passes++ < 32) {
|
||||||
if (attach->ShouldDraw()) {
|
if (attach->ShouldDraw()) {
|
||||||
attach->DrawModel(1);
|
attach->DrawModel(1);
|
||||||
}
|
}
|
||||||
@ -332,7 +333,7 @@ void EffectGlow::RenderGlow(IClientEntity* entity) {
|
|||||||
|
|
||||||
void EffectGlow::Render(int x, int y, int w, int h) {
|
void EffectGlow::Render(int x, int y, int w, int h) {
|
||||||
if (!init) Init();
|
if (!init) Init();
|
||||||
if (!cathook || (g_IEngine->IsTakingScreenshot() && clean_screenshots)) return;
|
if (!cathook || (g_IEngine->IsTakingScreenshot() && clean_screenshots) || g_Settings.bInvalid) return;
|
||||||
if (!enable) return;
|
if (!enable) return;
|
||||||
CMatRenderContextPtr ptr(g_IMaterialSystem->GetRenderContext());
|
CMatRenderContextPtr ptr(g_IMaterialSystem->GetRenderContext());
|
||||||
ITexture* orig = ptr->GetRenderTarget();
|
ITexture* orig = ptr->GetRenderTarget();
|
||||||
@ -360,7 +361,7 @@ void EffectGlow::Render(int x, int y, int w, int h) {
|
|||||||
ptr->ClearBuffers(true, false);
|
ptr->ClearBuffers(true, false);
|
||||||
ptr->DrawScreenSpaceRectangle(mat_blur_x, x, y, w, h, 0, 0, w - 1, h - 1, w, h);
|
ptr->DrawScreenSpaceRectangle(mat_blur_x, x, y, w, h, 0, 0, w - 1, h - 1, w, h);
|
||||||
ptr->SetRenderTarget(GetBuffer(1));
|
ptr->SetRenderTarget(GetBuffer(1));
|
||||||
static IMaterialVar* blury_bloomamount = mat_blur_y->FindVar("$bloomamount", nullptr);
|
IMaterialVar* blury_bloomamount = mat_blur_y->FindVar("$bloomamount", nullptr);
|
||||||
blury_bloomamount->SetIntValue((int)blur_scale);
|
blury_bloomamount->SetIntValue((int)blur_scale);
|
||||||
ptr->DrawScreenSpaceRectangle(mat_blur_y, x, y, w, h, 0, 0, w - 1, h - 1, w, h);
|
ptr->DrawScreenSpaceRectangle(mat_blur_y, x, y, w, h, 0, 0, w - 1, h - 1, w, h);
|
||||||
ptr->Viewport(x, y, w, h);
|
ptr->Viewport(x, y, w, h);
|
||||||
|
Reference in New Issue
Block a user