Add IndirectLightingIntensity support for lights in Global Surface Atlas
This commit is contained in:
@@ -35,6 +35,7 @@ void DirectionalLight::Draw(RenderContext& renderContext)
|
||||
data.ShadowsDepthBias = ShadowsDepthBias;
|
||||
data.ShadowsSharpness = ShadowsSharpness;
|
||||
data.VolumetricScatteringIntensity = VolumetricScatteringIntensity;
|
||||
data.IndirectLightingIntensity = IndirectLightingIntensity;
|
||||
data.CastVolumetricShadow = CastVolumetricShadow;
|
||||
data.RenderedVolumetricFog = 0;
|
||||
data.ShadowsMode = ShadowsMode;
|
||||
|
||||
@@ -131,6 +131,7 @@ void PointLight::Draw(RenderContext& renderContext)
|
||||
data.SourceRadius = SourceRadius;
|
||||
data.SourceLength = SourceLength;
|
||||
data.ContactShadowsLength = ContactShadowsLength;
|
||||
data.IndirectLightingIntensity = IndirectLightingIntensity;
|
||||
data.IESTexture = IESTexture ? IESTexture->GetTexture() : nullptr;
|
||||
renderContext.List->PointLights.Add(data);
|
||||
}
|
||||
|
||||
@@ -112,6 +112,7 @@ void SkyLight::Draw(RenderContext& renderContext)
|
||||
data.CastVolumetricShadow = CastVolumetricShadow;
|
||||
data.RenderedVolumetricFog = 0;
|
||||
data.AdditiveColor = AdditiveColor.ToVector3() * (AdditiveColor.A * brightness);
|
||||
data.IndirectLightingIntensity = IndirectLightingIntensity;
|
||||
data.Radius = GetScaledRadius();
|
||||
data.Image = GetSource();
|
||||
renderContext.List->SkyLights.Add(data);
|
||||
|
||||
@@ -182,6 +182,7 @@ void SpotLight::Draw(RenderContext& renderContext)
|
||||
data.CosOuterCone = _cosOuterCone;
|
||||
data.InvCosConeDifference = _invCosConeDifference;
|
||||
data.ContactShadowsLength = ContactShadowsLength;
|
||||
data.IndirectLightingIntensity = IndirectLightingIntensity;
|
||||
data.IESTexture = IESTexture ? IESTexture->GetTexture() : nullptr;
|
||||
Vector3::Transform(Vector3::Up, GetOrientation(), data.UpVector);
|
||||
data.OuterConeAngle = outerConeAngle;
|
||||
|
||||
@@ -786,6 +786,7 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
|
||||
const bool useShadow = CanRenderShadow(renderContext.View, light);
|
||||
// TODO: test perf/quality when using Shadow Map for directional light (ShadowsPass::Instance()->LastDirLightShadowMap) instead of Global SDF trace
|
||||
light.SetupLightData(&data.Light, useShadow);
|
||||
data.Light.Color *= light.IndirectLightingIntensity;
|
||||
data.LightShadowsStrength = 1.0f - light.ShadowsStrength;
|
||||
context->UpdateCB(_cb0, &data);
|
||||
context->SetState(_psDirectLighting0);
|
||||
@@ -813,6 +814,7 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
|
||||
// Draw draw light
|
||||
const bool useShadow = CanRenderShadow(renderContext.View, light);
|
||||
light.SetupLightData(&data.Light, useShadow);
|
||||
data.Light.Color *= light.IndirectLightingIntensity;
|
||||
data.LightShadowsStrength = 1.0f - light.ShadowsStrength;
|
||||
context->UpdateCB(_cb0, &data);
|
||||
context->SetState(_psDirectLighting1);
|
||||
@@ -840,6 +842,7 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
|
||||
// Draw draw light
|
||||
const bool useShadow = CanRenderShadow(renderContext.View, light);
|
||||
light.SetupLightData(&data.Light, useShadow);
|
||||
data.Light.Color *= light.IndirectLightingIntensity;
|
||||
data.LightShadowsStrength = 1.0f - light.ShadowsStrength;
|
||||
context->UpdateCB(_cb0, &data);
|
||||
context->SetState(_psDirectLighting1);
|
||||
|
||||
@@ -34,6 +34,7 @@ struct RendererDirectionalLightData
|
||||
float ShadowsSharpness;
|
||||
float VolumetricScatteringIntensity;
|
||||
|
||||
float IndirectLightingIntensity;
|
||||
int8 CastVolumetricShadow : 1;
|
||||
int8 RenderedVolumetricFog : 1;
|
||||
|
||||
@@ -72,6 +73,7 @@ struct RendererSpotLightData
|
||||
float CosOuterCone;
|
||||
float InvCosConeDifference;
|
||||
float ContactShadowsLength;
|
||||
float IndirectLightingIntensity;
|
||||
ShadowsCastingMode ShadowsMode;
|
||||
|
||||
int8 CastVolumetricShadow : 1;
|
||||
@@ -106,6 +108,7 @@ struct RendererPointLightData
|
||||
|
||||
float SourceLength;
|
||||
float ContactShadowsLength;
|
||||
float IndirectLightingIntensity;
|
||||
ShadowsCastingMode ShadowsMode;
|
||||
|
||||
int8 CastVolumetricShadow : 1;
|
||||
@@ -126,6 +129,7 @@ struct RendererSkyLightData
|
||||
float Radius;
|
||||
|
||||
Vector3 AdditiveColor;
|
||||
float IndirectLightingIntensity;
|
||||
|
||||
int8 CastVolumetricShadow : 1;
|
||||
int8 RenderedVolumetricFog : 1;
|
||||
|
||||
Reference in New Issue
Block a user