Механика искажений в современных онлайн-играх может работать на основе 2D-рейтрейсинга. 1 Его суть в том, что лучи выпускаются не из источника света, а из каждой точки на экране. 1 Чем больше источников света нашёл пиксель вокруг себя, тем ярче его цвет. 1 Каждому лучу предстоит найти объект, в который он попал, взять его цвет и оценить его влияние на конечный цвет пикселя. 1
Для создания искажений в этом процессе используются несколько этапов: 1
- Подготовка карты расстояний (Distance Map). 1 Нужно заранее посчитать ближайшее расстояние до каждого объекта и записать его в текстуру, из которой потом будет браться смещение для каждого нового шага луча. 1 Это сокращает количество шагов и делает их независимыми от разрешения текстуры. 1
- Искажение лучей с помощью текстуры шума. 1 По умолчанию все лучи выпускаются в одном и том же направлении, из-за чего удалённым участкам сложно обнаружить источник света. 1 Чтобы решить проблему, нужно либо сильно увеличить количество лучей, либо добавить случайный изначальный поворот для каждой точки. 1 Для этого используется текстура шума, которая поворачивает на небольшое значение лучи, исходящие из каждой точки. 1
- Обработка результата. 1 Подбирается разрешение, количество лучей, применяется текстура шума, результат размывается и высветляется (bloom эффект), чтобы сгладить неровности и провалы. 1
Также для снижения влияния искажений в 3D-играх используются различные алгоритмы сглаживания, например, SSAA, MSAA, FXAA, TAA. 4