От примитива к фрагменту
После преобразования вершин треугольники оказываются в координатах камеры, проходят отсечение и проекцию на экран. Растеризатор определяет покрытие выборок и интерполирует значения между вершинами. Получившийся фрагмент ещё не обязательно станет видимым пикселем: его могут отбросить тест глубины, stencil, прозрачность или последующая обработка. Поэтому число обработанных фрагментов иногда существенно превышает число пикселей итогового изображения.
Буфер глубины позволяет сравнивать расстояния до поверхностей и оставлять ближайшую. Для непрозрачной геометрии это удобная основа видимости. Для полупрозрачных слоёв порядок смешивания сложнее: одного ближайшего значения глубины обычно недостаточно, чтобы описать стекло, дым и несколько пересекающихся прозрачных поверхностей.
Версия и обработка изображения
Blender Manual 3.5 — архив документации от 23.02.2023; точная версия интерфейса отдельных кадров не указана. Преобразование в WebP без потерь; исходные размеры сохранены; без кадрирования, дорисовки и удаления подписей. Все авторы и источники.
Где появляется освещение
Шейдер поверхности получает нормаль, материал, координаты и сведения об источниках. Он может вычислять PBR-отклик, читать карты теней, отражения из окружения или заранее рассчитанное непрямое освещение. Эти операции не являются встроенным «реализмом растеризации». Они представляют отдельные решения разработчика конвейера, каждое со своим бюджетом времени и памяти.
Например, shadow map строится из положения источника света и отвечает за видимость относительно него. Она требует собственной камеры, разрешения и правил фильтрации. Растеризация основного вида не создаёт тени автоматически и не заменяет расчёт взаимного отражения света между стенами.
Почему метод подходит для интерактива
Проекция крупных групп примитивов и параллельная обработка фрагментов хорошо соответствуют устройству графических процессоров. Разработчик может управлять уровнем детализации, отсекать невидимое и упрощать удалённые материалы. Однако обещание высокой скорости без сцены бессодержательно: прозрачность, сложные шейдеры, многочисленные проходы и лишний overdraw способны сделать растеризатор дорогим.
В отличие от офлайн-кадра, интерактивное приложение должно регулярно отдавать новый результат. Поэтому предсказуемость стоимости и наличие режимов качества часто важнее максимальной точности одного отдельного эффекта.
Границы изображения на экране
Screen-space отражения видят только доступную экранную информацию. Отражённый объект может исчезнуть у края кадра, хотя физически он остаётся в сцене. Это ограничение конкретного приёма отражений, а не доказательство, что любые растеризованные отражения неполноценны. Можно применять planar reflections, cubemaps, отдельные виды или трассировку лучей.
Гибридный конвейер использует растеризацию для основной видимости и лучи для выбранных задач. Такой подход сохраняет сильные стороны обоих методов; переключение одного эффекта на RT не превращает весь кадр в path tracing.
Практическая проверка
Для учебного опыта зафиксируйте камеру и материал, затем отдельно отключайте тени, отражения, GI и постобработку. Так видно, какая система формирует конкретный признак изображения. Меняйте разрешение и наблюдайте, как меняются края и мелкие детали, не принимая сглаживание за повышение геометрической точности.
Для производительности полезнее искать дорогой проход через profiler, чем считать полигоны без контекста. Если кадр ограничен пиксельным shading, уменьшение геометрии может почти ничего не дать; если затраты приходятся на прозрачный overdraw, сначала пересмотрите слои и их площадь.
Отдельно сравните непрозрачную стену и несколько полупрозрачных плоскостей одинакового экранного размера. У них близкое количество треугольников, но различная стоимость видимых слоёв и смешивания. Этот опыт показывает, почему полигональный бюджет нельзя использовать как единственную меру сложности. Для маленького мобильного экрана также проверьте фактическое разрешение рендера: плотность пикселей устройства может незаметно увеличить работу, если приложение рисует каждый физический пиксель без ограничения.