£гатеВи££ (х, у) = ЬаскдпсіСоїог.
2. Обработать по одному все многоугольники сцены.
• Для каждого положения пикселя (х,у), в которое проектируется многоугольник, вычислить глубину 2 (если она неизвестна).
• Если 2 < с1ер1;ЬВи££ (х, у), вычислить цвет поверхности в этой точке и положить сІер1:1,іВи££ (х, у) = г,
£гатеВи££ (х, у) = эиг£Со1ог (х, у).
После обработки всех поверхностей буфер глубины содержит значения глубин для видимых поверхностей, а буфер кадров - соответствующие коды цвета для этих поверхностей.
Для многоугольных поверхностей метод буфера глубины очень легко реализовать, не сортируя поверхности сцены. В то же время, он требует наличия второго буфера в дополнение к буферу регенерации. Система с разрешением 1280 на 1024, например, потребует свыше 1,3 миллионов позиций в буфере глубины, причем каждая позиция должна содержать достаточное число битов для представления необходимого разрешения по глубине. Один путь снижения требований к памяти - обрабатывать по одному сегменту на сцене, используя меньший буфер глубины. После завершения обработки наблюдаемого участка буфер повторно используется для обработки следующего участка.
Кроме того, стандартный алгоритм буфера глубины часто выполняет ненужные вычисления. Поскольку объекты обрабатываются в произвольном порядке, может вычисляться цвет точки поверхности, которая позднее окажется невидимой. Чтобы свести эту проблему к минимуму, некоторые графические пакеты позволяют пользователю выравнивать диапазон глубин перед проверкой поверхностей. Это дает возможность, например, исключать из проверок глубин удаленные объекты. Используя это, можно даже исключить объекты, расположенные очень близко к плоскости проекции. В заключение отметим, что в сложных системах компьютерной графики алгоритм буфера глубины обычно реализован на аппаратном уровне.
МЕТОД А-БУФЕРА
Расширением метода буфера глубины является процедура A-буфера (в названии использована противоположная от 2 буква алфавита, а выше говорилось, что 2 представляет глубину). Данное расширение - это метод с защитой от наложения, усреднением по области и выявлением видимых поверхностей, разработанный Lucasfilm Studios для системы визуализации поверхностей REYES (“lenders Everything УЪи Ever Saw” - “Визуализирует все, что вы видите”). Область буфера для данной процедуры называется буфером накопления, поскольку в ней в дополнение к значениям глубин хранятся различные данные о поверхности.
Рис. 9.8. Для наблюдения непрозрачной поверхности через прозрачную следует ввести несколько цветов и смешать их
Рис. 9.9. Два возможных представления информации о поверхности для пикселя в А-буфере. Если в пиксель проектируется одна поверхность, глубина, цвет и другая информация, касающаяся ее, записывается так, как показано на панели а. Если на пиксель накладывается несколько поверхностей, соответствующий список данных записывается так, как показано на панели 6