Ni55aN
@Ni55aN

Как избавиться от потери точности float в opengl?

При попытке смоделировать 3D планету с различными уровнями детализации получаю следующее:

сфера радиусом 6700 единиц, естественно, разделена по quadTree, хотя не суть важно. Таким образом, поверхность земли находится примерно на расстоянии 6700 от центра СК, и чем ближе камера приближена к поверхности, тем больше "трясутся" вершины, что вызвано потерей точности при построении матрицы MVP, так как позиция камеры и объектов основаны на больших значениях.

Чтобы избежать этого, пробовал перед генерацией Model и View матриц делать предварительный offset позиций на позицию камеры. То есть View камеры будет как будто в (0,0,0), а позиция других мешей в (позиция меша.xyz - позиция камеры.xyz), но в таком случае при каждом кадре приходится перегенерировать Model матрицы(да и лишние операции усложняют структуру) для каждого меша, а это слишком затратно при их большом количестве.
Есть ли какие-либо хаки, чтобы чтобы устранить проблему, и не прибегать к таким затратным операциям на каждый кадр?
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы