diff --git a/package/Shaders/Common/SharedData.hlsli b/package/Shaders/Common/SharedData.hlsli index 3c2ae345fc..e6c2603c59 100644 --- a/package/Shaders/Common/SharedData.hlsli +++ b/package/Shaders/Common/SharedData.hlsli @@ -285,19 +285,6 @@ namespace SharedData float VolumetricRaysDesaturation; float3 VolumetricRaysColorFilter; - - uint EnableCloudsScattering; - float SkyScatteringIntensity; - float SkyScatteringAmount; - float SkyScatteringColorFromSun; - - float3 SkyScatteringColor; - float SkyScatteringCloudsLightingSunMultiplier; - - float SkyScatteringCloudsLightingMoonIntensity; - uint pad0; - uint pad1; - uint pad2; }; struct TerrainBlendingSettings { diff --git a/package/Shaders/Sky.hlsl b/package/Shaders/Sky.hlsl index 2256c9b51b..ec80a869e0 100644 --- a/package/Shaders/Sky.hlsl +++ b/package/Shaders/Sky.hlsl @@ -2,7 +2,6 @@ #include "Common/FrameBuffer.hlsli" #include "Common/Math.hlsli" #include "Common/Permutation.hlsli" -#include "Common/Random.hlsli" #include "Common/SharedData.hlsli" struct VS_INPUT @@ -162,11 +161,6 @@ cbuffer AlphaTestRefCB : register(b11) # include "Common/MotionBlur.hlsli" # include "Common/SharedData.hlsli" -# include "Common/Random.hlsli" - -# if defined(CLOUD_SHADOWS) -# include "CloudShadows/CloudShadows.hlsli" -# endif # if defined(EXP_HEIGHT_FOG) # define SampColorSampler SampBaseSampler @@ -250,15 +244,6 @@ PS_OUTPUT main(PS_INPUT input) #endif psout.Color.xyz = Color::Sky(skyGradientColor) + skyScale; -#if defined(EFFECTS11) - if (SharedData::enbSettings.Enable) { - float sunLighting = dot(viewDirection, SharedData::SunDirection.xyz) * 0.5 + 0.5; - float sunGlow = pow(saturate(sunLighting), 32.0) * 0.25; - float3 sunScatterColor = sunGlow * SharedData::enbSettings.SkyScatteringColor * SharedData::enbSettings.SkyScatteringIntensity * lerp(1.0, SharedData::SunColor.xyz, SharedData::enbSettings.SkyScatteringColorFromSun); - psout.Color.xyz += SharedData::enbSettings.SkyScatteringAmount * sunScatterColor; - } -#endif - psout.Color.xyz *= 1.0 + noiseGrad; psout.Color.w = input.Color.w; # endif // TEX @@ -292,93 +277,20 @@ PS_OUTPUT main(PS_INPUT input) float cloudLuminance = dot(cloudColor.xyz, 1.0 / 3.0); - float sunShadow = 0.0; - float masserShadow = 0.0; - float secundaShadow = 0.0; - float sunLighting = saturate(dot(viewDirection, SharedData::SunDirection.xyz) * 0.5 + 0.5); float masserLighting = saturate(dot(viewDirection, SharedData::MasserDirection.xyz) * 0.5 + 0.5); float secundaLighting = saturate(dot(viewDirection, SharedData::SecundaDirection.xyz) * 0.5 + 0.5); - if (SharedData::enbSettings.EnableCloudsScattering){ - float screenNoise = Random::InterleavedGradientNoise(input.Position.xy, SharedData::FrameCount); - - const uint sampleCount = 8; - const float rcpSampleCount = 1.0 / float(sampleCount); - - sunShadow = 0.0; - if (SharedData::SunColor.w > 0.0){ - for (uint i = 0; i < sampleCount; i++) { - float t = (float(i) + screenNoise) * rcpSampleCount; - float3 samplePosition = normalize(lerp(viewDirection, SharedData::SunDirection.xyz, t * 0.1)); - if (samplePosition.z > 0) -# if defined(CLOUD_SHADOWS) - sunShadow += CloudShadows::CloudShadowsTexture.SampleLevel(SampBaseSampler, samplePosition, 0); -# else - sunShadow++; -# endif - } - sunShadow = 1.0 - sunShadow * rcpSampleCount; - } - - masserShadow = 0.0; - if (SharedData::MasserColor.w > 0.0){ - for (uint i = 0; i < sampleCount; i++) { - float t = (float(i) + screenNoise) * rcpSampleCount; - float3 samplePosition = normalize(lerp(viewDirection, SharedData::MasserDirection.xyz, t * 0.1)); - if (samplePosition.z > 0) -# if defined(CLOUD_SHADOWS) - masserShadow += CloudShadows::CloudShadowsTexture.SampleLevel(SampBaseSampler, samplePosition, 0); -# else - masserShadow++; -# endif - } - masserShadow = 1.0 - masserShadow * rcpSampleCount; - } - - secundaShadow = 0.0; - if (SharedData::SecundaColor.w > 0.0){ - for (uint i = 0; i < sampleCount; i++) { - float t = (float(i) + screenNoise) * rcpSampleCount; - float3 samplePosition = normalize(lerp(viewDirection, SharedData::SecundaDirection.xyz, t * 0.1)); - if (samplePosition.z > 0) -# if defined(CLOUD_SHADOWS) - secundaShadow += CloudShadows::CloudShadowsTexture.SampleLevel(SampBaseSampler, samplePosition, 0); -# else - secundaShadow++; -# endif - } - secundaShadow = 1.0 - secundaShadow * rcpSampleCount; - } - - float3 sunScatterColor = SharedData::enbSettings.SkyScatteringColor * SharedData::enbSettings.SkyScatteringIntensity * lerp(1.0, SharedData::SunColor.xyz, SharedData::enbSettings.SkyScatteringColorFromSun); - float3 sunDirectLit = sunScatterColor * sunLighting * sunLighting * sunShadow; - - float3 masserScatterColor = SharedData::enbSettings.SkyScatteringColor * SharedData::enbSettings.SkyScatteringIntensity * SharedData::MasserColor.xyz; - float3 moonDirectLit = masserScatterColor * masserLighting * masserLighting * masserShadow; - - float3 secundaScatterColor = SharedData::enbSettings.SkyScatteringColor * SharedData::enbSettings.SkyScatteringIntensity * SharedData::SecundaColor.xyz; - moonDirectLit += secundaScatterColor * secundaLighting * secundaLighting * secundaShadow; - - moonDirectLit *= SharedData::enbSettings.SkyScatteringCloudsLightingMoonIntensity * 0.5; - - float3 directLit = sunDirectLit + moonDirectLit; - - float3 colorLit = cloudColor; - colorLit += directLit * cloudLuminance * SharedData::enbSettings.SkyScatteringCloudsLightingSunMultiplier; - cloudColor = lerp(cloudColor, colorLit, SharedData::enbSettings.SkyScatteringAmount); - } - if (SharedData::enbSettings.CloudsEdgeIntensity > 0.0) { float cloudsEdgeAlpha = saturate(1.0 - baseColor.w); - float3 sunPhase = pow(sunLighting, 32.0) * SharedData::SunColor.xyz * max(cloudsEdgeAlpha, sunShadow); - float3 masserPhase = pow(masserLighting, 32.0) * SharedData::MasserColor.xyz * SharedData::enbSettings.CloudsEdgeMoonMultiplier * max(cloudsEdgeAlpha, masserShadow); - float3 secundaPhase = pow(secundaLighting, 32.0) * SharedData::SecundaColor.xyz * SharedData::enbSettings.CloudsEdgeMoonMultiplier * max(cloudsEdgeAlpha, secundaShadow); + float3 sunPhase = pow(sunLighting, 32.0) * SharedData::SunColor.xyz * cloudsEdgeAlpha; + float3 masserPhase = pow(masserLighting, 32.0) * SharedData::MasserColor.xyz * SharedData::enbSettings.CloudsEdgeMoonMultiplier * cloudsEdgeAlpha; + float3 secundaPhase = pow(secundaLighting, 32.0) * SharedData::SecundaColor.xyz * SharedData::enbSettings.CloudsEdgeMoonMultiplier * cloudsEdgeAlpha; float3 cloudsScatter = (sunPhase + masserPhase + secundaPhase) * SharedData::enbSettings.CloudsEdgeIntensity; - cloudColor += cloudLuminance * cloudsScatter * 0.5; + cloudColor += cloudLuminance * cloudsScatter; } psout.Color.xyz = cloudColor; diff --git a/src/Features/Effects11.cpp b/src/Features/Effects11.cpp index 8f8c68209d..a8e6248795 100644 --- a/src/Features/Effects11.cpp +++ b/src/Features/Effects11.cpp @@ -51,16 +51,6 @@ Effects11::PerFrame Effects11::GetCommonBufferData() data.ParticleAmbientInfluence = settingManager.GetInterpolatedTimeOfDayValue("AmbientInfluence", "PARTICLE"); data.ParticlePointLightingInfluence = settingManager.GetInterpolatedTimeOfDayValue("PointLightingInfluence", "PARTICLE"); - data.SkyScatteringIntensity = settingManager.GetInterpolatedTimeOfDayValue("Intensity", "SKYSCATTERING"); - data.SkyScatteringAmount = settingManager.GetInterpolatedTimeOfDayValue("Amount", "SKYSCATTERING"); - data.SkyScatteringColorFromSun = settingManager.GetInterpolatedTimeOfDayValue("ColorFromSun", "SKYSCATTERING"); - auto scatteringColor = settingManager.GetInterpolatedColorTimeOfDayValue("ScatteringColor", "SKYSCATTERING"); - data.SkyScatteringColor = { scatteringColor.x, scatteringColor.y, scatteringColor.z }; - data.SkyScatteringCloudsLightingSunMultiplier = settingManager.GetInterpolatedTimeOfDayValue("CloudsLightingSunMultiplier", "SKYSCATTERING"); - data.SkyScatteringCloudsLightingMoonIntensity = settingManager.GetInterpolatedTimeOfDayValue("CloudsLightingMoonIntensity", "SKYSCATTERING"); - - data.EnableCloudsScattering = enableEffect && settingManager.GetValue("EnableCloudsScattering", "EFFECT"); - data.EnableVolumetricRays = enableEffect && settingManager.GetValue("EnableVolumetricRays", "EFFECT"); data.VolumetricRaysIntensity = settingManager.GetInterpolatedTimeOfDayValue("Intensity", "VOLUMETRICRAYS"); { @@ -888,4 +878,3 @@ void Effects11::DrawVolumetricRays() stateBackup.Restore(context); stateBackup.Release(); } - diff --git a/src/Features/Effects11.h b/src/Features/Effects11.h index 0e39858f02..e6acdceb9f 100644 --- a/src/Features/Effects11.h +++ b/src/Features/Effects11.h @@ -66,19 +66,6 @@ struct Effects11 : Feature float VolumetricRaysDesaturation; float3 VolumetricRaysColorFilter; - - uint EnableCloudsScattering; - float SkyScatteringIntensity; - float SkyScatteringAmount; - float SkyScatteringColorFromSun; - - float3 SkyScatteringColor; - float SkyScatteringCloudsLightingSunMultiplier; - - float SkyScatteringCloudsLightingMoonIntensity; - uint pad0; - uint pad1; - uint pad2; }; bool enableEffect = false; diff --git a/src/Features/Effects11/EffectManager.cpp b/src/Features/Effects11/EffectManager.cpp index 420021425e..ab8f4d27cf 100644 --- a/src/Features/Effects11/EffectManager.cpp +++ b/src/Features/Effects11/EffectManager.cpp @@ -141,7 +141,6 @@ void EffectManager::RegisterSettings() settingManager.RegisterBoolSetting("EnablePostPassShader", "EFFECT", false, false); settingManager.RegisterBoolSetting("EnableProceduralSun", "EFFECT", false, false); settingManager.RegisterBoolSetting("EnableCloudShadows", "EFFECT", false, false); - settingManager.RegisterBoolSetting("EnableCloudsScattering", "EFFECT", false, false); settingManager.RegisterBoolSetting("EnableImageBasedLighting", "EFFECT", false, false); settingManager.RegisterBoolSetting("EnableVolumetricRays", "EFFECT", false, false); @@ -218,13 +217,6 @@ void EffectManager::RegisterSettings() settingManager.RegisterBoolSetting("UseProceduralGradientWeights", "SKY", false, false); settingManager.RegisterTimeOfDaySetting("ProceduralGradientWeightCurve", "SKY", 4.0f, 1.0f, 32.0f, 0.01f, true); - settingManager.RegisterTimeOfDaySetting("Intensity", "SKYSCATTERING", 1.0f, 0.0f, 30000.0f, 0.01f, true); - settingManager.RegisterTimeOfDaySetting("Amount", "SKYSCATTERING", 0.0f, 0.0f, 1.0f, 0.01f, true); - settingManager.RegisterTimeOfDaySetting("ColorFromSun", "SKYSCATTERING", 0.0f, 0.0f, 1.0f, 0.01f, true); - settingManager.RegisterColorTimeOfDaySetting("ScatteringColor", "SKYSCATTERING", { 1.0f, 1.0f, 1.0f }, true); - settingManager.RegisterTimeOfDaySetting("CloudsLightingSunMultiplier", "SKYSCATTERING", 0.0f, 0.0f, 100.0f, 0.01f, true); - settingManager.RegisterTimeOfDaySetting("CloudsLightingMoonIntensity", "SKYSCATTERING", 0.0f, 0.0f, 10.0f, 0.01f, true); - settingManager.RegisterFloatSetting("Size", "PROCEDURALSUN", 1.0f, 0.0f, 12.0f, 0.01f, false); settingManager.RegisterFloatSetting("EdgeSoftness", "PROCEDURALSUN", 0.4f, 0.0f, 1.0f, 0.01f, false); settingManager.RegisterTimeOfDaySetting("GlowIntensity", "PROCEDURALSUN", 0.4f, 0.0f, 30000.0f, 0.01f, true); @@ -263,7 +255,6 @@ void EffectManager::RegisterSettings() settingManager.SetCategoryDependency("ADAPTATION", "EnableAdaptation", "EFFECT"); settingManager.SetCategoryDependency("PROCEDURALSUN", "EnableProceduralSun", "EFFECT"); settingManager.SetCategoryDependency("CLOUDSHADOWS", "EnableCloudShadows", "EFFECT"); - settingManager.SetCategoryDependency("SKYSCATTERING", "EnableCloudsScattering", "EFFECT"); settingManager.SetCategoryDependency("IMAGEBASEDLIGHTING", "EnableImageBasedLighting", "EFFECT"); settingManager.SetCategoryDependency("VOLUMETRICRAYS", "EnableVolumetricRays", "EFFECT"); @@ -277,7 +268,6 @@ void EffectManager::RegisterSettings() settingManager.SetCategoryExteriorOnly("CLOUDSHADOWS", true); settingManager.SetCategoryExteriorOnly("IMAGEBASEDLIGHTING", true); settingManager.SetCategoryExteriorOnly("VOLUMETRICRAYS", true); - settingManager.SetCategoryExteriorOnly("SKYSCATTERING", true); settingManager.SetCategoryExteriorOnly("VOLUMETRICFOG", true); settingManager.SetCategoryExteriorOnly("GAMEVOLUMETRICRAYS", true);