From 98368669fa792f14e37bd541a16329103389de89 Mon Sep 17 00:00:00 2001 From: Robert Beckebans Date: Thu, 31 Mar 2022 22:45:29 +0200 Subject: [PATCH] Shadowmap atlas is working if there are not too many lights --- neo/renderer/RenderBackend.cpp | 4 ++-- neo/shaders/builtin/lighting/interactionSM.ps.hlsl | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/neo/renderer/RenderBackend.cpp b/neo/renderer/RenderBackend.cpp index cbef76b7..b8b71e14 100644 --- a/neo/renderer/RenderBackend.cpp +++ b/neo/renderer/RenderBackend.cpp @@ -1554,8 +1554,8 @@ void idRenderBackend::RenderInteractions( const drawSurf_t* surfList, const view for( int i = 0; i < 6; i++ ) { - shadowOffsets[ i ].x = vLight->imageAtlasOffset[ i ].x; - shadowOffsets[ i ].y = vLight->imageAtlasOffset[ i ].y; + shadowOffsets[ i ].x = vLight->imageAtlasOffset[ i ].x * ( 1.0f / r_shadowMapAtlasSize.GetInteger() ); + shadowOffsets[ i ].y = vLight->imageAtlasOffset[ i ].y * ( 1.0f / r_shadowMapAtlasSize.GetInteger() ); } SetVertexParms( RENDERPARM_SHADOW_ATLAS_OFFSET_0, &shadowOffsets[0][0], 6 ); diff --git a/neo/shaders/builtin/lighting/interactionSM.ps.hlsl b/neo/shaders/builtin/lighting/interactionSM.ps.hlsl index ed8f2fb9..932c1716 100644 --- a/neo/shaders/builtin/lighting/interactionSM.ps.hlsl +++ b/neo/shaders/builtin/lighting/interactionSM.ps.hlsl @@ -393,13 +393,11 @@ void main( PS_IN fragment, out PS_OUT result ) uvShadow.y = shadowTexcoord.y; // [0 .. 1] -> rectangle in atlas transform - uvShadow = uvShadow * rpJitterTexScale.y; // + rpShadowAtlasOffsets[ shadowIndex ].xy - uvShadow.x += rpShadowAtlasOffsets[ shadowIndex ].x; - uvShadow.y -= rpShadowAtlasOffsets[ shadowIndex ].y; + uvShadow = uvShadow * rpJitterTexScale.y + rpShadowAtlasOffsets[ shadowIndex ].xy; float shadow = t_ShadowAtlas.SampleCmpLevelZero( s_Shadow, uvShadow.xy, shadowTexcoord.z ); -#if 1 +#if 0 if( shadowIndex == 0 ) { result.color = float4( 1.0, 0.0, 0.0, 1.0 );