Adjustments
This commit is contained in:
@@ -50,7 +50,7 @@ void ForwardShadingFeature::Bind(MaterialShader::BindParameters& params, Span<by
|
||||
{
|
||||
context->UnBindSR(dirLightShaderRegisterIndex);
|
||||
}
|
||||
dirLight.SetupLightData(&data.DirectionalLight, view, useShadow);
|
||||
dirLight.SetupLightData(&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, view, false);
|
||||
skyLight.SetupLightData(&data.SkyLight, false);
|
||||
const auto texture = skyLight.Image ? skyLight.Image->GetTexture() : nullptr;
|
||||
context->BindSR(skyLightShaderRegisterIndex, GET_TEXTURE_VIEW_SAFE(texture));
|
||||
}
|
||||
@@ -104,7 +104,7 @@ void ForwardShadingFeature::Bind(MaterialShader::BindParameters& params, Span<by
|
||||
const auto& light = cache->PointLights[i];
|
||||
if (BoundingSphere(light.Position, light.Radius).Contains(drawCall.World.GetTranslation()) != ContainmentType::Disjoint)
|
||||
{
|
||||
light.SetupLightData(&data.LocalLights[data.LocalLightsCount], view, false);
|
||||
light.SetupLightData(&data.LocalLights[data.LocalLightsCount], false);
|
||||
data.LocalLightsCount++;
|
||||
}
|
||||
}
|
||||
@@ -113,7 +113,7 @@ void ForwardShadingFeature::Bind(MaterialShader::BindParameters& params, Span<by
|
||||
const auto& light = cache->SpotLights[i];
|
||||
if (BoundingSphere(light.Position, light.Radius).Contains(drawCall.World.GetTranslation()) != ContainmentType::Disjoint)
|
||||
{
|
||||
light.SetupLightData(&data.LocalLights[data.LocalLightsCount], view, false);
|
||||
light.SetupLightData(&data.LocalLights[data.LocalLightsCount], false);
|
||||
data.LocalLightsCount++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -285,7 +285,7 @@ void LightPass::RenderLight(RenderContext& renderContext, GPUTextureView* lightB
|
||||
context->UnBindSR(5);
|
||||
|
||||
// Pack light properties buffer
|
||||
light.SetupLightData(&perLight.Light, view, renderShadow);
|
||||
light.SetupLightData(&perLight.Light, renderShadow);
|
||||
Matrix::Transpose(wvp, perLight.WVP);
|
||||
if (useIES)
|
||||
{
|
||||
@@ -342,7 +342,7 @@ void LightPass::RenderLight(RenderContext& renderContext, GPUTextureView* lightB
|
||||
context->UnBindSR(5);
|
||||
|
||||
// Pack light properties buffer
|
||||
light.SetupLightData(&perLight.Light, view, renderShadow);
|
||||
light.SetupLightData(&perLight.Light, renderShadow);
|
||||
Matrix::Transpose(wvp, perLight.WVP);
|
||||
if (useIES)
|
||||
{
|
||||
@@ -385,7 +385,7 @@ void LightPass::RenderLight(RenderContext& renderContext, GPUTextureView* lightB
|
||||
context->UnBindSR(5);
|
||||
|
||||
// Pack light properties buffer
|
||||
light.SetupLightData(&perLight.Light, view, renderShadow);
|
||||
light.SetupLightData(&perLight.Light, renderShadow);
|
||||
|
||||
// Calculate lighting
|
||||
context->UpdateCB(cb0, &perLight);
|
||||
@@ -419,7 +419,7 @@ void LightPass::RenderLight(RenderContext& renderContext, GPUTextureView* lightB
|
||||
Matrix::Multiply(world, view.ViewProjection(), wvp);
|
||||
|
||||
// Pack light properties buffer
|
||||
light.SetupLightData(&perLight.Light, view, false);
|
||||
light.SetupLightData(&perLight.Light, false);
|
||||
Matrix::Transpose(wvp, perLight.WVP);
|
||||
|
||||
// Bind source image
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace
|
||||
Array<MemPoolEntry> MemPool;
|
||||
}
|
||||
|
||||
void RendererDirectionalLightData::SetupLightData(LightData* data, const RenderView& view, bool useShadow) const
|
||||
void RendererDirectionalLightData::SetupLightData(LightData* data, bool useShadow) const
|
||||
{
|
||||
data->SpotAngles.X = -2.0f;
|
||||
data->SpotAngles.Y = 1.0f;
|
||||
@@ -58,7 +58,7 @@ void RendererDirectionalLightData::SetupLightData(LightData* data, const RenderV
|
||||
data->RadiusInv = 0;
|
||||
}
|
||||
|
||||
void RendererSpotLightData::SetupLightData(LightData* data, const RenderView& view, bool useShadow) const
|
||||
void RendererSpotLightData::SetupLightData(LightData* data, bool useShadow) const
|
||||
{
|
||||
data->SpotAngles.X = CosOuterCone;
|
||||
data->SpotAngles.Y = InvCosConeDifference;
|
||||
@@ -75,7 +75,7 @@ void RendererSpotLightData::SetupLightData(LightData* data, const RenderView& vi
|
||||
data->RadiusInv = 1.0f / Radius;
|
||||
}
|
||||
|
||||
void RendererPointLightData::SetupLightData(LightData* data, const RenderView& view, bool useShadow) const
|
||||
void RendererPointLightData::SetupLightData(LightData* data, bool useShadow) const
|
||||
{
|
||||
data->SpotAngles.X = -2.0f;
|
||||
data->SpotAngles.Y = 1.0f;
|
||||
@@ -92,7 +92,7 @@ void RendererPointLightData::SetupLightData(LightData* data, const RenderView& v
|
||||
data->RadiusInv = 1.0f / Radius;
|
||||
}
|
||||
|
||||
void RendererSkyLightData::SetupLightData(LightData* data, const RenderView& view, bool useShadow) const
|
||||
void RendererSkyLightData::SetupLightData(LightData* data, bool useShadow) const
|
||||
{
|
||||
data->SpotAngles.X = AdditiveColor.X;
|
||||
data->SpotAngles.Y = AdditiveColor.Y;
|
||||
|
||||
@@ -42,7 +42,7 @@ struct RendererDirectionalLightData
|
||||
float ContactShadowsLength;
|
||||
ShadowsCastingMode ShadowsMode;
|
||||
|
||||
void SetupLightData(LightData* data, const RenderView& view, bool useShadow) const;
|
||||
void SetupLightData(LightData* data, bool useShadow) const;
|
||||
};
|
||||
|
||||
struct RendererSpotLightData
|
||||
@@ -80,7 +80,7 @@ struct RendererSpotLightData
|
||||
|
||||
GPUTexture* IESTexture;
|
||||
|
||||
void SetupLightData(LightData* data, const RenderView& view, bool useShadow) const;
|
||||
void SetupLightData(LightData* data, bool useShadow) const;
|
||||
};
|
||||
|
||||
struct RendererPointLightData
|
||||
@@ -114,7 +114,7 @@ struct RendererPointLightData
|
||||
|
||||
GPUTexture* IESTexture;
|
||||
|
||||
void SetupLightData(LightData* data, const RenderView& view, bool useShadow) const;
|
||||
void SetupLightData(LightData* data, bool useShadow) const;
|
||||
};
|
||||
|
||||
struct RendererSkyLightData
|
||||
@@ -132,7 +132,7 @@ struct RendererSkyLightData
|
||||
|
||||
CubeTexture* Image;
|
||||
|
||||
void SetupLightData(LightData* data, const RenderView& view, bool useShadow) const;
|
||||
void SetupLightData(LightData* data, bool useShadow) const;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -325,7 +325,7 @@ void ShadowsPass::RenderShadow(RenderContext& renderContext, RendererPointLightD
|
||||
|
||||
// Setup shader data
|
||||
GBufferPass::SetInputs(view, sperLight.GBuffer);
|
||||
light.SetupLightData(&sperLight.Light, view, true);
|
||||
light.SetupLightData(&sperLight.Light, true);
|
||||
sperLight.LightShadow.ShadowMapSize = shadowMapsSizeCube;
|
||||
sperLight.LightShadow.Sharpness = light.ShadowsSharpness;
|
||||
sperLight.LightShadow.Fade = Math::Saturate(light.ShadowsStrength * fade);
|
||||
@@ -427,7 +427,7 @@ void ShadowsPass::RenderShadow(RenderContext& renderContext, RendererSpotLightDa
|
||||
|
||||
// Setup shader data
|
||||
GBufferPass::SetInputs(view, sperLight.GBuffer);
|
||||
light.SetupLightData(&sperLight.Light, view, true);
|
||||
light.SetupLightData(&sperLight.Light, true);
|
||||
sperLight.LightShadow.ShadowMapSize = shadowMapsSizeCube;
|
||||
sperLight.LightShadow.Sharpness = light.ShadowsSharpness;
|
||||
sperLight.LightShadow.Fade = Math::Saturate(light.ShadowsStrength * fade);
|
||||
@@ -719,7 +719,7 @@ void ShadowsPass::RenderShadow(RenderContext& renderContext, RendererDirectional
|
||||
|
||||
// Setup shader data
|
||||
GBufferPass::SetInputs(view, sperLight.GBuffer);
|
||||
light.SetupLightData(&sperLight.Light, view, true);
|
||||
light.SetupLightData(&sperLight.Light, true);
|
||||
sperLight.LightShadow.ShadowMapSize = shadowMapsSizeCSM;
|
||||
sperLight.LightShadow.Sharpness = light.ShadowsSharpness;
|
||||
sperLight.LightShadow.Fade = Math::Saturate(light.ShadowsStrength);
|
||||
|
||||
@@ -306,7 +306,7 @@ void VolumetricFogPass::RenderRadialLight(RenderContext& renderContext, GPUConte
|
||||
perLight.LocalLightScatteringIntensity = light.VolumetricScatteringIntensity;
|
||||
perLight.ViewSpaceBoundingSphere = Vector4(viewSpaceLightBoundsOrigin, bounds.Radius);
|
||||
Matrix::Transpose(view.Projection, perLight.ViewToVolumeClip);
|
||||
light.SetupLightData(&perLight.LocalLight, view, true);
|
||||
light.SetupLightData(&perLight.LocalLight, true);
|
||||
perLight.LocalLightShadow = shadow;
|
||||
|
||||
// Upload data
|
||||
@@ -365,7 +365,7 @@ void VolumetricFogPass::RenderRadialLight(RenderContext& renderContext, GPUConte
|
||||
perLight.LocalLightScatteringIntensity = light.VolumetricScatteringIntensity;
|
||||
perLight.ViewSpaceBoundingSphere = Vector4(viewSpaceLightBoundsOrigin, bounds.Radius);
|
||||
Matrix::Transpose(renderContext.View.Projection, perLight.ViewToVolumeClip);
|
||||
light.SetupLightData(&perLight.LocalLight, renderContext.View, withShadow);
|
||||
light.SetupLightData(&perLight.LocalLight, withShadow);
|
||||
|
||||
// Upload data
|
||||
context->UpdateCB(cb1, &perLight);
|
||||
@@ -441,7 +441,7 @@ void VolumetricFogPass::Render(RenderContext& renderContext)
|
||||
{
|
||||
const auto shadowPass = ShadowsPass::Instance();
|
||||
const bool useShadow = dirLight.CastVolumetricShadow && shadowPass->LastDirLightIndex == dirLightIndex;
|
||||
dirLight.SetupLightData(&_cache.Data.DirectionalLight, view, useShadow);
|
||||
dirLight.SetupLightData(&_cache.Data.DirectionalLight, useShadow);
|
||||
_cache.Data.DirectionalLight.Color *= brightness;
|
||||
if (useShadow)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user