diff --git a/src/hardware/hw_defs.h b/src/hardware/hw_defs.h index 621cb9015..36866955a 100644 --- a/src/hardware/hw_defs.h +++ b/src/hardware/hw_defs.h @@ -143,6 +143,7 @@ enum SHADER_FLOOR, SHADER_WALL, SHADER_SPRITE, + SHADER_SPRITECLIPHACK, SHADER_MODEL, SHADER_MODEL_LIGHTING, SHADER_WATER, SHADER_FOG, diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 271076b05..f2099eae4 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -3423,7 +3423,7 @@ static void HWR_SplitSprite(gl_vissprite_t *spr) if (HWR_UseShader()) { - shader = SHADER_SPRITE; + shader = (spr->mobj->frame & FF_PAPERSPRITE) ? SHADER_SPRITE : SHADER_SPRITECLIPHACK; blend |= PF_ColorMapped; } @@ -3916,7 +3916,7 @@ static void HWR_DrawSprite(gl_vissprite_t *spr) if (HWR_UseShader()) { - shader = SHADER_SPRITE; + shader = (spr->mobj->frame & FF_PAPERSPRITE) ? SHADER_SPRITE : SHADER_SPRITECLIPHACK;; blend |= PF_ColorMapped; } diff --git a/src/hardware/r_opengl/r_opengl.c b/src/hardware/r_opengl/r_opengl.c index d79be21ef..2c53e0d26 100644 --- a/src/hardware/r_opengl/r_opengl.c +++ b/src/hardware/r_opengl/r_opengl.c @@ -922,6 +922,9 @@ static struct { {GLSL_DEFAULT_VERTEX_SHADER, GLSL_SOFTWARE_FRAGMENT_SHADER}, // Sprite shader + {GLSL_DEFAULT_VERTEX_SHADER, GLSL_SOFTWARE_FRAGMENT_SHADER}, + + // Sprite clipping hack shader (for pulling things out of the floor) {GLSL_SPRITECLIP_HACK_VERTEX_SHADER, GLSL_SOFTWARE_FRAGMENT_SHADER}, // Model shader