Version: 2019.4
Rendering paths in the Built-in Render Pipeline
Deferred Shading rendering path

Forward rendering path

This page describes the Forward rendering path in Unity’s Built-in Render Pipeline.

Forward rendering renders each object in one or more passes, depending on lights that affect the object. Lights themselves are also treated differently by Forward Rendering, depending on their settings and intensity.

Детали реализации

In Forward rendering, some number of brightest lights that affect each object are rendered in fully per-pixel lit mode. Then, up to 4 point lights are calculated per-vertex. The other lights are computed as Spherical Harmonics (SH), which is much faster but is only an approximation. Whether a light will be a per-pixel light or not is dependent on this:

  • Источники света всегда считаются повертексными или SH, если значение их свойства Render Mode (режим рендера) установлено в Not Important (не важно).
  • Самый яркий из направленных источников света всегда является попиксельным.
  • Источники света всегда считаются попиксельными, если значение их свойства Render Mode установлено в Important (важно).
  • Если в результате вышеперечисленного, количество источников света будет меньше текущего Pixel Light Count (количества пиксельных источников освещения), указанного в настройках качества, тогда в порядке убывания яркости, попиксельно отрендерится ещё некоторое количество источников света.

Вот как происходит рендеринг каждого объекта

  • Базовый проход применяет один направленный попиксельный источник света и все повертексные/SH источники света.
  • Остальные попиксельные источники света рендерятся в дополнительных проходах, один проход на один источник света.

For example, if there is some object that’s affected by a number of lights (a circle in a picture below, affected by lights A to H):

Предположим, что источники света с A по H имеют одинаковый цвет и интенсивность, и у всех стоит Auto режим рендеринга (св-во Render Mode имеет значение Auto), чтобы для подсвечиваемого объекта все эти источники сортировались в порядке их расположения. Самые яркие источники света будут рендериться в попиксельном режиме (от A до D), далее не более 4 следующих источников - в повертексном режиме (от D до G), и, наконец, остальные - в SH режиме (от G до H):

Учтите, что группы источников света перекрывают друг друга. Например, последний попиксельный источник света переходит в повертексный режим освещения, поэтому будет меньше резких изменений освещения при перемещении объектов и источников света.

Базовый проход

Базовый проход рендерит объект используя один попиксельный направленный источник света и все SH источники. Этот проход также добавляет любые карты освещения, освещение окружения и излучающее освещение от шейдера. Направленный свет, который рендерится в этом проходе, может иметь тени. Учтите, что объекты, к которым применены карты освещения, не получают освещение от SH источников освещения.

Note that when “OnlyDirectional” pass flag is used in the shader, then the forward base pass only renders main directional light, ambient/lightprobe and lightmaps (SH and vertex lights are not included into pass data).

Дополнительные проходы

Каждый действующий на объект попиксельный источник света приводит к рендерингу дополнительных проходов. Источники света в этих проходах не могут иметь теней (в итоге, упреждающий рендеринг поддерживает один направленный источник света с тенями).

Вопросы производительности

Источники освещения на сферических гармониках рендерятся очень быстро. Они потребляют совсем немного CPU ресурсов и вообще не потребляют GPU ресурсов (то есть, в базовом проходе всегда рассчитывается SH освещение, но потребление ресурсов не зависит от количества SH источников света благодаря тому, как они работают).

Недостатки SH источников света:

  • Они рассчитываются не на пикселях, а на вершинах объекта. Значит, они не поддерживают Light Cookies (источники света с cookie текстурами) и карты нормалей.
  • SH освещение очень низкочастотное. У вас не может быть резких переходов освещения при использовании SH источников света. Кроме того, они влияют только на диффузное освещение (частота слишком мала для зеркальных бликов).
  • SH освещение не локально; точечные или прожекторные SH источники света, расположенные близко к некой поверхности будут “выглядеть неправильно”.

Таким образом, SH источники обычно достаточно хороши для небольших динамических объектов.

Rendering paths in the Built-in Render Pipeline
Deferred Shading rendering path