Skip to content

Commit 62d37a7

Browse files
committed
Stop z clipping of 2d drawing without depth clamp
With RmlUi transforms and 3D CSS directives such as transform: rotateX(...), nonzero z coordinates could be produced. Instead of relying on GL_DEPTH_CLAMP which is not always available to prevent clipping by near or far planes, just use a projection matrix that always maps z to 0.
1 parent 621de1f commit 62d37a7

File tree

4 files changed

+3
-17
lines changed

4 files changed

+3
-17
lines changed

src/engine/renderer/tr_backend.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -824,6 +824,9 @@ static void RB_SetGL2D()
824824
GL_Scissor( 0, 0, glConfig.vidWidth, glConfig.vidHeight );
825825

826826
MatrixOrthogonalProjection( proj, 0, glConfig.vidWidth, glConfig.vidHeight, 0, 0, 1 );
827+
// zero the z coordinate so it's never near/far clipped
828+
proj[ 2 ] = proj[ 6 ] = proj[ 10 ] = proj[ 14 ] = 0;
829+
827830
GL_LoadProjectionMatrix( proj );
828831
GL_LoadModelViewMatrix( matrixIdentity );
829832

src/engine/renderer/tr_public.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ struct glconfig2_t
132132
bool uniformBufferObjectAvailable;
133133
bool mapBufferRangeAvailable;
134134
bool syncAvailable;
135-
bool depthClampAvailable;
136135
bool halfFloatVertexAvailable;
137136

138137
bool colorGrading;

src/engine/renderer/tr_shade.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -851,21 +851,11 @@ static void Render_generic2D( shaderStage_t *pStage )
851851
gl_generic2DShader->SetUniform_ColorMapBindless( BindAnimatedImage( 0, &pStage->bundle[TB_COLORMAP] ) );
852852
gl_generic2DShader->SetUniform_TextureMatrix( tess.svars.texMatrices[ TB_COLORMAP ] );
853853

854-
if ( glConfig2.depthClampAvailable )
855-
{
856-
glEnable( GL_DEPTH_CLAMP );
857-
}
858-
859854
gl_generic2DShader->SetRequiredVertexPointers();
860855

861856
Tess_DrawElements();
862857
GL_CheckErrors();
863858

864-
if ( glConfig2.depthClampAvailable )
865-
{
866-
glDisable( GL_DEPTH_CLAMP );
867-
}
868-
869859
GL_CheckErrors();
870860
}
871861

src/engine/sys/sdl_glimp.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ static Cvar::Cvar<bool> r_arb_buffer_storage( "r_arb_buffer_storage",
7070
"Use GL_ARB_buffer_storage if available", Cvar::NONE, true );
7171
static Cvar::Cvar<bool> r_arb_compute_shader( "r_arb_compute_shader",
7272
"Use GL_ARB_compute_shader if available", Cvar::NONE, true );
73-
static Cvar::Cvar<bool> r_arb_depth_clamp( "r_arb_depth_clamp",
74-
"Use GL_ARB_depth_clamp if available", Cvar::NONE, true );
7573
static Cvar::Cvar<bool> r_arb_framebuffer_object( "r_arb_framebuffer_object",
7674
"Use GL_ARB_framebuffer_object if available", Cvar::NONE, true );
7775
static Cvar::Cvar<bool> r_arb_explicit_uniform_location( "r_arb_explicit_uniform_location",
@@ -1973,7 +1971,6 @@ static void GLimp_InitExtensions()
19731971
Cvar::Latch( r_arb_bindless_texture );
19741972
Cvar::Latch( r_arb_buffer_storage );
19751973
Cvar::Latch( r_arb_compute_shader );
1976-
Cvar::Latch( r_arb_depth_clamp );
19771974
Cvar::Latch( r_arb_explicit_uniform_location );
19781975
Cvar::Latch( r_arb_framebuffer_object );
19791976
Cvar::Latch( r_arb_gpu_shader5 );
@@ -2395,9 +2392,6 @@ static void GLimp_InitExtensions()
23952392
// made required in OpenGL 3.2
23962393
glConfig2.syncAvailable = LOAD_EXTENSION_WITH_TEST( ExtFlag_CORE, ARB_sync, r_arb_sync.Get() );
23972394

2398-
// made required in OpenGL 3.2
2399-
glConfig2.depthClampAvailable = LOAD_EXTENSION_WITH_TEST( ExtFlag_CORE, ARB_depth_clamp, r_arb_depth_clamp.Get() );
2400-
24012395
// made required in OpenGL 4.3
24022396
glConfig2.computeShaderAvailable = LOAD_EXTENSION_WITH_TEST( ExtFlag_NONE, ARB_compute_shader, r_arb_compute_shader.Get() );
24032397

0 commit comments

Comments
 (0)