Merge pull request #737 from aws-lumberyard-dev/Atom/mriegger/ATOM-15529

Making shadow res of 1024 and bicubic pcf the default
This commit is contained in:
mrieggeramzn
2021-05-18 09:13:49 -07:00
committed by GitHub
6 changed files with 15 additions and 15 deletions
@@ -26,7 +26,7 @@
//
//----------------------------------------------------------------------------------
#define Depth_to_Z(d, unprojectZ) (unprojectZ.x / (d + unprojectZ.y))
#define DepthBufferToViewSpace(d, unprojectZ) (unprojectZ.x / (d + unprojectZ.y))
#define NVLC_MAX_POSSIBLE_LIGHTS_PER_BIN 256
@@ -187,7 +187,7 @@ float4 RemapZToUnit(float4 z, float2 minmaxz)
uint DepthSamplesToBinMask2x(float2 d, float2 minmaxz, float2 unprojectZ)
{
float2 z = Depth_to_Z(d, unprojectZ);
float2 z = DepthBufferToViewSpace(d, unprojectZ);
// Tile_UnitValueToBit will convert that 0 to 1 value into 0.0 to 31.99999
float2 bit = Tile_UnitValueToBit(RemapZToUnit(z, minmaxz));
@@ -207,7 +207,7 @@ uint DepthSamplesToBinMask2x(float2 d, float2 minmaxz, float2 unprojectZ)
uint DepthSamplesToBinMask4x(float4 d, float2 minmaxz, float2 unprojectZ)
{
float4 z = Depth_to_Z(d, unprojectZ);
float4 z = DepthBufferToViewSpace(d, unprojectZ);
// Tile_UnitValueToBit will convert that 0 to 1 value into 0.0 to 31.99999
float4 bit = Tile_UnitValueToBit(RemapZToUnit(z, minmaxz));
@@ -150,7 +150,7 @@ uint ComputeTransparentBitMask(float2 minmaxZ)
return 0;
}
float2 minmaxZ_transparent = Depth_to_Z(minmaxDepth_transparent, PassSrg::m_constantData.m_unprojectZ);
float2 minmaxZ_transparent = DepthBufferToViewSpace(minmaxDepth_transparent, PassSrg::m_constantData.m_unprojectZ);
float2 minmaxUnit_transparent = RemapZToUnit(minmaxZ_transparent, minmaxZ);
@@ -295,7 +295,7 @@ void MainCS(
float2 minmaxDepth_opaque = ComputeDepthMinMaxFrom2Samples(opaqueDepthSamples);
minmaxDepth_both = ExpandMinMax(minmaxDepth_opaque, minmaxDepth_transparent);
UpdateMinMaxFromAllThreads(minmaxDepth_both, minmaxDepth_transparent, isPixelOnScreen);
minmaxDepth_both = Depth_to_Z(minmaxDepth_both, PassSrg::m_constantData.m_unprojectZ);
minmaxDepth_both = DepthBufferToViewSpace(minmaxDepth_both, PassSrg::m_constantData.m_unprojectZ);
// if zNear == zFar we want to map z == zNear to 0-bit, so we have to keep zNear without modifications
minmaxDepth_both.y = IncrementULP(minmaxDepth_both.y);
@@ -313,7 +313,7 @@ void MainCS(
float2 minmaxDepth_opaque = ComputeDepthMinMaxFrom4Samples(opaqueDepthSamples);
minmaxDepth_both = ExpandMinMax(minmaxDepth_opaque, minmaxDepth_transparent);
UpdateMinMaxFromAllThreads(minmaxDepth_both, minmaxDepth_transparent, isPixelOnScreen);
minmaxDepth_both = Depth_to_Z(minmaxDepth_both, PassSrg::m_constantData.m_unprojectZ);
minmaxDepth_both = DepthBufferToViewSpace(minmaxDepth_both, PassSrg::m_constantData.m_unprojectZ);
// if zNear == zFar we want to map z == zNear to 0-bit, so we have to keep zNear without modifications
minmaxDepth_both.y = IncrementULP(minmaxDepth_both.y);
@@ -62,7 +62,7 @@ namespace AZ
bool m_enableShadow = false;
ShadowmapSize m_shadowmapMaxSize = ShadowmapSize::Size256;
ShadowFilterMethod m_shadowFilterMethod = ShadowFilterMethod::None;
PcfMethod m_pcfMethod = PcfMethod::BoundarySearch;
PcfMethod m_pcfMethod = PcfMethod::Bicubic;
float m_boundaryWidthInDegrees = 0.25f;
uint16_t m_predictionSampleCount = 4;
uint16_t m_filteringSampleCount = 12;
@@ -61,7 +61,7 @@ namespace AZ
float m_shadowFarClipDistance = 100.f;
//! Width/Height of shadowmap images.
ShadowmapSize m_shadowmapSize = MaxShadowmapImageSize;
ShadowmapSize m_shadowmapSize = ShadowmapSize::Size1024;
//! Number of cascades.
uint32_t m_cascadeCount = 4;
@@ -117,7 +117,7 @@ namespace AZ
//! It is used only when the pixel is predicted as on the boundary.
uint16_t m_filteringSampleCount = 32;
PcfMethod m_pcfMethod = PcfMethod::BoundarySearch;
PcfMethod m_pcfMethod = PcfMethod::Bicubic;
bool IsSplitManual() const;
bool IsSplitAutomatic() const;
@@ -173,10 +173,10 @@ namespace AZ
->DataElement(
Edit::UIHandlers::ComboBox, &AreaLightComponentConfig::m_pcfMethod, "Pcf method",
"Type of PCF to use.\n"
" Boundary search: do several taps to first determine if we are on a shadow boundary\n"
" Bicubic: a smooth, fixed-size kernel \n")
->EnumAttribute(PcfMethod::BoundarySearch, "Boundary search")
" Bicubic: a smooth, fixed-size kernel \n"
" Boundary search: do several taps to first determine if we are on a shadow boundary\n")
->EnumAttribute(PcfMethod::Bicubic, "Bicubic")
->EnumAttribute(PcfMethod::BoundarySearch, "Boundary search")
->Attribute(Edit::Attributes::ChangeNotify, Edit::PropertyRefreshLevels::ValuesOnly)
->Attribute(Edit::Attributes::Visibility, &AreaLightComponentConfig::SupportsShadows)
->Attribute(Edit::Attributes::ReadOnly, &AreaLightComponentConfig::IsShadowPcfDisabled);
@@ -163,10 +163,10 @@ namespace AZ
->DataElement(
Edit::UIHandlers::ComboBox, &DirectionalLightComponentConfig::m_pcfMethod, "Pcf Method",
"Type of Pcf to use.\n"
" Boundary search: do several taps to first determine if we are on a shadow boundary\n"
" Bicubic: a smooth, fixed-size kernel \n")
->EnumAttribute(PcfMethod::BoundarySearch, "Boundary Search")
" Bicubic: a smooth, fixed-size kernel \n"
" Boundary search: do several taps to first determine if we are on a shadow boundary\n")
->EnumAttribute(PcfMethod::Bicubic, "Bicubic")
->EnumAttribute(PcfMethod::BoundarySearch, "Boundary Search")
->Attribute(Edit::Attributes::ChangeNotify, Edit::PropertyRefreshLevels::ValuesOnly)
->Attribute(Edit::Attributes::ReadOnly, &DirectionalLightComponentConfig::IsShadowPcfDisabled);
;