На этой странице подробно описывается устаревший отложенный (легкий предварительный проход) путь рендерингаТехника Unity использует для рендеринга графики. Выбор другого пути влияет на производительность вашей игры и на то, как рассчитываются освещение и затенение. Некоторые пути больше подходят для разных платформ и оборудования, чем другие. Подробнее
См. Словарь встроенного конвейера рендеринга Unity. Технический обзор отложенного освещения см. в этой статье.
Примечание. В прежних версиях отложен рендерингпроцесс вывода графики на экран (или текстуру рендера). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
See in Словарь считается устаревшей функцией, начиная с Unity 5.0, так как он не поддерживает некоторые функции рендеринга (например, стандартный шейдер, датчики отражения). В новых проектах следует рассмотреть возможность использования отложенного затененияпути рендеринга во встроенном конвейере рендеринга, который не размещает ограничение на количество источников света, которые могут воздействовать на GameObject. Все источники света оцениваются попиксельно, что означает, что все они корректно взаимодействуют с картами нормалей и так далее. Кроме того, все источники света могут иметь файлы cookie и тени. Подробнее
Смотрите в Словарь путь рендеринга.
ПРИМЕЧАНИЕ. Отложенный рендеринг не поддерживается при использовании ортогональной проекции. Если камераКомпонент, который создает изображение определенной точки обзора в вашей сцене. Вывод либо рисуется на экране, либо фиксируется в виде текстуры. Подробнее
Для See in Словарь установлен Орфографический режим проекции, камера всегда использовать предварительный рендеринг.
Обзор
При использовании отложенного освещения количество источников света, воздействующих на объект, не ограничено. Все источники света оцениваются попиксельно, что означает, что все они правильно взаимодействуют с картами нормалейТип текстуры карты рельефа, который позволяет чтобы добавить детали поверхности, такие как неровности, канавки и царапины, к модели, которые отражают свет, как если бы они были представлены реальной геометрией. Подробнее
См. в Словарь и т. д. Кроме того, все источники света могут иметь файлы cookie и тени.
Отложенное освещение имеет то преимущество, что затраты на обработку освещения пропорциональны количеству пикселейнаименьшей единицы в компьютере. изображение. Размер пикселя зависит от разрешения вашего экрана. Пиксельное освещение рассчитывается для каждого пикселя экрана. Подробнее
Посмотрите в Словарь, как светит свет. Это определяется размером светового объема в сценеСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
Просмотр в Словарь независимо от того, сколько объектов он освещает. Таким образом, производительность может быть улучшена за счет уменьшения размеров источников света. Отложенное освещение также имеет очень последовательное и предсказуемое поведение. Эффект каждого источника света рассчитывается для каждого пикселя, поэтому вычисления освещения не разбиваются на большие треугольники.
С другой стороны, отложенное освещение не имеет реальной поддержки сглаживания и не может обрабатывать полупрозрачные объекты (они будут отображаться с использованием forward рендеринг). Также отсутствует поддержка Meshосновного графического примитива Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в Словарь Флаг получения теней визуализатора и класс маски отбраковкиПозволяют включать или исключать объекты, отображаемые камерой, по слоям.
See in Словарь поддерживаются ограниченно. Вы можете использовать только до четырех масок выбраковки. То есть ваша отбраковка маска слояЗначение, определяющее, какие слои включить или исключить из операции, например рендеринг, столкновение или ваш собственный код. Подробнее
См. в Словарь должен содержать как минимум все слои минус четыре произвольных слоя, поэтому 28 из 32 слоев должны быть установлены. В противном случае вы получите графические артефакты.
Требования
Требуется видеокарта с ShaderПрограмма, работающая на GPU. Подробнее
См. в Словарь Модель 3.0 (или выше), поддержка для текстур рендеринга глубины и двусторонних буферов трафаретаХранилище памяти, которое содержит 8-битное значение на пиксель. В Unity вы можете использовать буфер трафарета, чтобы отметить пиксели, а затем выполнить рендеринг только для тех пикселей, которые прошли операцию трафарета. Подробнее
См. в Словарь.
Большинство видеокарт для ПК, выпущенных после 2004 года, поддерживают отложенное освещение, включая GeForce FX и более поздние версии, Radeon X1300 и более поздние версии.
Intel 965/GMA X3100 и выше. На мобильных устройствах все графические процессоры с поддержкой OpenGL ES 3.0 поддерживают отложенное освещение, а некоторые из
Поддерживающие OpenGL ES 2.0 также поддерживают его (те, которые поддерживают текстуры глубины).
Вопросы производительности
Накладные расходы на рендеринг освещения в реальном временикомпонентов освещения, для свойства Mode которых задано значение Realtime. Unity рассчитывает и обновляет освещение Realtime Lights каждый кадр во время выполнения. Никакие источники света в реальном времени не рассчитываются заранее. Подробнее
См. в Словарь при отложенном освещении пропорциональна количеству пикселей, освещенных света и не зависит от сложности сцены. Таким образом, маленькие точечные или прожекторные источники света очень дешевы в рендеринге, а если они полностью или частично закрыты объектами сцены, то они еще дешевле.
Конечно, освещение с тенями намного дороже, чем освещение без теней. При отложенном освещении объекты, отбрасывающие тень, по-прежнему необходимо визуализировать один или несколько раз для каждого источника света, отбрасывающего тень. Кроме того, шейдер освещения, применяющий тени, имеет более высокие накладные расходы на рендеринг, чем тот, который используется, когда тени отключены.
Детали реализации
При использовании отложенного освещения процесс рендеринга в Unity происходит в три этапа:
- Базовый проход: объекты визуализируются для создания буферов экранного пространства с глубиной, нормалями и силой отражения.
- Проход освещения: ранее сгенерированные буферы используются для вычисления освещения в другом буфере экранного пространства.
- Последний проход: объекты визуализируются снова. Они извлекают рассчитанное освещение, комбинируют его с цветовыми текстурами и добавляют любое окружающее/эмиссионное освещение.
Объекты с шейдерами, которые не могут обрабатывать отложенное освещение, визуализируются после завершения этого процесса с использованием упреждающего рендерингаПуть рендеринга, который рендерит каждый объект за один или несколько проходов, в зависимости от освещения, влияющего на объект. Сами источники света также обрабатываются Forward Rendering по-разному, в зависимости от их настроек и интенсивности. Подробнее
См. в пути Словарь.
Базовый пропуск
Базовый проход визуализирует каждый объект один раз. Нормали пространства обзора и сила отражения визуализируются в один Render TextureA специальный тип текстуры, который создается и обновляется во время выполнения. Чтобы использовать их, сначала создайте новую текстуру рендеринга и назначьте одну из ваших камер для рендеринга в нее. Затем вы можете использовать Render Texture в материале, как обычную текстуру. Подробнее
См. в Словарь (с нормалями в каналах RGB и силой отражения в A). Если платформа и аппаратное обеспечение позволяют считывать Z-буфер как текстуру, то глубина явно не визуализируется. Если доступ к Z-буферу как к текстуре недоступен, глубина визуализируется в дополнительном проходе рендеринга с использованием замены шейдера.
Результатом базового прохода является Z-буфер, заполненный содержимым сцены, и Render Texture с нормалями и силой отражения.
Пропуск освещения
Проход освещения вычисляет освещение на основе глубины, нормалей и силы отражения. Освещение рассчитывается в пространстве экрана, поэтому время, необходимое для обработки, не зависит от сложности сцены. Буфер освещения представляет собой единую текстуру рендеринга ARGB32 с диффузным освещением в каналах RGB и монохромным зеркальным освещением в канале A. Значения освещения кодируются логарифмически, чтобы обеспечить больший динамический диапазон, чем это обычно возможно с текстурой ARGB32. Когда камера имеет HDRширокий динамический диапазон
See in Словарь включен рендеринг, тогда буфер освещения имеет формат ARGBHalf и логарифмический кодирование не выполняется.
Точечные и точечные источники света, которые не пересекают ближнюю плоскость камеры, визуализируются как (передние грани) трехмерных фигур с включенным тестом глубины относительно сцены. Свет, пересекающий ближнюю плоскость, также визуализируется с использованием 3D-фигур, но вместо этого в виде задних граней с инвертированным тестом глубины. Это делает частично или полностью перекрытые источники света очень дешевыми для рендеринга. Если источник света одновременно пересекает и дальнюю, и ближнюю плоскости камеры, описанные выше оптимизации не могут быть использованы, и свет рисуется в виде плотного четырехугольникаПримитивный объект, напоминающий плоскость, но его ребра имеют длину всего одну единицу, он использует только 4 вершины, а поверхность ориентирована в плоскости XY локального координатного пространства. Подробнее
См. в Словарь без проверки глубины.
Вышеизложенное не относится к направленным источникам света, которые всегда отображаются как полноэкранные четырехугольники.
Если для источника света включены тени, они также визуализируются и применяются в этом проходе. Обратите внимание, что тени не приходят «бесплатно»; необходимо отобразить отбрасывающие тени и применить более сложный шейдер освещения.
Единственная доступная модель освещения — Blinn-Phong. Если нужна другая модель, вы можете изменить шейдер передачи освещения, разместив модифицированную версию файла Internal-PrePassLighting.shader из Встроенные шейдеры в папку «Ресурсы» в папке «Активы». Затем перейдите в окно Edit->Project Settings->Graphics. Изменен раскрывающийся список «Устаревшие отложенные» на «Пользовательский шейдер». Затем измените отображаемый параметр Shader на используемый вами шейдер освещения.
Последний проход
Последний проход создает окончательное визуализированное изображение. Здесь все объекты снова визуализируются с помощью шейдеров, которые извлекают освещение, комбинируют его с текстурами и добавляют любое излучающее освещение. Карты освещенияПредварительно визуализированная текстура, содержащая эффекты источников света на статических объектах сцены. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
См. в Словарь также применяются на финальном проходе. Ближе к камере используется освещение в реальном времени, и добавляется только запеченное непрямое освещение. Это переходит в полностью запеченное освещение дальше от камеры.