For faster navigation, this Iframe is preloading the Wikiwand page for Z-буферизация.

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

Материал из Википедии — свободной энциклопедии

Данные в Z-буфере

Z-буферизация — в компьютерной трёхмерной графике способ учёта удалённости элемента изображения. Представляет собой один из вариантов решения «проблемы видимости». Очень эффективен и практически не имеет недостатков, если реализуется аппаратно. Программно же существуют другие методы, способные конкурировать с ним: Z-сортировка («алгоритм художника») и двоичное разбиение пространства (BSP), но они также имеют свои достоинства и недостатки. Основной недостаток Z-буферизации состоит в потреблении большого объёма памяти: в работе используется так называемый буфер глубины или Z-буфер.

Z-буфер представляет собой двумерный массив, каждый элемент которого соответствует пикселю на экране. Когда видеокарта рисует пиксель, его удалённость просчитывается и записывается в ячейку Z-буфера. Если пиксели двух рисуемых объектов перекрываются, то их значения глубины сравниваются, и рисуется тот, который ближе, а его значение удалённости сохраняется в буфер. Получаемое при этом графическое изображение носит название z-depth карта, представляющая собой полутоновое графическое изображение, каждый пиксель которого может принимать до 256 значений серого. По ним определяется удалённость от зрителя того или иного объекта трехмерной сцены. Карта широко применяется в постобработке для придания объёмности и реалистичности и создаёт такие эффекты, как глубина резкости, атмосферная дымка и т. д. Также карта используется в 3д-пакетах для текстурирования, делая поверхность рельефной.

  • Примеры карт

Ниже представлен результат использования двух карт вместе. Здесь вторая карта снята из сцены, в которой первая выступила в качестве текстуры, выдавливающей поверхность.

Карта 1 Карта 2 Результат

Разрядность буфера глубины оказывает сильное влияние на качество визуализации: использование 16-битного буфера может привести к геометрическим искажениям, например, эффекту «борьбы», если два объекта находятся близко друг к другу. 24, 32-разрядные буферы хорошо справляются со своей задачей. 8-битные почти никогда не используются из-за низкой точности.

Обычно изобретателем z-буфера считают Эдвина Катмулла, хотя эту идею описал ещё Вольфганг Штрассер в своей диссертации (1974).

В Z-буфере в его классическом виде разрядная сетка буфера недостаточно точна на близких расстояниях. Для решения этой проблемы применяется w-буфер, в котором применяется не удалённость, а обратная ей величина (). Что лучше применять — z-буфер или w-буфер — зависит от программы.

На современных видеоадаптерах работа с z-буфером отнимает немалую часть пропускной способности ОЗУ видеоадаптера. Для борьбы с этим применяют сжатие без потерь: сжатие/восстановление отнимает меньше ресурсов, чем обращение к памяти.

В начале кадра происходит заполнение буфера некоторым числом (например, числом 1,0). Это также отнимает некоторую долю машинного времени, поэтому часто поступают так: первый кадр буферизация настраивается так, чтобы глубина ближних объектов была 0,0, а дальних — 0,5. Второй кадр — от 1,0 до 0,5. Это снижает точность на 1 бит, но позволяет избавиться от очистки буфера.

Z-буфер и сортировка

[править | править код]

Хотя Z-буфер предназначен именно для того, чтобы обойтись без сортировки видимых граней, скорость работы Z-буфера серьёзно зависит от сортировки объектов. Потому движок должен хотя бы приблизительно отсортировать объекты от дальних к ближним.

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

Решаются Z-конфликты сдвигом одного объекта относительно другого на величину, превышающую погрешность Z-буфера.

Z-конфликты


В статье не хватает ссылок на источники (см. рекомендации по поиску). Информация должна быть проверяема, иначе она может быть удалена. Вы можете отредактировать статью, добавив ссылки на авторитетные источники в виде сносок. (6 декабря 2023)
{{bottomLinkPreText}} {{bottomLinkText}}
Z-буферизация
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?