@@ -72,6 +72,15 @@ void SampleSSGISpecular(uint2 pixCoord, sh2 lobe, out float ao, out float3 il, i
7272}
7373#endif
7474
75+ #if defined (IBL)
76+ # if !defined (DYNAMIC_CUBEMAPS)
77+ # undef IBL
78+ # else
79+ # define IBL_DEFERRED
80+ # include "IBL/IBL.hlsli"
81+ # endif
82+ #endif
83+
7584[numthreads (8 , 8 , 1 )] void main (uint3 dispatchID : SV_DispatchThreadID ) {
7685 // Early exit if dispatch thread is outside screen bounds
7786 if (any (dispatchID.xy >= uint2 (SharedData::BufferDim.xy)))
@@ -188,6 +197,15 @@ void SampleSSGISpecular(uint2 pixCoord, sh2 lobe, out float ao, out float3 il, i
188197
189198 float specularIrradianceLuminance = Color::RGBToLuminance (Color::GammaToLinear (EnvTexture.SampleLevel (LinearSampler, R, 15 )));
190199
200+ # if defined (IBL)
201+ float3 iblColor = 0 ;
202+ if (SharedData::iblSettings.EnableDiffuseIBL && SharedData::iblSettings.EnableInterior) {
203+ directionalAmbientColorSpecular *= SharedData::iblSettings.DALCAmount;
204+ iblColor += Color::Saturation (ImageBasedLighting::GetIBLColor (-R), SharedData::iblSettings.IBLSaturation) * SharedData::iblSettings.DiffuseIBLScale;
205+ float iblColorLuminance = Color::RGBToLuminance (iblColor);
206+ directionalAmbientColorSpecular += iblColorLuminance;
207+ }
208+ # endif
191209 specularIrradiance = (specularIrradiance / max (specularIrradianceLuminance, 0.001 )) * directionalAmbientColorSpecular;
192210
193211 finalIrradiance += specularIrradiance;
@@ -204,6 +222,15 @@ void SampleSSGISpecular(uint2 pixCoord, sh2 lobe, out float ao, out float3 il, i
204222 skylightingSpecular = Skylighting::mixSpecular (SharedData::skylightingSettings, skylightingSpecular);
205223
206224 directionalAmbientColorSpecular *= skylightingSpecular;
225+ # if defined (IBL)
226+ float3 iblColor = 0 ;
227+ if (SharedData::iblSettings.EnableDiffuseIBL) {
228+ directionalAmbientColorSpecular *= SharedData::iblSettings.DALCAmount;
229+ iblColor += Color::Saturation (ImageBasedLighting::GetIBLColor (-R, skylightingSpecular), SharedData::iblSettings.IBLSaturation) * SharedData::iblSettings.DiffuseIBLScale;
230+ float iblColorLuminance = Color::RGBToLuminance (iblColor);
231+ directionalAmbientColorSpecular += iblColorLuminance;
232+ }
233+ # endif
207234
208235 float3 specularIrradiance = 1 ;
209236
@@ -227,6 +254,15 @@ void SampleSSGISpecular(uint2 pixCoord, sh2 lobe, out float ao, out float3 il, i
227254
228255 finalIrradiance = lerp (specularIrradiance, specularIrradianceReflections, skylightingSpecular);
229256# else
257+ # if defined (IBL)
258+ float3 iblColor = 0 ;
259+ if (SharedData::iblSettings.EnableDiffuseIBL) {
260+ directionalAmbientColorSpecular *= SharedData::iblSettings.DALCAmount;
261+ iblColor += Color::Saturation (ImageBasedLighting::GetIBLColor (-R), SharedData::iblSettings.IBLSaturation) * SharedData::iblSettings.DiffuseIBLScale;
262+ float iblColorLuminance = Color::RGBToLuminance (iblColor);
263+ directionalAmbientColorSpecular += iblColorLuminance;
264+ }
265+ # endif
230266 float3 specularIrradianceReflections = Color::GammaToLinear (EnvReflectionsTexture.SampleLevel (LinearSampler, R, level));
231267
232268 float specularIrradianceReflectionsLuminance = Color::RGBToLuminance (Color::GammaToLinear (EnvReflectionsTexture.SampleLevel (LinearSampler, R, 15 )));
0 commit comments