Various renamings
This commit is contained in:
@@ -50,7 +50,7 @@ void ForwardShadingFeature::Bind(MaterialShader::BindParameters& params, Span<by
|
||||
{
|
||||
params.GPUContext->UnBindSR(dirLightShaderRegisterIndex);
|
||||
}
|
||||
dirLight.SetupLightData(&data.DirectionalLight, useShadow);
|
||||
dirLight.SetShaderData(data.DirectionalLight, useShadow);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -63,7 +63,7 @@ void ForwardShadingFeature::Bind(MaterialShader::BindParameters& params, Span<by
|
||||
if (cache->SkyLights.HasItems())
|
||||
{
|
||||
auto& skyLight = cache->SkyLights.First();
|
||||
skyLight.SetupLightData(&data.SkyLight, false);
|
||||
skyLight.SetShaderData(data.SkyLight, false);
|
||||
const auto texture = skyLight.Image ? skyLight.Image->GetTexture() : nullptr;
|
||||
params.GPUContext->BindSR(skyLightShaderRegisterIndex, GET_TEXTURE_VIEW_SAFE(texture));
|
||||
}
|
||||
@@ -106,7 +106,7 @@ void ForwardShadingFeature::Bind(MaterialShader::BindParameters& params, Span<by
|
||||
const auto& light = cache->PointLights[i];
|
||||
if (CollisionsHelper::SphereIntersectsSphere(objectBounds, BoundingSphere(light.Position, light.Radius)))
|
||||
{
|
||||
light.SetupLightData(&data.LocalLights[data.LocalLightsCount], false);
|
||||
light.SetShaderData(data.LocalLights[data.LocalLightsCount], false);
|
||||
data.LocalLightsCount++;
|
||||
}
|
||||
}
|
||||
@@ -115,7 +115,7 @@ void ForwardShadingFeature::Bind(MaterialShader::BindParameters& params, Span<by
|
||||
const auto& light = cache->SpotLights[i];
|
||||
if (CollisionsHelper::SphereIntersectsSphere(objectBounds, BoundingSphere(light.Position, light.Radius)))
|
||||
{
|
||||
light.SetupLightData(&data.LocalLights[data.LocalLightsCount], false);
|
||||
light.SetShaderData(data.LocalLights[data.LocalLightsCount], false);
|
||||
data.LocalLightsCount++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -961,7 +961,7 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
|
||||
PROFILE_GPU_CPU_NAMED("Directional Light");
|
||||
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);
|
||||
light.SetShaderData(data.Light, useShadow);
|
||||
data.Light.Color *= light.IndirectLightingIntensity;
|
||||
data.LightShadowsStrength = 1.0f - light.ShadowsStrength;
|
||||
context->UpdateCB(_cb0, &data);
|
||||
@@ -994,7 +994,7 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
|
||||
// Draw draw light
|
||||
PROFILE_GPU_CPU_NAMED("Point Light");
|
||||
const bool useShadow = CanRenderShadow(renderContext.View, light);
|
||||
light.SetupLightData(&data.Light, useShadow);
|
||||
light.SetShaderData(data.Light, useShadow);
|
||||
data.Light.Color *= light.IndirectLightingIntensity;
|
||||
data.LightShadowsStrength = 1.0f - light.ShadowsStrength;
|
||||
context->UpdateCB(_cb0, &data);
|
||||
@@ -1027,7 +1027,7 @@ bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* co
|
||||
// Draw draw light
|
||||
PROFILE_GPU_CPU_NAMED("Spot Light");
|
||||
const bool useShadow = CanRenderShadow(renderContext.View, light);
|
||||
light.SetupLightData(&data.Light, useShadow);
|
||||
light.SetShaderData(data.Light, useShadow);
|
||||
data.Light.Color *= light.IndirectLightingIntensity;
|
||||
data.LightShadowsStrength = 1.0f - light.ShadowsStrength;
|
||||
context->UpdateCB(_cb0, &data);
|
||||
|
||||
@@ -277,7 +277,7 @@ void LightPass::RenderLight(RenderContextBatch& renderContextBatch, GPUTextureVi
|
||||
context->UnBindSR(5);
|
||||
|
||||
// Pack light properties buffer
|
||||
light.SetupLightData(&perLight.Light, renderShadow);
|
||||
light.SetShaderData(perLight.Light, renderShadow);
|
||||
Matrix::Transpose(wvp, perLight.WVP);
|
||||
if (useIES)
|
||||
{
|
||||
@@ -334,7 +334,7 @@ void LightPass::RenderLight(RenderContextBatch& renderContextBatch, GPUTextureVi
|
||||
context->UnBindSR(5);
|
||||
|
||||
// Pack light properties buffer
|
||||
light.SetupLightData(&perLight.Light, renderShadow);
|
||||
light.SetShaderData(perLight.Light, renderShadow);
|
||||
Matrix::Transpose(wvp, perLight.WVP);
|
||||
if (useIES)
|
||||
{
|
||||
@@ -377,7 +377,7 @@ void LightPass::RenderLight(RenderContextBatch& renderContextBatch, GPUTextureVi
|
||||
context->UnBindSR(5);
|
||||
|
||||
// Pack light properties buffer
|
||||
light.SetupLightData(&perLight.Light, renderShadow);
|
||||
light.SetShaderData(perLight.Light, renderShadow);
|
||||
|
||||
// Calculate lighting
|
||||
context->UpdateCB(cb0, &perLight);
|
||||
@@ -411,7 +411,7 @@ void LightPass::RenderLight(RenderContextBatch& renderContextBatch, GPUTextureVi
|
||||
Matrix::Multiply(world, view.ViewProjection(), wvp);
|
||||
|
||||
// Pack light properties buffer
|
||||
light.SetupLightData(&perLight.Light, false);
|
||||
light.SetShaderData(perLight.Light, false);
|
||||
Matrix::Transpose(wvp, perLight.WVP);
|
||||
|
||||
// Bind source image
|
||||
|
||||
@@ -39,72 +39,73 @@ namespace
|
||||
CriticalSection MemPoolLocker;
|
||||
}
|
||||
|
||||
void RenderDirectionalLightData::SetupLightData(ShaderLightData* data, bool useShadow) const
|
||||
void RenderDirectionalLightData::SetShaderData(ShaderLightData& data, bool useShadow) const
|
||||
{
|
||||
data->SpotAngles.X = -2.0f;
|
||||
data->SpotAngles.Y = 1.0f;
|
||||
data->SourceRadius = 0;
|
||||
data->SourceLength = 0;
|
||||
data->Color = Color;
|
||||
data->MinRoughness = Math::Max(MinRoughness, MIN_ROUGHNESS);
|
||||
data->Position = Float3::Zero;
|
||||
data->CastShadows = useShadow ? 1.0f : 0.0f;
|
||||
data->Direction = -Direction;
|
||||
data->Radius = 0;
|
||||
data->FalloffExponent = 0;
|
||||
data->InverseSquared = 0;
|
||||
data->RadiusInv = 0;
|
||||
data.SpotAngles.X = -2.0f;
|
||||
data.SpotAngles.Y = 1.0f;
|
||||
data.SourceRadius = 0;
|
||||
data.SourceLength = 0;
|
||||
data.Color = Color;
|
||||
data.MinRoughness = Math::Max(MinRoughness, MIN_ROUGHNESS);
|
||||
data.Position = Float3::Zero;
|
||||
data.CastShadows = useShadow ? 1.0f : 0.0f;
|
||||
data.Direction = -Direction;
|
||||
data.Radius = 0;
|
||||
data.FalloffExponent = 0;
|
||||
data.InverseSquared = 0;
|
||||
data.RadiusInv = 0;
|
||||
}
|
||||
|
||||
void RenderSpotLightData::SetupLightData(ShaderLightData* data, bool useShadow) const
|
||||
void RenderSpotLightData::SetShaderData(ShaderLightData& data, bool useShadow) const
|
||||
{
|
||||
data->SpotAngles.X = CosOuterCone;
|
||||
data->SpotAngles.Y = InvCosConeDifference;
|
||||
data->SourceRadius = SourceRadius;
|
||||
data->SourceLength = 0.0f;
|
||||
data->Color = Color;
|
||||
data->MinRoughness = Math::Max(MinRoughness, MIN_ROUGHNESS);
|
||||
data->Position = Position;
|
||||
data->CastShadows = useShadow ? 1.0f : 0.0f;
|
||||
data->Direction = Direction;
|
||||
data->Radius = Radius;
|
||||
data->FalloffExponent = FallOffExponent;
|
||||
data->InverseSquared = UseInverseSquaredFalloff ? 1.0f : 0.0f;
|
||||
data->RadiusInv = 1.0f / Radius;
|
||||
data.SpotAngles.X = CosOuterCone;
|
||||
data.SpotAngles.Y = InvCosConeDifference;
|
||||
data.SourceRadius = SourceRadius;
|
||||
data.SourceLength = 0.0f;
|
||||
data.Color = Color;
|
||||
data.MinRoughness = Math::Max(MinRoughness, MIN_ROUGHNESS);
|
||||
data.Position = Position;
|
||||
data.CastShadows = useShadow ? 1.0f : 0.0f;
|
||||
data.Direction = Direction;
|
||||
data.Radius = Radius;
|
||||
data.FalloffExponent = FallOffExponent;
|
||||
data.InverseSquared = UseInverseSquaredFalloff ? 1.0f : 0.0f;
|
||||
data.RadiusInv = 1.0f / Radius;
|
||||
}
|
||||
|
||||
void RenderPointLightData::SetupLightData(ShaderLightData* data, bool useShadow) const
|
||||
void RenderPointLightData::SetShaderData(ShaderLightData& data, bool useShadow) const
|
||||
{
|
||||
data->SpotAngles.X = -2.0f;
|
||||
data->SpotAngles.Y = 1.0f;
|
||||
data->SourceRadius = SourceRadius;
|
||||
data->SourceLength = SourceLength;
|
||||
data->Color = Color;
|
||||
data->MinRoughness = Math::Max(MinRoughness, MIN_ROUGHNESS);
|
||||
data->Position = Position;
|
||||
data->CastShadows = useShadow ? 1.0f : 0.0f;
|
||||
data->Direction = Direction;
|
||||
data->Radius = Radius;
|
||||
data->FalloffExponent = FallOffExponent;
|
||||
data->InverseSquared = UseInverseSquaredFalloff ? 1.0f : 0.0f;
|
||||
data->RadiusInv = 1.0f / Radius;
|
||||
data.SpotAngles.X = -2.0f;
|
||||
data.SpotAngles.Y = 1.0f;
|
||||
data.SourceRadius = SourceRadius;
|
||||
data.SourceLength = SourceLength;
|
||||
data.Color = Color;
|
||||
data.MinRoughness = Math::Max(MinRoughness, MIN_ROUGHNESS);
|
||||
data.Position = Position;
|
||||
data.CastShadows = useShadow ? 1.0f : 0.0f;
|
||||
data.Direction = Direction;
|
||||
data.Radius = Radius;
|
||||
data.FalloffExponent = FallOffExponent;
|
||||
data.InverseSquared = UseInverseSquaredFalloff ? 1.0f : 0.0f;
|
||||
data.RadiusInv = 1.0f / Radius;
|
||||
}
|
||||
|
||||
void RenderSkyLightData::SetupLightData(ShaderLightData* data, bool useShadow) const
|
||||
void RenderSkyLightData::SetShaderData(ShaderLightData& data, bool useShadow) const
|
||||
{
|
||||
data->SpotAngles.X = AdditiveColor.X;
|
||||
data->SpotAngles.Y = AdditiveColor.Y;
|
||||
data->SourceRadius = AdditiveColor.Z;
|
||||
data->SourceLength = Image ? Image->StreamingTexture()->TotalMipLevels() - 2.0f : 0.0f;
|
||||
data->Color = Color;
|
||||
data->MinRoughness = MIN_ROUGHNESS;
|
||||
data->Position = Position;
|
||||
data->CastShadows = useShadow ? 1.0f : 0.0f;
|
||||
data->Direction = Float3::Forward;
|
||||
data->Radius = Radius;
|
||||
data->FalloffExponent = 0;
|
||||
data->InverseSquared = 0;
|
||||
data->RadiusInv = 1.0f / Radius;
|
||||
data.SpotAngles.X = AdditiveColor.X;
|
||||
data.SpotAngles.Y = AdditiveColor.Y;
|
||||
data.SourceRadius = AdditiveColor.Z;
|
||||
data.SourceLength = Image ? Image->StreamingTexture()->TotalMipLevels() - 2.0f : 0.0f;
|
||||
data.Color = Color;
|
||||
data.MinRoughness = MIN_ROUGHNESS;
|
||||
data.Position = Position;
|
||||
data.CastShadows = useShadow ? 1.0f : 0.0f;
|
||||
data.Direction = Float3::Forward;
|
||||
data.Radius = Radius;
|
||||
data.FalloffExponent = 0;
|
||||
data.InverseSquared = 0;
|
||||
data.RadiusInv = 1.0f / Radius;
|
||||
}
|
||||
}
|
||||
|
||||
void* RendererAllocation::Allocate(uintptr size)
|
||||
|
||||
@@ -61,7 +61,7 @@ struct RenderDirectionalLightData : RenderLightData
|
||||
float Cascade3Spacing;
|
||||
float Cascade4Spacing;
|
||||
|
||||
void SetupLightData(ShaderLightData* data, bool useShadow) const;
|
||||
void SetShaderData(ShaderLightData& data, bool useShadow) const;
|
||||
};
|
||||
|
||||
struct RenderSpotLightData : RenderLightData
|
||||
@@ -79,7 +79,7 @@ struct RenderSpotLightData : RenderLightData
|
||||
|
||||
GPUTexture* IESTexture;
|
||||
|
||||
void SetupLightData(ShaderLightData* data, bool useShadow) const;
|
||||
void SetShaderData(ShaderLightData& data, bool useShadow) const;
|
||||
};
|
||||
|
||||
struct RenderPointLightData : RenderLightData
|
||||
@@ -93,7 +93,7 @@ struct RenderPointLightData : RenderLightData
|
||||
|
||||
GPUTexture* IESTexture;
|
||||
|
||||
void SetupLightData(ShaderLightData* data, bool useShadow) const;
|
||||
void SetShaderData(ShaderLightData& data, bool useShadow) const;
|
||||
};
|
||||
|
||||
struct RenderSkyLightData : RenderLightData
|
||||
@@ -103,7 +103,7 @@ struct RenderSkyLightData : RenderLightData
|
||||
|
||||
CubeTexture* Image;
|
||||
|
||||
void SetupLightData(ShaderLightData* data, bool useShadow) const;
|
||||
void SetShaderData(ShaderLightData& data, bool useShadow) const;
|
||||
};
|
||||
|
||||
struct RenderDecalData
|
||||
|
||||
@@ -661,7 +661,7 @@ void ShadowsPass::RenderShadow(RenderContextBatch& renderContextBatch, RenderPoi
|
||||
// Setup shader data
|
||||
Data sperLight;
|
||||
GBufferPass::SetInputs(view, sperLight.GBuffer);
|
||||
light.SetupLightData(&sperLight.Light, true);
|
||||
light.SetShaderData(sperLight.Light, true);
|
||||
sperLight.LightShadow = shadowData.Constants;
|
||||
Matrix::Transpose(view.ViewProjection(), sperLight.ViewProjectionMatrix);
|
||||
sperLight.ContactShadowsDistance = light.ShadowsDistance;
|
||||
@@ -739,7 +739,7 @@ void ShadowsPass::RenderShadow(RenderContextBatch& renderContextBatch, RenderSpo
|
||||
// Setup shader data
|
||||
Data sperLight;
|
||||
GBufferPass::SetInputs(view, sperLight.GBuffer);
|
||||
light.SetupLightData(&sperLight.Light, true);
|
||||
light.SetShaderData(sperLight.Light, true);
|
||||
sperLight.LightShadow = shadowData.Constants;
|
||||
Matrix::Transpose(view.ViewProjection(), sperLight.ViewProjectionMatrix);
|
||||
sperLight.ContactShadowsDistance = light.ShadowsDistance;
|
||||
@@ -809,7 +809,7 @@ void ShadowsPass::RenderShadow(RenderContextBatch& renderContextBatch, RenderDir
|
||||
Data sperLight;
|
||||
auto& view = renderContext.View;
|
||||
GBufferPass::SetInputs(view, sperLight.GBuffer);
|
||||
light.SetupLightData(&sperLight.Light, true);
|
||||
light.SetShaderData(sperLight.Light, true);
|
||||
sperLight.LightShadow = shadowData.Constants;
|
||||
Matrix::Transpose(view.ViewProjection(), sperLight.ViewProjectionMatrix);
|
||||
sperLight.ContactShadowsDistance = light.ShadowsDistance;
|
||||
|
||||
@@ -305,7 +305,7 @@ void VolumetricFogPass::RenderRadialLight(RenderContext& renderContext, GPUConte
|
||||
perLight.LocalLightScatteringIntensity = light.VolumetricScatteringIntensity;
|
||||
perLight.ViewSpaceBoundingSphere = Float4(viewSpaceLightBoundsOrigin, radius);
|
||||
Matrix::Transpose(view.Projection, perLight.ViewToVolumeClip);
|
||||
light.SetupLightData(&perLight.LocalLight, true);
|
||||
light.SetShaderData(perLight.LocalLight, true);
|
||||
perLight.LocalLightShadow = shadow;
|
||||
|
||||
// Upload data
|
||||
@@ -366,7 +366,7 @@ void VolumetricFogPass::RenderRadialLight(RenderContext& renderContext, GPUConte
|
||||
perLight.LocalLightScatteringIntensity = light.VolumetricScatteringIntensity;
|
||||
perLight.ViewSpaceBoundingSphere = Float4(viewSpaceLightBoundsOrigin, radius);
|
||||
Matrix::Transpose(renderContext.View.Projection, perLight.ViewToVolumeClip);
|
||||
light.SetupLightData(&perLight.LocalLight, withShadow);
|
||||
light.SetShaderData(perLight.LocalLight, withShadow);
|
||||
|
||||
// Upload data
|
||||
context->UpdateCB(cb1, &perLight);
|
||||
@@ -442,7 +442,7 @@ void VolumetricFogPass::Render(RenderContext& renderContext)
|
||||
{
|
||||
const auto shadowPass = ShadowsPass::Instance();
|
||||
const bool useShadow = dirLight.CastVolumetricShadow && shadowPass->LastDirLightIndex == dirLightIndex;
|
||||
dirLight.SetupLightData(&_cache.Data.DirectionalLight, useShadow);
|
||||
dirLight.SetShaderData(_cache.Data.DirectionalLight, useShadow);
|
||||
_cache.Data.DirectionalLight.Color *= brightness;
|
||||
if (useShadow)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user