다음을 통해 공유


Vector2.Lerp 및 Vector4.Lerp의 동작 변경

Vector2.Lerp(Vector2, Vector2, Single)Vector4.Lerp(Vector4, Vector4, Single) 구현이 부동 소수점 반올림 오차를 올바르게 고려하도록 변경되었습니다.

변경 내용 설명

이전에는 Vector2.Lerp(Vector2, Vector2, Single)Vector4.Lerp(Vector4, Vector4, Single)value1 + (value2 - value1) * amount로 구현되었습니다. 그러나 부동 소수점 반올림 오차로 인해 amount1.0f이면 알고리즘에서 value2를 반환하지 않는 경우가 있습니다.

.NET 5 이상 구현에서는 Vector3.Lerp(Vector3, Vector3, Single)과 동일한 알고리즘((value1 * (1.0f - amount)) + (value2 * amount))을 사용합니다. 이 알고리즘은 반올림 오차를 올바르게 고려합니다. 이제 amount1.0f인 경우 결과는 정확하게 value2가 됩니다. 업데이트된 알고리즘이 제공되면 MathF.FusedMultiplyAdd을 사용하여 알고리즘을 자유롭게 최적화할 수도 있습니다.

도입된 버전

5.0

별도의 동작이 필요하지 않습니다. 그러나 이전 동작을 유지하려는 경우 이전 알고리즘인 value1 + (value2 - value1) * amount를 사용하는 자체 Lerp 함수를 구현할 수 있습니다.

영향을 받는 API