From aae8c12cdf5ed515aaacf9084a6d16282190e084 Mon Sep 17 00:00:00 2001 From: nashmuhandes Date: Tue, 28 Jan 2025 08:49:41 +0800 Subject: [PATCH] Add a particle flag to allow user shaders on the sprites --- src/playsim/p_effect.h | 1 + src/rendering/hwrenderer/scene/hw_sprites.cpp | 2 +- wadsrc/static/zscript/constants.zs | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/playsim/p_effect.h b/src/playsim/p_effect.h index 1e5ba27053..29042b293d 100644 --- a/src/playsim/p_effect.h +++ b/src/playsim/p_effect.h @@ -70,6 +70,7 @@ enum EParticleFlags SPF_NOFACECAMERA = 1 << 12, SPF_ROLLCENTER = 1 << 13, SPF_STRETCHPIXELS = 1 << 14, + SPF_ALLOWSHADERS = 1 << 15, }; class DVisualThinker; diff --git a/src/rendering/hwrenderer/scene/hw_sprites.cpp b/src/rendering/hwrenderer/scene/hw_sprites.cpp index b7e1f20fe1..f3ab6d4c32 100644 --- a/src/rendering/hwrenderer/scene/hw_sprites.cpp +++ b/src/rendering/hwrenderer/scene/hw_sprites.cpp @@ -1416,7 +1416,7 @@ void HWSprite::ProcessParticle(HWDrawInfo *di, particle_t *particle, sector_t *s foglevel = (uint8_t)clamp(sector->lightlevel, 0, 255); trans = particle->alpha; - OverrideShader = 0; + OverrideShader = (particle->flags & SPF_ALLOWSHADERS) ? -1 : 0; modelframe = nullptr; texture = nullptr; topclip = LARGE_VALUE; diff --git a/wadsrc/static/zscript/constants.zs b/wadsrc/static/zscript/constants.zs index 5421c188e0..cbc14f9ef4 100644 --- a/wadsrc/static/zscript/constants.zs +++ b/wadsrc/static/zscript/constants.zs @@ -723,6 +723,7 @@ enum EParticleFlags SPF_NOFACECAMERA = 1 << 12, SPF_ROLLCENTER = 1 << 13, SPF_STRETCHPIXELS = 1 << 14, + SPF_ALLOWSHADERS = 1 << 15, SPF_RELATIVE = SPF_RELPOS|SPF_RELVEL|SPF_RELACCEL|SPF_RELANG };