Такой подход опирается гга когерентность в объектном пространстве и позволяет легко отбросить основную часть невидимых граней.

Для облегчения проверки грани на скрытость можно использовать 2-пирамиду. Ее нижним уровнем является сам г-буфер. Для построения следующего уровня пикселы объединяются в группы по 4 (2x2) и из их глубин выбирается наибольшая. Таким образом, следующий уровень оказывается тоже буфером, но его размер уже

Удаление невидимых линий и поверхностей

10. Удаление невидимых линий и поверхностей будет меньше исходного в 2 раза по каждому измерению. Аналогично строятся и остальные уровни пирамиды до тех пор, пока мы не придем к уровню, состоящему из единственного пиксела, являющегося вершиной 2-пирамиды (рис. 10.26).

Первым шагом проверки грани на скрытость будет сравнение ее минимальной глубины со значением в вершине 2-пирамиды. Если минимальная глубина грани оказывается больше, то грань скрыта. В противном случае грань разбивается на 4 части и сравнение производится на следующем уровне пирамиды. Если ни на одном из промежуточных уровней скрытость грани установить гге удалось, то осуществляется переход к последнему уровню, на котором грань растеризуется, и производится попиксельное сравнение с ^-буфером. Наиболее простой является проверка на вершине пирамиды, наиболее трудоемкой - проверка в ее основании.

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

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

При использовании перспективного проектирования значения глубины, соответствующие пикселам одной грани, изменяются уже нелинейно, в то же время величина \/г изменяется линейно и поэтому возникает понятие и'-буфера, в котором вместо величины 2 хранится изменяющаяся линейно величина 1/2.


⇐ Предыдущая| |Следующая ⇒