diff --git a/src/r_debug.cpp b/src/r_debug.cpp index e12eb33b1..570cc3754 100644 --- a/src/r_debug.cpp +++ b/src/r_debug.cpp @@ -31,6 +31,8 @@ CV_PossibleValue_t contrast_cons_t[] = {{-FRACUNIT, "MIN"}, {FRACUNIT, "MAX"}, { consvar_t cv_debugrender_contrast = CVAR_INIT("debugrender_contrast", "0.0", CV_CHEAT | CV_FLOAT, contrast_cons_t, nullptr); +consvar_t cv_debugrender_spriteclip = CVAR_INIT("debugrender_spriteclip", "Off", CV_CHEAT, CV_OnOff, nullptr); + UINT32 debugrender_highlight; void R_CheckDebugHighlight(debugrender_highlight_t k) diff --git a/src/r_main.c b/src/r_main.c index e380b7d28..bf5fd78fe 100644 --- a/src/r_main.c +++ b/src/r_main.c @@ -1660,6 +1660,7 @@ void R_RegisterEngineStuff(void) // debugging CV_RegisterVar(&cv_debugrender_contrast); + CV_RegisterVar(&cv_debugrender_spriteclip); COM_AddCommand("debugrender_highlight", Command_Debugrender_highlight); } diff --git a/src/r_main.h b/src/r_main.h index 07bda7e02..208d846a9 100644 --- a/src/r_main.h +++ b/src/r_main.h @@ -145,7 +145,8 @@ INT32 R_AdjustLightLevel(INT32 light); void Command_Debugrender_highlight(void); extern consvar_t - cv_debugrender_contrast; + cv_debugrender_contrast, + cv_debugrender_spriteclip; // Called by startup code. void R_Init(void); diff --git a/src/r_things.c b/src/r_things.c index a1e32c3b2..5f29920a5 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -2982,6 +2982,16 @@ static void R_CreateDrawNodes(maskcount_t* mask, drawnode_t* head, boolean temps for (r2 = head->next; r2 != head; r2 = r2->next) { + if (cv_debugrender_spriteclip.value) + { + // Only sort behind other sprites; sorts in + // front of everything else. + if (!r2->sprite) + { + continue; + } + } + if (r2->plane) { fixed_t planeobjectz, planecameraz; @@ -3244,6 +3254,16 @@ void R_ClipVisSprite(vissprite_t *spr, INT32 x1, INT32 x2, portal_t* portal) fixed_t lowscale; INT32 silhouette; + if (cv_debugrender_spriteclip.value) + { + for (x = x1; x <= x2; x++) + { + spr->clipbot[x] = (INT16)viewheight; + spr->cliptop[x] = (INT16)con_clipviewtop; + } + return; + } + for (x = x1; x <= x2; x++) { spr->clipbot[x] = spr->cliptop[x] = CLIP_UNDEF;