On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Z-буферизация

Z-буферизация (z-buffering) - самый надежный метод  удаления скрытых поверх-
ностей. Z-буфер - область видеопамяти, в которой для каждого пиксела хранит-
ся значение глубины. Когда рендерится новый пиксел, его глубина сравнивается
со значением, хранимом в z-буфере,  точнее с глубиной уже срендеренного пик-
села с теми же x и y координатами.  Если новый пиксел имеет значение глубины
выше значения в z-буфере, это значит что новый пиксел невидим, и он не запи-
сывается во фрейм-буфер, если ниже - то записывается.  Z-буфер обычно распо-
ложен во фреймбуфере,  поэтому при отключении аппаратной z-буферизации место
под z-буфер освобождается,  что позволяет 3D-ускорителю работать в более вы-
соких разрешениях.  Ради получения этих высоких разрешений  некоторые игры с
несложной графикой используют не Z-буферизацию,  а более простые методы уда-
ления скрытых поверхностей. Тем не менее отключение z-буферизации может при-
водить к артефакту, известному как z-алиасинг.

Главный аттрибут z-буфера - разрещающая способность.  Она критична для высо-
кокачественного рендеринга сцен  с большой глубиной.  Чем  выше  разрешающая
способность,  тем выше  дискретность z-координат и точнее выполняется ренде-
ринг удаленных объектов.  24-разрядный  z-буфер дает разрешающую способность
16 млн, 32-разрядный - 2 млрд, а 16-разрядный - только 64 тыс. Если при рен-
деринге разрешающей способности не хватает, то может случиться,  что 2 пере-
крывающихся объекта получат одну и ту же z-координату,  в результате аппара-
тура не будет знать  какой объект ближе к наблюдателю,  что опять же ведет к
z-алиасингу.

При использовании z-буферизации надо позабититься о том,  чтобы глубины были
корректны с точки зрения перспективы.  Допустим,  ускоритель  рендерит треу-
гольник с заданными z-координатами  трех его вершин.  Он  должен  рассчитать
z-координаты для всех точек, лежащих внутри треугольника. Если их просто ин-
терполировать, то результат получится некорректным с точки зрения перспекти-
вы, поэтому их надо корректировать.  Hо современные 3D-ускорители используют
технику, называемую w-буфером.  W-координата - величина  с плавающей точкой,
обратная  к z-координате.  Всем  вершинам  ставятся  в  соответствие  именно
w-координаты, которые можно интерполировать без перспективной коррекции.
Назад       Содержание