Improved shadow quality

* Default shadow texture is 2048
* Worse shadows use single region
* Always use object shadowing
dev
Tomasz Kapuściński 2023-08-09 12:41:01 +02:00
parent 83b9ded0dc
commit 63b6bcf38d
1 changed files with 26 additions and 15 deletions

View File

@ -248,7 +248,7 @@ CEngine::CEngine(CApplication *app, CSystemUtils* systemUtils)
m_textureAnisotropy = 1;
m_shadowMapping = true;
m_offscreenShadowRendering = true;
m_offscreenShadowRenderingResolution = 1024;
m_offscreenShadowRenderingResolution = 2048;
m_qualityShadows = true;
m_terrainShadows = false;
m_shadowRange = 0.0f;
@ -2925,7 +2925,7 @@ void CEngine::Draw3DScene()
objectRenderer->SetFog(fogStart, fogEnd, { fogColor.r, fogColor.g, fogColor.b });
objectRenderer->SetAlphaScissor(0.0f);
if (m_shadowMapping && m_qualityShadows)
if (m_shadowMapping)
objectRenderer->SetShadowParams(m_shadowRegions, shadowParams);
else
objectRenderer->SetShadowParams(0, nullptr);
@ -3407,6 +3407,8 @@ void CEngine::RenderShadowMap()
CProfiler::StartPerformanceCounter(PCNT_RENDER_SHADOW_MAP);
if (m_qualityShadows)
{
m_shadowRegions = 4;
m_shadowParams[0].range = 16.0;
@ -3424,6 +3426,15 @@ void CEngine::RenderShadowMap()
m_shadowParams[3].range = 1024.0;
m_shadowParams[3].offset = { 0.5, 0.5 };
m_shadowParams[3].scale = { 0.5, 0.5 };
}
else
{
m_shadowRegions = 1;
m_shadowParams[0].range = 256.0;
m_shadowParams[0].offset = { 0.0, 0.0 };
m_shadowParams[0].scale = { 1.0, 1.0 };
}
// If no shadow map texture exists, create it
if (m_shadowMap.id == 0)