← All posts tagged glossary

Osman

Довольно часто возникает задача вывести части грани поверх ранее выведенной всей грани или же повторного вывода всей грани с другими параметрами (например, вершинной программой).
При этом возможно неприятное смешивание или мерцание на месте стыка.

Данное явление называется z-fighting и связано как с погрешностями численных вычислений с плавающей точкой (в случае использования вершинных программ), так и с погрешностями при растеризации примитивов.

Дело в том, что хотя, с математической точки зрения, выводимая повторно грань и лежит в той же плоскости, что и исходная, но в силу численных погрешностей может оказаться, что на лежит в слегка отличающейся плоскости, что может привести к тому, что значения глубины для ее пикселов будут отличаться от соответствующих значений для ранее выведенной грани.

Кроме того, поскольку для вывода грани (и, соответственно, вычисления глубины) используются растровые (инкрементальные) алгоритмы, то мы также можем получить другие значения для пикселов при выводи части грани, чем для соответствующий пикселов всей исходной грани.