Created group for Lod component data
Signed-off-by: Kyle B <kylebirnbaum@gmail.com>
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user