V
V
Vitaly Stolyarov2015-12-28 18:43:01
OpenGL
Vitaly Stolyarov, 2015-12-28 18:43:01

How to get rid of float precision loss in opengl?

При попытке смоделировать 3D планету с различными уровнями детализации получаю следующее:
сфера радиусом 6700 единиц, естественно, разделена по quadTree, хотя не суть важно. Таким образом, поверхность земли находится примерно на расстоянии 6700 от центра СК, и чем ближе камера приближена к поверхности, тем больше "трясутся" вершины, что вызвано потерей точности при построении матрицы MVP, так как позиция камеры и объектов основаны на больших значениях.
Чтобы избежать этого, пробовал перед генерацией Model и View матриц делать предварительный offset позиций на позицию камеры. То есть View камеры будет как будто в (0,0,0), а позиция других мешей в (позиция меша.xyz - позиция камеры.xyz), но в таком случае при каждом кадре приходится перегенерировать Model матрицы(да и лишние операции усложняют структуру) для каждого меша, а это слишком затратно при их большом количестве.
Есть ли какие-либо хаки, чтобы чтобы устранить проблему, и не прибегать к таким затратным операциям на каждый кадр?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
Maxim Moseychuk, 2015-12-29
@fshp

Use double.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question