Created group for Lod component data

Signed-off-by: Kyle B <kylebirnbaum@gmail.com>
This commit is contained in:
Kyle B
2021-08-06 16:57:00 -07:00
parent baab204c0b
commit 51271fa15b
12 changed files with 167 additions and 160 deletions
@@ -359,66 +359,24 @@ namespace AZ
}
}
void MeshFeatureProcessor::SetLodOverride(const MeshHandle& meshHandle, RPI::Cullable::LodOverride lodOverride)
void MeshFeatureProcessor::SetMeshLodConfiguration(const MeshHandle& meshHandle, RPI::Cullable::LodConfiguration meshLodConfig)
{
if (meshHandle.IsValid())
{
meshHandle->SetLodOverride(lodOverride);
meshHandle->SetMeshLodConfiguration(meshLodConfig);
}
}
RPI::Cullable::LodOverride MeshFeatureProcessor::GetLodOverride(const MeshHandle& meshHandle)
RPI::Cullable::LodConfiguration MeshFeatureProcessor::GetMeshLodConfiguration(const MeshHandle& meshHandle) const
{
if (meshHandle.IsValid())
{
return meshHandle->GetLodOverride();
return meshHandle->GetMeshLodConfiguration();
}
else
{
AZ_Assert(false, "Invalid mesh handle");
return 0;
}
}
void MeshFeatureProcessor::SetMinimumScreenCoverage(const MeshHandle& meshHandle, float minimumScreenCoverage)
{
if (meshHandle.IsValid())
{
meshHandle->SetMinimumScreenCoverage(minimumScreenCoverage);
}
}
float MeshFeatureProcessor::GetMinimumScreenCoverage(const MeshHandle& meshHandle)
{
if (meshHandle.IsValid())
{
return meshHandle->GetMinimumScreenCoverage();
}
else
{
AZ_Assert(false, "Invalid mesh handle");
return 0;
}
}
void MeshFeatureProcessor::SetQualityDecayRate(const MeshHandle& meshHandle, float qualityDecayRate)
{
if (meshHandle.IsValid())
{
meshHandle->SetQualityDecayRate(qualityDecayRate);
}
}
float MeshFeatureProcessor::GetQualityDecayRate(const MeshHandle& meshHandle)
{
if (meshHandle.IsValid())
{
return meshHandle->GetQualityDecayRate();
}
else
{
AZ_Assert(false, "Invalid mesh handle");
return 0;
return {0,0,0.0f,0.0f};
}
}
@@ -1033,34 +991,14 @@ namespace AZ
return m_sortKey;
}
void MeshDataInstance::SetLodOverride(RPI::Cullable::LodOverride lodOverride)
void MeshDataInstance::SetMeshLodConfiguration(RPI::Cullable::LodConfiguration meshLodConfig)
{
m_cullable.m_lodData.m_lodOverride = lodOverride;
m_cullable.m_lodData.m_lodConfiguration = meshLodConfig;
}
RPI::Cullable::LodOverride MeshDataInstance::GetLodOverride() const
RPI::Cullable::LodConfiguration MeshDataInstance::GetMeshLodConfiguration() const
{
return m_cullable.m_lodData.m_lodOverride;
}
void MeshDataInstance::SetMinimumScreenCoverage(float minimumScreenCoverage)
{
m_cullable.m_lodData.m_minimumScreenCoverage = minimumScreenCoverage;
}
float MeshDataInstance::GetMinimumScreenCoverage() const
{
return m_cullable.m_lodData.m_minimumScreenCoverage;
}
void MeshDataInstance::SetQualityDecayRate(float qualityDecayRate)
{
m_cullable.m_lodData.m_qualityDecayRate = qualityDecayRate;
}
float MeshDataInstance::GetQualityDecayRate() const
{
return m_cullable.m_lodData.m_qualityDecayRate;
return m_cullable.m_lodData.m_lodConfiguration;
}
void MeshDataInstance::UpdateDrawPackets(bool forceUpdate /*= false*/)
@@ -1110,18 +1048,18 @@ namespace AZ
else
{
//every other lod: use the previous lod's min
lod.m_screenCoverageMax = AZStd::GetMax(lodData.m_lods[lodIndex - 1].m_screenCoverageMin, lodData.m_minimumScreenCoverage);
lod.m_screenCoverageMax = AZStd::GetMax(lodData.m_lods[lodIndex - 1].m_screenCoverageMin, lodData.m_lodConfiguration.m_minimumScreenCoverage);
}
if (lodIndex < lodAssets.size() - 1)
{
//first and middle lods: compute a stepdown value for the min
lod.m_screenCoverageMin = AZStd::GetMax(lodData.m_qualityDecayRate * lod.m_screenCoverageMax, lodData.m_minimumScreenCoverage);
lod.m_screenCoverageMin = AZStd::GetMax(lodData.m_lodConfiguration.m_qualityDecayRate * lod.m_screenCoverageMax, lodData.m_lodConfiguration.m_minimumScreenCoverage);
}
else
{
//last lod: use MinimumScreenCoverage for the min
lod.m_screenCoverageMin = lodData.m_minimumScreenCoverage;
lod.m_screenCoverageMin = lodData.m_lodConfiguration.m_minimumScreenCoverage;
}
lod.m_drawPackets.clear();