Add distance-based and frustum-based culling to cloth

This commit is contained in:
Wojtek Figat
2023-07-17 11:16:01 +02:00
parent de8613e223
commit 1af076f180
4 changed files with 130 additions and 38 deletions

View File

@@ -881,7 +881,7 @@ void AnimatedModel::Draw(RenderContext& renderContext)
Matrix::Transformation(_transform.Scale, _transform.Orientation, translation, world);
GEOMETRY_DRAW_STATE_EVENT_BEGIN(_drawState, world);
_lastMinDstSqr = Math::Min(_lastMinDstSqr, Vector3::DistanceSquared(_transform.Translation, renderContext.View.Position + renderContext.View.Origin));
_lastMinDstSqr = Math::Min(_lastMinDstSqr, Vector3::DistanceSquared(_transform.Translation, renderContext.View.WorldPosition));
if (_skinningData.IsReady())
{
// Flush skinning data with GPU
@@ -924,7 +924,7 @@ void AnimatedModel::Draw(RenderContextBatch& renderContextBatch)
Matrix::Transformation(_transform.Scale, _transform.Orientation, translation, world);
GEOMETRY_DRAW_STATE_EVENT_BEGIN(_drawState, world);
_lastMinDstSqr = Math::Min(_lastMinDstSqr, Vector3::DistanceSquared(_transform.Translation, renderContext.View.Position + renderContext.View.Origin));
_lastMinDstSqr = Math::Min(_lastMinDstSqr, Vector3::DistanceSquared(_transform.Translation, renderContext.View.WorldPosition));
if (_skinningData.IsReady())
{
// Flush skinning data with GPU