|
|
![]() |
#1 |
Местный
Регистрация: 18.01.2012
Сообщений: 814
|
![]()
Тестовая версия 2.1.2.7
Добавление ReversedZ тестирования буфера глубины. Линк на обновление как обычно в первых постах темы Довольно передовая техника повышения точности буфера глубины (по меркам OpenGL конечно. Появилась в районе 2012 года). Из-за архитектурных особенностей OpenGL проигрывает точности буфера глубины DirectX. Даже при переходе с 24 битного Z-буфера на 32 float Z-буфер OpenGL точность выполнения тестирования не возрастает (в отличие от DX). Это является одной из причин склонности к проявлениям мерцания дальних объектов в OpenGL. Заметно повысить точность расчётов позволяет методика обратного буфера глубины с изменённым диапазоном. Для реализации этого требуется поддержка OpenGL 4.5 или поддержка расширения "GL_ARB_clip_control". В этом случае становится возможным включить данную технику параметром UseReversedZ=1 (в файле conf.ini, секция [Render_OpenGL]. Параметр автоматически добавится после первого запуска) Особенно замечу, что включение данной техники становится возможным при поддержке оборудования. Если ваше оборудование не поддерживает эту возможность, то параметр UseReversedZ=1 будет проигнорирован, и вам будет доступен только параметр переключения с 24 на 32 битный Z-буфер. Теперь для буфера глубины в конфиге присутствует два (новых) параметра Use32bitZBuffer и UseReversedZ Их комбинации позволяет выбрать 1 из 4 доступных режима: Use32bitZBuffer=0 + UseReversedZ=0 Стандартный 24 битный int Z-буфер Use32bitZBuffer=1 + UseReversedZ=0 Стандартный 32 битный float Z-буфер Use32bitZBuffer=0 + UseReversedZ=1 Обратный 24 битный int Z-буфер Use32bitZBuffer=1 + UseReversedZ=1 Обратный 32 битный float Z-буфер Из-за особенностей OpеnGL, только Обратный 32 битный Z-буфер демонстрирует заметно лучшую точность. Комбинации Стандартный 32 и Обратный 24 ничем особо заметным от классического Стандартный 24 в лучшую сторону не отличаются. Небольшим огорчением является то, что данные техники могут потребовать дополнительной настройки под каждый используемый вариант. Сейчас объясню, что я имею ввиду... В конфиге также присутствуют два параметра PolygonOffsetFactor и PolygonOffsetUnits Их правильная настройка также СУЩЕСТВЕННО сказывается на мерцинии дальних объектов. При некорректной настройке этих параметров мерцать могут объекты расположенные очень близко к камере игрока. Поэтому корректные настройки этих значений очень важны. Жаль, но числовые значения этих параметров отличаются для каждой из комбинаций буфера глубины и выбранных методик тестирования Для начала я приведу значения которые могут считаться стартовыми. Эти значения вы можете проверить на своём оборудовании. Но не забудьте сделать резервные копии файла conf.ini на всякий случай! ;Это дефолт. Можно использовать как базовые значения ;24 и 32 битные стандартные Z-буфера PolygonOffsetFactor=-0.0625 PolygonOffsetUnits=-1.0 ;24 бит ReversedZ PolygonOffsetFactor=0.0625 PolygonOffsetUnits=1.0 ;32 бит ReversedZ PolygonOffsetFactor=0.0 PolygonOffsetUnits=1.0 Подбор корректных параметров для каждой комбинации техник возможно займёт какое-то время. В следующем посте я опишу технологию подбора данных значений и их проверка в игре. Последний раз редактировалось yt2; 15.05.2023 в 21:29. |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|