diff --git a/src/playsim/p_effect.h b/src/playsim/p_effect.h index 1e5ba2705..29042b293 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 b7e1f20fe..f3ab6d4c3 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 5421c188e..cbc14f9ef 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 };