diff --git a/features/Screen-Space Shadows/Shaders/ScreenSpaceShadows/FilterCS.hlsl b/features/Screen-Space Shadows/Shaders/ScreenSpaceShadows/FilterCS.hlsl index 46b711fe3a..4ee8e1c45d 100644 --- a/features/Screen-Space Shadows/Shaders/ScreenSpaceShadows/FilterCS.hlsl +++ b/features/Screen-Space Shadows/Shaders/ScreenSpaceShadows/FilterCS.hlsl @@ -52,6 +52,7 @@ cbuffer PerFrame : register(b0) float NearHardness; float BlurRadius; float BlurDropoff; + bool Enabled; }; float GetDepth(float2 uv) diff --git a/features/Screen-Space Shadows/Shaders/ScreenSpaceShadows/RaymarchCS.hlsl b/features/Screen-Space Shadows/Shaders/ScreenSpaceShadows/RaymarchCS.hlsl index 9942bfb565..7f90225d80 100644 --- a/features/Screen-Space Shadows/Shaders/ScreenSpaceShadows/RaymarchCS.hlsl +++ b/features/Screen-Space Shadows/Shaders/ScreenSpaceShadows/RaymarchCS.hlsl @@ -23,6 +23,7 @@ cbuffer PerFrame : register(b0) float NearHardness; float BlurRadius; float BlurDropoff; + bool Enabled; }; bool IsSaturated(float value) { return value == saturate(value); } diff --git a/src/Features/ScreenSpaceShadows.cpp b/src/Features/ScreenSpaceShadows.cpp index c82e752391..c95b8989f3 100644 --- a/src/Features/ScreenSpaceShadows.cpp +++ b/src/Features/ScreenSpaceShadows.cpp @@ -15,12 +15,13 @@ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT( NearThickness, NearHardness, BlurRadius, - BlurDropoff) + BlurDropoff, + Enabled) void ScreenSpaceShadows::DrawSettings() { if (ImGui::TreeNodeEx("General", ImGuiTreeNodeFlags_DefaultOpen)) { - ImGui::Checkbox("Enable Screen-Space Shadows", &enabled); + ImGui::Checkbox("Enable Screen-Space Shadows", &settings.Enabled); if (ImGui::IsItemHovered()) { ImGui::BeginTooltip(); ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f); @@ -298,7 +299,7 @@ void ScreenSpaceShadows::ModifyLighting(const RE::BSShader*, const uint32_t) if (shadowState->GetRuntimeData().cubeMapRenderTarget == RE::RENDER_TARGETS_CUBEMAP::kREFLECTIONS) { enableSSS = false; - } else if (!renderedScreenCamera && enabled) { + } else if (!renderedScreenCamera && settings.Enabled) { renderedScreenCamera = true; // Backup the game state @@ -448,7 +449,7 @@ void ScreenSpaceShadows::ModifyLighting(const RE::BSShader*, const uint32_t) } PerPass data{}; - data.EnableSSS = enableSSS && shadowState->GetRuntimeData().rasterStateCullMode <= 1 && enabled; + data.EnableSSS = enableSSS && shadowState->GetRuntimeData().rasterStateCullMode <= 1 && settings.Enabled; perPass->Update(data); if (renderedScreenCamera) { diff --git a/src/Features/ScreenSpaceShadows.h b/src/Features/ScreenSpaceShadows.h index 8521e76cf5..a633abe218 100644 --- a/src/Features/ScreenSpaceShadows.h +++ b/src/Features/ScreenSpaceShadows.h @@ -25,6 +25,7 @@ struct ScreenSpaceShadows : Feature float NearHardness = 32.0f; float BlurRadius = 0.5f; float BlurDropoff = 0.005f; + bool Enabled = true; }; struct alignas(16) PerPass @@ -50,8 +51,6 @@ struct ScreenSpaceShadows : Feature ConstantBuffer* perPass = nullptr; - bool enabled = true; - ID3D11SamplerState* computeSampler = nullptr; Texture2D* screenSpaceShadowsTexture = nullptr;