Что за баг: Z-файтинг

Во время игры вы могли заметить, как текстуры на объекте визуально перебивают друг друга, появляется мерцание и рябь. Этот баг называется Z-файтинг (Z-fighting).

Embedded Image

Когда приходит время отрисовывать игровую сцену, движок разбивает её на треугольники. Какие-то треугольники получаются ближе к игровой камере, какие-то дальше. После этого движок отправляет их для рендера в GPU — графический процессор.

Чтобы отрендерить сцену, GPU определяет количество треугольников в пикселе. Потом он вычисляет координаты каждого треугольника и попиксельно рисует их, применяя необходимые материалы и эффекты. Если треугольников в пикселе несколько, процессор уточняет, какой из них ближе к камере и прорисовывает ближайший.

Но бывает так, что у нескольких треугольников значения близости к камере практически одинаковы. Из-за округления при сохранении этих значений процессор не может точно определить, какой треугольник ближе к камере, и прорисовывает оба, из-за чего появляется Z-файтинг.

Комментарии: 0