mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-01-01 20:52:47 +00:00
Merge branch 'legacyglfixes' into 'master'
Add support for terrain floorClip and RF_ALWAYSONTOP in legacyGL See merge request kart-krew-dev/ring-racers!8
This commit is contained in:
commit
898f69c2bd
2 changed files with 20 additions and 2 deletions
|
|
@ -3415,6 +3415,11 @@ static void HWR_SplitSprite(gl_vissprite_t *spr)
|
|||
return; // cap
|
||||
|
||||
blend = HWR_SurfaceBlend(blendmode, trans, &Surf);
|
||||
|
||||
// if sprite has PF_ALWAYSONTOP, draw on top of everything.
|
||||
if (cv_debugrender_spriteclip.value || spr->mobj->renderflags & RF_ALWAYSONTOP)
|
||||
blend |= PF_NoDepthTest;
|
||||
|
||||
if (!trans && !blendmode)
|
||||
{
|
||||
// BP: i agree that is little better in environement but it don't
|
||||
|
|
@ -3896,6 +3901,11 @@ static void HWR_DrawSprite(gl_vissprite_t *spr)
|
|||
return; // cap
|
||||
|
||||
blend = HWR_SurfaceBlend(blendmode, trans, &Surf);
|
||||
|
||||
// if sprite has PF_ALWAYSONTOP, draw on top of everything.
|
||||
if (cv_debugrender_spriteclip.value || spr->mobj->renderflags & RF_ALWAYSONTOP)
|
||||
blend |= PF_NoDepthTest;
|
||||
|
||||
if (!trans && !blendmode)
|
||||
{
|
||||
// BP: i agree that is little better in environement but it don't
|
||||
|
|
@ -3921,7 +3931,10 @@ static void HWR_DrawSprite(gl_vissprite_t *spr)
|
|||
|
||||
if (HWR_UseShader())
|
||||
{
|
||||
shader = (R_ThingIsPaperSprite(spr->mobj) || R_ThingIsFloorSprite(spr->mobj)) ? SHADER_SPRITE : SHADER_SPRITECLIPHACK;;
|
||||
shader = (R_ThingIsPaperSprite(spr->mobj)
|
||||
|| R_ThingIsFloorSprite(spr->mobj)
|
||||
|| (spr->mobj->terrain && spr->mobj->terrain->floorClip)
|
||||
) ? SHADER_SPRITE : SHADER_SPRITECLIPHACK;
|
||||
blend |= PF_ColorMapped;
|
||||
}
|
||||
|
||||
|
|
@ -5007,6 +5020,9 @@ static void HWR_ProjectSprite(mobj_t *thing)
|
|||
x1 = tr_x + x1 * rightcos;
|
||||
x2 = tr_x - x2 * rightcos;
|
||||
|
||||
if (thing->terrain && thing->terrain->floorClip)
|
||||
spr_topoffset -= thing->terrain->floorClip;
|
||||
|
||||
if (vflip)
|
||||
{
|
||||
gz = FIXED_TO_FLOAT(interp.z + thing->height) - (FIXED_TO_FLOAT(spr_topoffset) * this_yscale);
|
||||
|
|
|
|||
|
|
@ -1723,6 +1723,8 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
|
|||
HWD.pfnSetShader(SHADER_MODEL); // model shader
|
||||
{
|
||||
float this_scale = FIXED_TO_FLOAT(spr->mobj->scale);
|
||||
fixed_t floorClip = spr->mobj->terrain ? spr->mobj->terrain->floorClip : 0;
|
||||
float finalfloorClip = FIXED_TO_FLOAT(FixedMul(floorClip, mapobjectscale)*P_MobjFlip(spr->mobj));
|
||||
|
||||
float xs = this_scale * FIXED_TO_FLOAT(spr->mobj->spritexscale);
|
||||
float ys = this_scale * FIXED_TO_FLOAT(spr->mobj->spriteyscale);
|
||||
|
|
@ -1733,7 +1735,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
|
|||
// offset perpendicular to the camera angle
|
||||
p.x -= ox * gl_viewsin;
|
||||
p.y += ox * gl_viewcos;
|
||||
p.z += oy;
|
||||
p.z += oy - finalfloorClip;
|
||||
|
||||
if (R_ThingIsUsingBakedOffsets(spr->mobj))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue