Одним из самых простых алгоритмов удаления невидимых граней и поверхностей является метод г-буфера (буфера глубины), где для каждого пиксела, как и в методе трассировки лучей, находится грань, ближайшая к нему вдоль направления проектирования, однако здесь циклы по пикселам и по объектам меняются местами.

for all objects
for all covered pixels compare z

Поставим в соответствие каждому пикселу (л\ у) картинной плоскости, кроме цвета с(х, у), хранящегося в видеопамяти, его расстояние до картинной плоскости вдоль направления проектирования z(x, у) (его глубину).

Массив глубин инициализируется +°°.

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

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

Грань рисуется последовательно строка за строкой; для нахождения необходимых значений используется линейная интерполяция.

Фактически метод г-буфера осуществляет поразрядную сортировку по х и у, а затем сортировку по г, требуя всего одного сравнения для каждого пиксела каждой грани.

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

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

Современные графические ускорители несут в себе аппаратную реализацию г-буфера, включая также и аппаратную растеризацию граней вместе с закрашиванием.


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