Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions package/Shaders/Common/SharedData.hlsli
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down
96 changes: 4 additions & 92 deletions package/Shaders/Sky.hlsl
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down
11 changes: 0 additions & 11 deletions src/Features/Effects11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<bool>("EnableCloudsScattering", "EFFECT");

data.EnableVolumetricRays = enableEffect && settingManager.GetValue<bool>("EnableVolumetricRays", "EFFECT");
data.VolumetricRaysIntensity = settingManager.GetInterpolatedTimeOfDayValue("Intensity", "VOLUMETRICRAYS");
{
Expand Down Expand Up @@ -888,4 +878,3 @@ void Effects11::DrawVolumetricRays()
stateBackup.Restore(context);
stateBackup.Release();
}

13 changes: 0 additions & 13 deletions src/Features/Effects11.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
10 changes: 0 additions & 10 deletions src/Features/Effects11/EffectManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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");

Expand All @@ -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);

Expand Down
Loading