Skip to content

Commit fbaff5c

Browse files
committed
Avoid shadow geometry artifacts by using hardware depth clamping
1 parent e2793b7 commit fbaff5c

3 files changed

Lines changed: 5 additions & 6 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: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -644,7 +644,7 @@ void gr_opengl_render_shadow_draw(gr_buffer_handle ubo_handle, size_t ubo_offset
644644

645645
GL_state.SetAlphaBlendMode(ALPHA_BLEND_NONE);
646646
gr_zbuffer_set(ZBUFFER_TYPE_FULL);
647-
gr_set_cull(1);
647+
gr_set_cull(0);
648648
gr_zbias(-1024);
649649
gr_set_fill_mode(GR_FILL_MODE_SOLID);
650650
GL_state.ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
@@ -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)