Skip to content

Commit 00abd57

Browse files
committed
Avoid shadow geometry artifacts by using hardware depth clamping
1 parent 6441910 commit 00abd57

3 files changed

Lines changed: 4 additions & 5 deletions

File tree

code/def_files/data/effects/shadow_map-g.sdr

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ void main(void)
4242
gl_Position = shadow_proj_matrix[cascade_id] * gl_in[vert].gl_Position;
4343
}
4444

45-
if(gl_Position.z < -1.0)
46-
gl_Position.z = -1.0;
47-
4845
gl_Layer = cascade_id;
4946
gl_ClipDistance[0] = gl_in[vert].gl_ClipDistance[0];
5047

code/def_files/data/effects/shadow_map-v.sdr

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,6 @@ void main()
8282
#ifndef GEOMETRY_FALLBACK
8383
int cascade_id = cascade_offset + gl_InstanceID;
8484
position = shadow_proj_matrix[cascade_id] * position;
85-
if(position.z < -1.0)
86-
position.z = -1.0;
8785
#endif
8886
gl_Position = position;
8987
}

code/graphics/opengl/gropengltnl.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -731,6 +731,8 @@ void gr_opengl_shadow_map_start(matrix4 *shadow_view_matrix, const matrix *light
731731

732732
glClear(GL_DEPTH_BUFFER_BIT);
733733

734+
glEnable(GL_DEPTH_CLAMP);
735+
734736
Glowpoint_override_save = Glowpoint_override;
735737
Glowpoint_override = true;
736738

@@ -750,6 +752,8 @@ void gr_opengl_shadow_map_end()
750752
{
751753
gr_end_view_matrix();
752754

755+
glDisable(GL_DEPTH_CLAMP);
756+
753757
gr_zbuffer_set(ZBUFFER_TYPE_FULL);
754758
GL_state.PopFramebufferState();
755759

0 commit comments

Comments
 (0)