Skip to content

Commit 89d1fa4

Browse files
committed
Add translucent solid option for showing cull bbox
Rename r_showEntityTransforms to r_showEntityBounds and add a new option (2) for showing the culling bounding boxes as a solid translucent surface, in addition to the old wireframe option. This makes it easier to see when the model is poking out of the box.
1 parent a9e677c commit 89d1fa4

File tree

3 files changed

+25
-9
lines changed

3 files changed

+25
-9
lines changed

src/engine/renderer/tr_backend.cpp

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ backEndState_t backEnd;
3434

3535
static Cvar::Cvar<bool> r_clear( "r_clear", "Clear screen before painting over it on every frame", Cvar::NONE, false );
3636
Cvar::Cvar<bool> r_drawSky( "r_drawSky", "Draw the sky (clear the sky if disabled)", Cvar::NONE, true );
37+
static Cvar::Cvar<int> r_showEntityBounds(
38+
"r_showEntityBounds", "show bboxes used for culling (1: wireframe; 2: translucent solid)", Cvar::CHEAT, 0);
3739

3840
void GL_Bind( image_t *image )
3941
{
@@ -1563,7 +1565,7 @@ static void RB_RenderDebugUtils()
15631565
{
15641566
GLIMP_LOGCOMMENT( "--- RB_RenderDebugUtils ---" );
15651567

1566-
if ( r_showEntityTransforms->integer )
1568+
if ( r_showEntityBounds.Get() )
15671569
{
15681570
trRefEntity_t *ent;
15691571
int i;
@@ -1577,13 +1579,23 @@ static void RB_RenderDebugUtils()
15771579
gl_genericShader->SetDepthFade( false );
15781580
gl_genericShader->BindProgram( 0 );
15791581

1580-
GL_State( GLS_POLYMODE_LINE | GLS_DEPTHTEST_DISABLE );
1582+
if ( r_showEntityBounds.Get() == 2 )
1583+
{
1584+
GL_State( GLS_SRCBLEND_SRC_ALPHA | GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA );
1585+
glEnable( GL_POLYGON_OFFSET_FILL );
1586+
GL_PolygonOffset( r_offsetFactor->value, r_offsetUnits->value );
1587+
}
1588+
else
1589+
{
1590+
GL_State( GLS_POLYMODE_LINE | GLS_DEPTHTEST_DISABLE );
1591+
}
1592+
15811593
GL_Cull( cullType_t::CT_TWO_SIDED );
15821594

15831595
// set uniforms
15841596
gl_genericShader->SetUniform_AlphaTest( GLS_ATEST_NONE );
15851597
SetUniform_ColorModulateColorGen( gl_genericShader, colorGen_t::CGEN_VERTEX, alphaGen_t::AGEN_VERTEX );
1586-
SetUniform_Color( gl_genericShader, Color::Black );
1598+
SetUniform_Color( gl_genericShader, Color::Color(0, 0, 0, 0) );
15871599

15881600
// bind u_ColorMap
15891601
gl_genericShader->SetUniform_ColorMapBindless(
@@ -1613,16 +1625,23 @@ static void RB_RenderDebugUtils()
16131625

16141626
Tess_Begin( Tess_StageIteratorDebug, nullptr, nullptr, true, -1, 0 );
16151627

1616-
Tess_AddCube( vec3_origin, ent->localBounds[ 0 ], ent->localBounds[ 1 ], Color::Blue );
1617-
1618-
Tess_AddCube( vec3_origin, mins, maxs,Color::White );
1628+
if ( r_showEntityBounds.Get() == 2)
1629+
{
1630+
Tess_AddCube( vec3_origin, ent->localBounds[ 0 ], ent->localBounds[ 1 ], Color::Color(0, 0, 0.5, 0.4) );
1631+
}
1632+
else
1633+
{
1634+
Tess_AddCube( vec3_origin, ent->localBounds[ 0 ], ent->localBounds[ 1 ], Color::Blue );
1635+
Tess_AddCube( vec3_origin, mins, maxs,Color::White );
1636+
}
16191637

16201638
Tess_End();
16211639
}
16221640

16231641
// go back to the world modelview matrix
16241642
backEnd.orientation = backEnd.viewParms.world;
16251643
GL_LoadModelViewMatrix( backEnd.viewParms.world.modelViewMatrix );
1644+
glDisable( GL_POLYGON_OFFSET_FILL );
16261645
}
16271646

16281647
if ( r_showSkeleton->integer )

src/engine/renderer/tr_init.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
227227
cvar_t *r_showTris;
228228
cvar_t *r_showSky;
229229
cvar_t *r_showSkeleton;
230-
cvar_t *r_showEntityTransforms;
231230
cvar_t *r_showLightGrid;
232231
cvar_t *r_showLightTiles;
233232
cvar_t *r_showBatches;
@@ -1276,7 +1275,6 @@ ScreenshotCmd screenshotPNGRegistration("screenshotPNG", ssFormat_t::SSF_PNG, "p
12761275
r_showTris = Cvar_Get( "r_showTris", "0", CVAR_CHEAT );
12771276
r_showSky = Cvar_Get( "r_showSky", "0", CVAR_CHEAT );
12781277
r_showSkeleton = Cvar_Get( "r_showSkeleton", "0", CVAR_CHEAT );
1279-
r_showEntityTransforms = Cvar_Get( "r_showEntityTransforms", "0", CVAR_CHEAT );
12801278
r_showLightGrid = Cvar_Get( "r_showLightGrid", "0", CVAR_CHEAT );
12811279
r_showLightTiles = Cvar_Get("r_showLightTiles", "0", CVAR_CHEAT | CVAR_LATCH );
12821280
r_showBatches = Cvar_Get( "r_showBatches", "0", CVAR_CHEAT );

src/engine/renderer/tr_local.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2833,7 +2833,6 @@ enum class ssaoMode {
28332833
extern cvar_t *r_showTris; // enables wireframe rendering of the world
28342834
extern cvar_t *r_showSky; // forces sky in front of all surfaces
28352835
extern cvar_t *r_showSkeleton;
2836-
extern cvar_t *r_showEntityTransforms;
28372836
extern cvar_t *r_showLightGrid;
28382837
extern cvar_t *r_showLightTiles;
28392838
extern cvar_t *r_showBatches;

0 commit comments

Comments
 (0)