На этой странице подробно описан отложенный шейдинг путь рендерингаТехника, которую Unity использует для рендеринга графики. Выбор другого пути влияет на производительность вашей игры и на то, как рассчитываются освещение и затенение. Некоторые пути больше подходят для разных платформ и оборудования, чем другие. Подробнее
См. Словарь встроенного конвейера рендеринга Unity. См. Википедия: отложенное затенение для вводного технического обзора отложенного затенения.
Обзор
При использовании отложенного затенения количество источников света, которые могут воздействовать на GameObjectосновной объект в Unity, не ограничено. сцены, которые могут представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь. Все источники света оцениваются попиксельно, что означает, что все они правильно взаимодействуют с картами нормалейТип текстуры карты рельефа, который позволяет чтобы добавить детали поверхности, такие как неровности, канавки и царапины, к модели, которые отражают свет, как если бы они были представлены реальной геометрией. Подробнее
См. в Словарь и т. д. Кроме того, все источники света могут иметь файлы cookie и тени.
Отложенное затенение имеет то преимущество, что затраты на обработку освещения пропорциональны количеству пикселейнаименьшей единицы в компьютере. изображение. Размер пикселя зависит от разрешения вашего экрана. Пиксельное освещение рассчитывается для каждого пикселя экрана. Подробнее
Посмотрите в Словарь, как светит свет. Это определяется размером светового объема в СценеСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
Просмотр в Словарь независимо от того, сколько игровых объектов он освещает. Таким образом, производительность может быть улучшена за счет уменьшения размеров источников света. Отложенное затенение также имеет очень последовательное и предсказуемое поведение. Эффект каждого источника света рассчитывается для каждого пикселя, поэтому вычисления освещения не разбиваются на большие треугольники.
С другой стороны, отложенное затенение не имеет реальной поддержки сглаживания и не может обрабатывать полупрозрачные игровые объекты (они визуализируются с использованием forward рендеринг). Также отсутствует поддержка Meshосновного графического примитива Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в Словарь Флаг получения теней визуализатора и класс маски отбраковкиПозволяют включать или исключать объекты, отображаемые камерой, по слоям.
See in Словарь поддерживаются ограниченно. Вы можете использовать только до четырех масок выбраковки. То есть ваша отбраковка маска слояЗначение, определяющее, какие слои включить или исключить из операции, например рендеринг, столкновение или ваш собственный код. Подробнее
См. в Словарь должен содержать как минимум все слои минус четыре произвольных слоя, поэтому 28 из 32 слоев должны быть установлены. В противном случае вы получите графические артефакты.
Требования
Для этого требуется видеокарта с несколькими целями рендеринга (MRT), Shaderпрограмма, работающая на GPU. Подробнее
См. в Словарь Model 3.0 (или новее) и поддержку для глубины текстуры рендерингаСпециальный тип текстуры, который создается и обновляется во время выполнения. Чтобы использовать их, сначала создайте новую текстуру рендеринга и назначьте одну из ваших камер для рендеринга в нее. Затем вы можете использовать Render Texture в материале, как обычную текстуру. Подробнее
См. в Словарь. Большинство видеокарт для ПК, выпущенных после 2006 года, начиная с GeForce 8xxx, Radeon X2400 и Intel G45, поддерживают отложенное затенение.
На мобильных устройствах отложенное затенение поддерживается на всех устройствах под управлением OpenGL ES не ниже 3.0.
Примечание. Отложенный рендерингпроцесс вывода графики на экран (или текстуры рендеринга). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
See in Словарь не поддерживается при использовании ортогональной проекции. Если КамераКомпонент, который создает изображение определенной точки обзора в вашей сцене. Вывод либо рисуется на экране, либо фиксируется в виде текстуры. Подробнее
See in Словарь установлен режим проекции Орфографический, камера отступает для прямого рендеринга.
Вопросы производительности
Стоимость рендеринга источников света в реальном времени при отложенном затенении пропорциональна количеству пикселей, освещенных источником света, и не зависит от сложности сцены. Таким образом, маленькие точечные или прожекторные источники света очень дешевы в рендеринге, а если они полностью или частично перекрыты игровыми объектами сцены, то они еще дешевле.
Конечно, освещение с тенями намного дороже, чем освещение без теней. При отложенном затенении игровые объекты, отбрасывающие тень, по-прежнему необходимо визуализировать один или несколько раз для каждого источника света, отбрасывающего тень. Кроме того, шейдер освещения, применяющий тени, имеет более высокие накладные расходы на рендеринг, чем тот, который используется, когда тени отключены.
Детали реализации
Объекты с шейдерами, которые не поддерживают отложенное затенение, визуализируются после завершения отложенного затенения с использованием упреждающего рендерингаПуть рендеринга, при котором каждый объект визуализируется за один или несколько проходов, в зависимости от освещения, воздействующего на объект. Сами источники света также обрабатываются Forward Rendering по-разному, в зависимости от их настроек и интенсивности. Подробнее
См. в пути Словарь.
Схема целей рендеринга по умолчанию (RT0–RT4) в G-буфере указана ниже. Типы данных размещаются в различных каналах каждой цели рендеринга. Используемые каналы указаны в скобках.
- Формат RT0, ARGB32: диффузный цвет (RGB), окклюзия (A).
- Формат RT1, ARGB32: Цвет отраженияЦвет отражения.
См. в Словарь (RGB), шероховатость (A). - Формат RT2, ARGB2101010: обычное мировое пространство (RGB), не используется (A).
- Формат RT3, ARGB2101010 (не HDR) или ARGBHalf (HDR): излучение + освещение + карты освещенияпредварительно обработанный Текстура, содержащая эффекты источников света на статических объектах сцены. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
См. в Словарь + датчики отраженияКомпонент рендеринга, который захватывает сферическое изображение своего окружения во всех направлениях, подобно камере. Захваченное изображение затем сохраняется как кубическая карта, которую можно использовать для объектов с отражающими материалами. Подробнее
См. в буфере Словарь. - Глубина+Буфер трафаретаХранилище памяти, в котором хранится 8-битное значение для каждого пикселя. В Unity вы можете использовать буфер трафарета, чтобы отметить пиксели, а затем выполнить рендеринг только для тех пикселей, которые прошли операцию трафарета. Подробнее
См. в Словарь.
Поэтому формат G-буфера по умолчанию составляет 160 бит/пиксель (без HDR) или 192 бит/пиксель (HDR).
При использовании режимов Shadowmask или Distance Shadowmask для Смешанного освещения, пятая цель используется:
- Формат RT4, ARGB32: значения затенения света (RGBA).
Таким образом, макет G-буфера составляет 192 бита на пиксель (без HDR) или 224 бита на пиксель (HDR).
Если оборудование не поддерживает пять одновременных целей рендеринга, объекты, использующие теневые маски, будут возвращаться к прямому пути рендеринга.
Буфер излучения + освещения (RT3) логарифмически закодирован для обеспечения большего динамического диапазона, чем это обычно возможно с текстурой ARGB32, когда камера не использует HDRширокий динамический диапазон
См. в Словарь.
Обратите внимание, что когда камера использует рендеринг HDR, не создается отдельная цель рендеринга для буфера Emission+lighting (RT3); вместо этого в качестве RT3 используется цель рендеринга, в которую визуализирует камера (то есть та, которая передается эффектам изображения).
Пропуск G-буфера
Проход G-буфера визуализирует каждый GameObject один раз. Рассеянные и зеркальные цвета, гладкость поверхности, нормаль к мировому пространству, а также эмиссия+окружающая среда+отражения+карты освещения визуализируются в текстуры G-буфера. Текстуры G-буфера настраиваются как глобальные свойства шейдера для последующего доступа к ним шейдеров (CameraGBufferTexture0 .. CameraGBufferTexture3 имена).
Проход освещения
Проход освещения вычисляет освещение на основе G-буфера и глубины. Освещение рассчитывается в пространстве экрана, поэтому время, необходимое для обработки, не зависит от сложности сцены. Освещение добавляется в буфер излучения.
Точечные и прожекторные источники света, которые не пересекают ближнюю плоскость камеры, визуализируются как 3D-формы с включенным тестом Z-буфера относительно сцены. Это делает частично или полностью закрытые Point Lights и Spot Lights очень дешевыми для рендеринга. Направленные источники света и точечные или точечные источники света, пересекающие ближнюю плоскость, визуализируются как полноэкранные квадратыпримитивный объект, напоминающий плоскость, но с краями. имеет длину всего одну единицу, использует только 4 вершины, а поверхность ориентирована в плоскости XY локального координатного пространства. Подробнее
См. в Словарь.
Если для источника света включены тени, они также визуализируются и применяются в этом проходе. Обратите внимание, что тени не приходят «бесплатно»; необходимо отобразить отбрасывающие тени и применить более сложный шейдер освещения.
Единственной доступной моделью освещения является Standard. Если нужна другая модель, вы можете изменить шейдер передачи освещения, разместив измененную версию файла Internal-DeferredShading.shader из Встроенные шейдеры в папку «Ресурсы» в папке «Активы». Затем откройте настройки Графика (меню: Правка > Настройки проекта, затем выберите категорию «Графика»). Измените раскрывающийся список «Отложенный» на «Пользовательский шейдер». Затем измените отображаемый параметр Shader на используемый вами шейдер.
Режимы освещения (ShadowmaskТекстура с одинаковым UV макет и разрешение с соответствующей картой освещения. Подробнее
См. в Словарь и Маска теней на расстоянииВариант режима освещения Маска теней, который включает высококачественные тени, отбрасываемые от статических игровых объектов на динамические игровые объекты. Подробнее
См. Словарь), добавленный в версии 5.6