diff --git a/Hydrogent/interface/Tasks/HnBeginFrameTask.hpp b/Hydrogent/interface/Tasks/HnBeginFrameTask.hpp index 7165e5bd..04d57778 100644 --- a/Hydrogent/interface/Tasks/HnBeginFrameTask.hpp +++ b/Hydrogent/interface/Tasks/HnBeginFrameTask.hpp @@ -89,10 +89,11 @@ struct HnBeginFrameTaskParams float4 UnshadedColor = {1, 1, 1, 1}; float PointSize = 1; - float4 LoadingAnimationColor0 = {0.1f, 0.100f, 0.10f, 1.0f}; - float4 LoadingAnimationColor1 = {1.0f, 0.675f, 0.25f, 1.0f}; - float LoadingAnimationWorldScale = 1.0f; - float LoadingAnimationSpeed = 0.25f; + float4 LoadingAnimationColor0 = {0.1f, 0.100f, 0.10f, 1.0f}; + float4 LoadingAnimationColor1 = {1.0f, 0.675f, 0.25f, 1.0f}; + float LoadingAnimationWorldScale = 1.0f; + float LoadingAnimationSpeed = 0.25f; + float LoadingAnimationTransitionDuration = 0.5f; constexpr bool operator==(const RendererParams& rhs) const { diff --git a/Hydrogent/src/Tasks/HnBeginFrameTask.cpp b/Hydrogent/src/Tasks/HnBeginFrameTask.cpp index c894a70b..c32d58a2 100644 --- a/Hydrogent/src/Tasks/HnBeginFrameTask.cpp +++ b/Hydrogent/src/Tasks/HnBeginFrameTask.cpp @@ -681,9 +681,11 @@ void HnBeginFrameTask::UpdateFrameConstants(IDeviceContext* pCtx, if (m_FallBackPsoUseStartTime > 0 && m_FallBackPsoUseEndTime > m_FallBackPsoUseStartTime) { float FallbackDuration = static_cast(m_FallBackPsoUseEndTime - m_FallBackPsoUseStartTime); - float TransitionDuration = std::min(0.5f, FallbackDuration * 0.5f); - LoadingAnimationFactor = static_cast(m_CurrFrameTime - m_FallBackPsoUseEndTime) / TransitionDuration; - LoadingAnimationFactor = std::max(1.f - LoadingAnimationFactor, 0.f); + float TransitionDuration = std::min(m_Params.Renderer.LoadingAnimationTransitionDuration, FallbackDuration * 0.5f); + LoadingAnimationFactor = TransitionDuration > 0.f ? + static_cast(m_CurrFrameTime - m_FallBackPsoUseEndTime) / TransitionDuration : + 1.f; + LoadingAnimationFactor = std::max(1.f - LoadingAnimationFactor, 0.f); if (LoadingAnimationFactor == 0) { // Transition is over