1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-01 17:38:41 +00:00

Distribute shadow map update over multiple frames to reduce stutter (#11422)

Reduces stutter and freezes when playing.

 * Maintains double SM and SM Color textures
 * Light frustum update triggers incremental generation of shadow map into secondary 'future' textures.
 * Every incremental update renders a portion of the shadow draw list (split equally).
 * After defined number of frames (currently, 4), 'future' and 'current' textures are swapped, and DirectionalLight 'commits' the new frustum to use when rendering shadows on screen.

Co-authored-by: sfan5 <sfan5@live.de>
This commit is contained in:
x2048 2021-07-25 12:36:23 +02:00 committed by GitHub
parent ff2d2a6e93
commit bf3acbf388
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 224 additions and 72 deletions

View file

@ -618,11 +618,11 @@ shadow_filters (Shadow filter quality) enum 1 0,1,2
# On true translucent nodes cast colored shadows. This is expensive.
shadow_map_color (Colored shadows) bool false
# Set the shadow update time, in seconds.
# Lower value means shadows and map updates faster, but it consumes more resources.
# Minimum value: 0.001; maximum value: 0.2
shadow_update_time (Map update time) float 0.2 0.001 0.2
# Spread a complete update of shadow map over given amount of frames.
# Higher values might make shadows laggy, lower values
# will consume more resources.
# Minimum value: 1; maximum value: 16
shadow_update_frames (Map shadows update frames) int 8 1 16
# Set the soft shadow radius size.
# Lower values mean sharper shadows, bigger values mean softer shadows.