Merge gl_light_shadowmap and gl_light_raytrace cvars as gl_light_shadows

Rename gl_shadowmap_filter to gl_light_shadow_filter as it applies to raytraced shadows as well
This commit is contained in:
Magnus Norddahl 2023-10-15 16:14:00 +02:00
commit 5e3d6e39a0
10 changed files with 44 additions and 33 deletions

View file

@ -128,8 +128,28 @@ CUSTOM_CVARD(Int, gl_texture_filter, 6, CVAR_ARCHIVE|CVAR_GLOBALCONFIG|CVAR_NOIN
CVAR(Bool, gl_precache, true, CVAR_ARCHIVE)
CUSTOM_CVAR(Int, gl_light_shadows, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
{
if (self < 0 || self > 3)
self = 1;
}
CUSTOM_CVAR(Int, gl_shadowmap_filter, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
CUSTOM_CVAR(Int, gl_light_shadow_filter, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
{
if (self < 0 || self > 8) self = 1;
}
CUSTOM_CVAR(Int, gl_shadowmap_quality, 512, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
{
switch (self)
{
case 128:
case 256:
case 512:
case 1024:
break;
default:
self = 128;
break;
}
}

View file

@ -14,8 +14,8 @@ EXTERN_CVAR(Int, gl_weaponlight)
EXTERN_CVAR (Bool, gl_light_sprites);
EXTERN_CVAR (Bool, gl_light_particles);
EXTERN_CVAR (Bool, gl_light_shadowmap);
EXTERN_CVAR (Bool, gl_light_raytrace);
EXTERN_CVAR (Int, gl_light_shadows);
EXTERN_CVAR (Int, gl_light_shadow_filter);
EXTERN_CVAR (Int, gl_shadowmap_quality);
EXTERN_CVAR(Int, gl_fogmode)
@ -50,8 +50,6 @@ EXTERN_CVAR(Float, gl_ssao_blur_amount)
EXTERN_CVAR(Int, gl_debug_level)
EXTERN_CVAR(Bool, gl_debug_breakpoint)
EXTERN_CVAR(Int, gl_shadowmap_filter)
EXTERN_CVAR(Bool, gl_brightfog)
EXTERN_CVAR(Bool, gl_lightadditivesurfaces)
EXTERN_CVAR(Bool, gl_notexturefill)

View file

@ -725,7 +725,7 @@ public:
matrices.mGlobVis = 1.f;
matrices.mPalLightLevels = palLightLevels;
matrices.mClipLine.X = -10000000.0f;
matrices.mShadowmapFilter = gl_shadowmap_filter;
matrices.mShadowFilter = gl_light_shadow_filter;
matrices.mLightBlendMode = 0;
matrices.mProjectionMatrix.ortho(0, (float)width, (float)height, 0, -1.0f, 1.0f);
matrices.CalcDependencies();

View file

@ -59,9 +59,6 @@ cycle_t ShadowMap::UpdateCycles;
int ShadowMap::LightsProcessed;
int ShadowMap::LightsShadowmapped;
CVAR(Bool, gl_light_shadowmap, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
CVAR(Bool, gl_light_raytrace, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
ADD_STAT(shadowmap)
{
FString out;
@ -69,24 +66,9 @@ ADD_STAT(shadowmap)
return out;
}
CUSTOM_CVAR(Int, gl_shadowmap_quality, 512, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
{
switch (self)
{
case 128:
case 256:
case 512:
case 1024:
break;
default:
self = 128;
break;
}
}
bool ShadowMap::ShadowTest(const DVector3 &lpos, const DVector3 &pos)
{
if (mAABBTree && gl_light_shadowmap)
if (mAABBTree && gl_light_shadows > 0)
return mAABBTree->RayTest(lpos, pos) >= 1.0f;
else
return true;

View file

@ -26,7 +26,7 @@ struct HWViewpointUniforms
int mViewHeight = 0;
float mClipHeight = 0.f;
float mClipHeightDirection = 0.f;
int mShadowmapFilter = 1;
int mShadowFilter = 1;
int mLightBlendMode = 0;

View file

@ -299,8 +299,8 @@ void VkRenderState::ApplyRenderPass(int dt)
pipelineKey.ShaderKey.LightMode = 1; // Software
}
pipelineKey.ShaderKey.UseShadowmap = gl_light_shadowmap;
pipelineKey.ShaderKey.UseRaytrace = gl_light_raytrace;
pipelineKey.ShaderKey.UseShadowmap = gl_light_shadows == 1;
pipelineKey.ShaderKey.UseRaytrace = gl_light_shadows == 2;
pipelineKey.ShaderKey.GBufferPass = mRenderTarget.DrawBuffers > 1;

View file

@ -108,7 +108,7 @@ sector_t* RenderViewpoint(FRenderViewpoint& mainvp, AActor* camera, IntRect* bou
R_SetupFrame(mainvp, r_viewwindow, camera);
if (mainview && toscreen && !(camera->Level->flags3 & LEVEL3_NOSHADOWMAP) && camera->Level->HasDynamicLights && gl_light_shadowmap && screen->allowSSBO() && (screen->hwcaps & RFL_SHADER_STORAGE_BUFFER))
if (mainview && toscreen && !(camera->Level->flags3 & LEVEL3_NOSHADOWMAP) && camera->Level->HasDynamicLights && gl_light_shadows > 0 && screen->allowSSBO() && (screen->hwcaps & RFL_SHADER_STORAGE_BUFFER))
{
screen->mShadowMap->SetAABBTree(camera->Level->aabbTree);
screen->mShadowMap->SetCollectLights([=] {

View file

@ -116,7 +116,7 @@ void HWDrawInfo::StartScene(FRenderViewpoint &parentvp, HWViewpointUniforms *uni
VPUniforms.mPalLightLevels = static_cast<int>(gl_bandedswlight) | (static_cast<int>(gl_fogmode) << 8) | ((int)lightmode << 16);
}
VPUniforms.mClipLine.X = -10000000.0f;
VPUniforms.mShadowmapFilter = static_cast<int>(gl_shadowmap_filter);
VPUniforms.mShadowFilter = static_cast<int>(gl_light_shadow_filter);
VPUniforms.mLightBlendMode = (level.info ? (int)level.info->lightblendmode : 0);
}
mClipper->SetViewpoint(Viewpoint);

View file

@ -393,3 +393,7 @@ OPTMNU_SPRITE = "Sprite Options";
GLPREFMNU_CORONAS = "Coronas";
DSPLYMNU_APPEARANCE = "Appearance";
DSPLYMNU_ADVANCED = "Advanced Display Options";
OPTVAL_SHADOWMAP = "Shadowmap";
OPTVAL_RAYTRACE = "Raytrace";
GLLIGHTMNU_LIGHTSHADOWS = "Light shadows";
GLLIGHTMNU_LIGHTSHADOWFILTER = "Shadow filter";

View file

@ -1069,9 +1069,9 @@ OptionMenu "LightOptions" protected
Option "$GLLIGHTMNU_LIGHTSPRITES", gl_light_sprites, "YesNo"
Option "$GLLIGHTMNU_LIGHTPARTICLES", gl_light_particles, "YesNo"
StaticText " "
Option "$GLLIGHTMNU_LIGHTSHADOWMAP", gl_light_shadowmap, "YesNo"
Option "$GLLIGHTMNU_LIGHTSHADOWS", gl_light_shadows, "ShadowMode"
Option "$GLLIGHTMNU_LIGHTSHADOWFILTER", gl_light_shadow_filter, "ShadowFilter"
Option "$GLLIGHTMNU_LIGHTSHADOWMAPQUALITY", gl_shadowmap_quality, "ShadowMapQuality"
Option "$GLLIGHTMNU_LIGHTSHADOWMAPFILTER", gl_shadowmap_filter, "ShadowMapFilter"
StaticText " "
Option "$GLPREFMNU_SWLMBANDED", gl_bandedswlight, "OnOff"
Option "$GLPREFMNU_FOGFORCEFULLBRIGHT", gl_brightfog, "YesNo"
@ -2686,7 +2686,14 @@ OptionValue ShadowMapQuality
1024, "1024"
}
OptionValue ShadowMapFilter
OptionValue ShadowMode
{
0, "$OPTVAL_NONE"
1, "$OPTVAL_SHADOWMAP"
2, "$OPTVAL_RAYTRACE"
}
OptionValue ShadowFilter
{
0, "$OPTVAL_NEAREST"
1, "$OPTVAL_PCF_LOW"