Skip to content

Commit

Permalink
renderer: use GL_DEPTH_CLAMP only if GL_ARB_depth_clamp is available
Browse files Browse the repository at this point in the history
The GL_ARB_depth_clamp extension was only made required in OpenGL 3.2.
  • Loading branch information
illwieckz committed Jun 1, 2024
1 parent f42c220 commit 63b23e2
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/engine/renderer/tr_init.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
cvar_t *r_arb_uniform_buffer_object;
cvar_t *r_arb_texture_gather;
cvar_t *r_arb_gpu_shader5;
Cvar::Cvar<bool> r_arb_depth_clamp("r_arb_depth_clamp", "Use GL_ARB_depth_clamp if available", Cvar::NONE, true);

cvar_t *r_checkGLErrors;
cvar_t *r_logFile;
Expand Down Expand Up @@ -1088,6 +1089,7 @@ ScreenshotCmd screenshotPNGRegistration("screenshotPNG", ssFormat_t::SSF_PNG, "p
r_arb_uniform_buffer_object = Cvar_Get( "r_arb_uniform_buffer_object", "1", CVAR_CHEAT | CVAR_LATCH );
r_arb_texture_gather = Cvar_Get( "r_arb_texture_gather", "1", CVAR_CHEAT | CVAR_LATCH );
r_arb_gpu_shader5 = Cvar_Get( "r_arb_gpu_shader5", "1", CVAR_CHEAT | CVAR_LATCH );
Cvar::Latch(r_arb_depth_clamp);

r_picMip = Cvar_Get( "r_picMip", "0", CVAR_LATCH | CVAR_ARCHIVE );
r_imageMaxDimension = Cvar_Get( "r_imageMaxDimension", "0", CVAR_LATCH | CVAR_ARCHIVE );
Expand Down
1 change: 1 addition & 0 deletions src/engine/renderer/tr_local.h
Original file line number Diff line number Diff line change
Expand Up @@ -2898,6 +2898,7 @@ enum class dynamicLightRenderer_t { LEGACY, TILED };
extern cvar_t *r_arb_uniform_buffer_object;
extern cvar_t *r_arb_texture_gather;
extern cvar_t *r_arb_gpu_shader5;
extern Cvar::Cvar<bool> r_arb_depth_clamp;

extern cvar_t *r_nobind; // turns off binding to appropriate textures
extern cvar_t *r_singleShader; // make most world faces use default shader
Expand Down
1 change: 1 addition & 0 deletions src/engine/renderer/tr_public.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ struct glconfig2_t
bool uniformBufferObjectAvailable;
bool mapBufferRangeAvailable;
bool syncAvailable;
bool depthClampAvailable;

bool dynamicLight;
bool staticLight;
Expand Down
10 changes: 8 additions & 2 deletions src/engine/renderer/tr_shade.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -667,7 +667,10 @@ static void Render_generic2D( shaderStage_t *pStage )
BindAnimatedImage( &pStage->bundle[ TB_COLORMAP ] );
gl_generic2DShader->SetUniform_TextureMatrix( tess.svars.texMatrices[ TB_COLORMAP ] );

glEnable( GL_DEPTH_CLAMP );
if ( glConfig2.depthClampAvailable )
{
glEnable( GL_DEPTH_CLAMP );
}

if ( hasDepthFade )
{
Expand All @@ -683,7 +686,10 @@ static void Render_generic2D( shaderStage_t *pStage )

Tess_DrawElements();

glDisable( GL_DEPTH_CLAMP );
if ( glConfig2.depthClampAvailable )
{
glDisable( GL_DEPTH_CLAMP );
}

GL_CheckErrors();
}
Expand Down
3 changes: 3 additions & 0 deletions src/engine/sys/sdl_glimp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1943,6 +1943,9 @@ static void GLimp_InitExtensions()
// made required in OpenGL 3.2
glConfig2.syncAvailable = LOAD_EXTENSION_WITH_TEST( ExtFlag_CORE, ARB_sync, r_arb_sync->value );

// made required in OpenGL 3.2
glConfig2.depthClampAvailable = LOAD_EXTENSION_WITH_TEST( ExtFlag_NONE, ARB_depth_clamp, r_arb_depth_clamp.Get() );

GL_CheckErrors();
}

Expand Down

0 comments on commit 63b23e2

Please sign in to comment.