From ca0f0448feba9f641fd6cdfee1b5c79de2c051f8 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Fri, 27 May 2016 12:25:51 -0600 Subject: [PATCH] light: only allow one debug mode at a time --- include/light/light.h | 14 +++++++++++--- light/light.cc | 21 +++++++++++++++------ light/ltface.c | 12 ++++++------ 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/include/light/light.h b/include/light/light.h index 53c17b23..1e089e67 100644 --- a/include/light/light.h +++ b/include/light/light.h @@ -159,6 +159,17 @@ struct ltface_ctx extern struct ltface_ctx *ltface_ctxs; +/* debug */ + +typedef enum { + debugmode_none = 0, + debugmode_phong, + debugmode_dirt, + debugmode_bounce +} debugmode_t; + +extern debugmode_t debugmode; + /* bounce lights */ typedef struct { @@ -212,7 +223,6 @@ extern sun_t *suns; /* dirt */ extern qboolean dirty; // should any dirtmapping take place? -extern qboolean dirtDebug; extern int dirtMode; extern float dirtDepth; extern float dirtScale; @@ -231,7 +241,6 @@ extern qboolean dirtAngleSetOnCmdline; /* bounce */ extern qboolean bounce; -extern qboolean bouncedebug; extern vec_t bouncescale; extern vec_t bouncecolorscale; @@ -264,7 +273,6 @@ TriangleArea(const vec3_t v0, const vec3_t v1, const vec3_t v2); extern qboolean testFenceTextures; extern qboolean surflight_dump; -extern qboolean phongDebug; extern char mapfilename[1024]; diff --git a/light/light.cc b/light/light.cc index bec8572b..6f6bd0b3 100644 --- a/light/light.cc +++ b/light/light.cc @@ -53,7 +53,6 @@ sun_t *suns = NULL; /* dirt */ qboolean dirty = false; -qboolean dirtDebug = false; int dirtMode = 0; float dirtDepth = 128.0f; float dirtScale = 1.0f; @@ -72,7 +71,6 @@ qboolean dirtAngleSetOnCmdline = false; /* bounce */ qboolean bounce = false; -qboolean bouncedebug = false; vec_t bouncescale = 1.0f; vec_t bouncecolorscale = 0.0f; @@ -102,9 +100,9 @@ int oversample = 1; int write_litfile = 0; /* 0 for none, 1 for .lit, 2 for bspx, 3 for both */ int write_luxfile = 0; /* 0 for none, 1 for .lux, 2 for bspx, 3 for both */ qboolean onlyents = false; -qboolean phongDebug = false; qboolean parse_escape_sequences = true; qboolean novis = false; /* if true, don't use vis data */ +debugmode_t debugmode = debugmode_none; uint32_t *extended_texinfo_flags = NULL; @@ -1185,6 +1183,14 @@ const bsp2_dleaf_t **Face_CopyLeafList(const bsp2_t *bsp, const bsp2_dface_t *fa return result; } +static void +CheckNoDebugModeSet() +{ + if (debugmode != debugmode_none) { + Error("Only one debug mode is allowed at a time"); + } +} + /* * ================== * main @@ -1269,9 +1275,10 @@ main(int argc, const char **argv) minlightDirt = true; logprint( "Dirtmapping enabled globally\n" ); } else if ( !strcmp( argv[ i ], "-dirtdebug" ) || !strcmp( argv[ i ], "-debugdirt" ) ) { + CheckNoDebugModeSet(); dirty = true; globalDirt = true; - dirtDebug = true; + debugmode = debugmode_dirt; logprint( "Dirtmap debugging enabled\n" ); } else if ( !strcmp( argv[ i ], "-dirtmode" ) ) { dirtModeSetOnCmdline = true; @@ -1314,8 +1321,9 @@ main(int argc, const char **argv) bounce = true; logprint( "Bounce enabled on command line\n" ); } else if ( !strcmp( argv[ i ], "-bouncedebug" ) ) { + CheckNoDebugModeSet(); bounce = true; - bouncedebug = true; + debugmode = debugmode_bounce; logprint( "Bounce debugging mode enabled on command line\n" ); } else if ( !strcmp( argv[ i ], "-bouncescale" ) ) { bounce = true; @@ -1345,7 +1353,8 @@ main(int argc, const char **argv) parse_escape_sequences = false; logprint( "Parsing escape sequences disabled\n" ); } else if ( !strcmp( argv[ i ], "-phongdebug" ) ) { - phongDebug = true; + CheckNoDebugModeSet(); + debugmode = debugmode_phong; write_litfile |= 1; logprint( "Phong shading debug mode enabled\n" ); } else if ( !strcmp( argv[ i ], "-novis" ) ) { diff --git a/light/ltface.c b/light/ltface.c index b48d7963..bd91861c 100644 --- a/light/ltface.c +++ b/light/ltface.c @@ -1684,7 +1684,7 @@ LightFace_Bounce(const bsp2_t *bsp, const bsp2_dface_t *face, const lightsurf_t /* Use dirt scaling on the indirect lighting. * Except, not in bouncedebug mode. */ - if (!bouncedebug) { + if (debugmode != debugmode_bounce) { const vec_t dirtscale = Dirt_GetScaleFactor(lightsurf->occlusion[i], NULL, lightsurf); VectorScale(indirect, dirtscale, indirect); } @@ -2093,7 +2093,7 @@ LightFace(bsp2_dface_t *face, facesup_t *facesup, const modelinfo_t *modelinfo, Lightmaps_Init(lightsurf, lightmaps, MAXLIGHTMAPS + 1); /* calculate dirt (ambient occlusion) but don't use it yet */ - if (dirty && !phongDebug) + if (dirty && (debugmode != debugmode_phong)) LightFace_CalculateDirt(lightsurf); /* @@ -2102,7 +2102,7 @@ LightFace(bsp2_dface_t *face, facesup_t *facesup, const modelinfo_t *modelinfo, * clamp any values that may have gone negative. */ - if (!dirtDebug && !phongDebug) { + if (!(debugmode == debugmode_dirt || debugmode == debugmode_phong)) { /* positive lights */ for (lighte = lights; (entity = *lighte); lighte++) { @@ -2135,10 +2135,10 @@ LightFace(bsp2_dface_t *face, facesup_t *facesup, const modelinfo_t *modelinfo, } /* replace lightmaps with AO for debugging */ - if (dirtDebug) + if (debugmode == debugmode_dirt) LightFace_DirtDebug(lightsurf, lightmaps); - if (phongDebug) + if (debugmode == debugmode_phong) LightFace_PhongDebug(lightsurf, lightmaps); /* Fix any negative values */ @@ -2219,7 +2219,7 @@ LightFaceIndirect(bsp2_dface_t *face, facesup_t *facesup, const modelinfo_t *mod { lightmap_t *lightmaps = ctx->lightmaps; lightsurf_t *lightsurf = &ctx->lightsurf; - if (bouncedebug) + if (debugmode == debugmode_bounce) { Lightmap_ClearAll(lightmaps); }