LerpworksAcademy
На этой странице

Графика › Кадр

Буфер глубины: кто ближе к камере

Нужно знать заранее: Шейдер: функция для каждого пикселя, Пространства: где находится точка

Видеокарта рисует треугольники по одному и в том порядке, в каком их прислал движок. Как она понимает, что стена закрывает дерево, а не наоборот? Разберём буфер глубины: как он решает это для каждого пикселя, почему глубина хранится неравномерно и откуда мерцание совпавших поверхностей. А ещё — как ранняя проверка экономит работу пиксельного шейдера и как та же глубина, прочитанная в материале, делает мягкую кромку воды. Это третий урок курса «Как движок рисует кадр».

Зачем это

В уроке про шейдер путь треугольника заканчивался строкой «тест глубины: если на этом месте уже нарисовано что-то ближе, результат выбрасывается». За этой строкой стоит механизм, с которым художник окружения сталкивается постоянно, даже если не знает его имени:

  • наклейка на стене или разметка на дороге вдали рябит полосами;
  • дальние горы начинают мерцать, когда камеру научили подходить к стенам вплотную;
  • вода, туман и дым режут землю жёсткой линией там, где её касаются;
  • трава и листва стоят дороже, чем «должны» по числу пикселей;
  • частицы пропадают за стеклом, будто оно сплошное.

Всё это одна тема: как видеокарта решает, что ближе к камере, и что ещё умеет глубина.

Дальше в статье

  1. Алгоритм художника
  2. Буфер глубины: решать по пикселю
  3. Что лежит в буфере: не метры
  4. Точность и мерцание
  5. Мерцание совпавших поверхностей
  6. Ранняя проверка: не красить невидимое
  7. Глубина как текстура
  8. Где ломается
  9. Связи: та же идея в других областях
  10. Главное
  11. Проверь себя