Unity использует технику, называемую отображением теней, для визуализации теней в реальном времени.
Как работает карта теней
При отображении теней используются текстуры, называемые картами теней. Карты теней похожи на текстуры глубины. Источник света создает карту теней так же, как КамераКомпонент, который создает изображение определенной точки обзора в вашей сцене. . Вывод либо рисуется на экране, либо фиксируется в виде текстуры. Подробнее
См. в Словарь создает текстуру глубины. Если вы представляете Камеру в том же месте, что и Свет, области СценыСцена содержат среду и меню вашего игра. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
Увидеть в Словарь, что Камера не может видеть те же области Сцены, которые лучи от Света не могут достичь; поэтому они находятся в тени.
Unity заполняет карту теней информацией о том, как далеко проходят лучи от Света, прежде чем они достигнут поверхности, а затем делает выборку карты теней для расчета теней в реальном времени для GameObjectsОсновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
Посмотрите в Словарь, что Свет поражает.
Дополнительную информацию о отображении теней см. на странице Википедии, посвященной отображению теней.
Разрешение карты теней
Чтобы рассчитать разрешение карты теней, Unity:
Определяет область экрана, которую может освещать источник света. Для направленного освещения может быть освещен весь экран. Для точечных источников света и точечных источников света площадь — это проекция на экран формы распространения света: сфера для точечных источников света или конус для точечных источников света. Спроецированная форма имеет ширину и высоту в пикселях на экране; затем берется большее из этих двух значений. Это значение называется пикселемсвета. Наименьшая единица компьютерного изображения. Размер пикселя зависит от разрешения вашего экрана. Пиксельное освещение рассчитывается для каждого пикселя экрана. Подробнее
Посмотреть в размере Словарь.- Определяет множитель качества тени. Unity использует для этого параметр Shadow Resolution, который устанавливается в окне Quality Settings). Настройки качества соответствуют следующим значениям:
- Very High: 1.0
- High: 0.5
- Medium: 0.25
- Low: 0.125
Выполняет следующие вычисления, а затем фиксирует результат до максимального размера:
Тип освещения: | Формула: | Максимальное разрешение в пикселях: |
---|---|---|
Directional | NextPowerOfTwo (pixel size * shadow quality multiplier * 3.8) | 4096 x 4096, если разрешение теней имеет значение «Очень высокое качество» и/или если у графического процессора 512 МБ или более ОЗУ, 2048 x 2048 в противном случае. |
Spot Lights | NextPowerOfTwo (pixel size * shadow quality multiplier * 2.0) | 2048 x 2048, если у графического процессора 512 МБ или более ОЗУ, 1024 x 1024 в противном случае. |
Point Lights | NextPowerOfTwo (pixel size * shadow quality multiplier * 1.0) | 1024 x 1024, если у графического процессора 512 МБ или более ОЗУ, 512 x 512 в противном случае. |
У точечных источников света меньше ограничений по размеру, чем у других типов, поскольку они используют кубические карты для теней. Это означает, что шесть cubemapнабор шести квадратных текстур, которые могут представлять отражения в окружающей среде или скайбокс, нарисованный позади вашей геометрии. Шесть квадратов образуют грани воображаемого куба, окружающего объект; каждая грань представляет вид по направлениям мировых осей (вверх, вниз, влево, вправо, вперед и назад). Подробнее
Просмотреть в Словарь лица в этом разрешении должны сразу сохраняться в видеопамяти. Их также довольно дорого рендерить, так как потенциальные отбрасыватели теней, возможно, придется визуализировать во всех шести гранях кубической карты.
Переопределение разрешения карты теней
Во встроенном конвейере рендеринга можно задать разрешение карты теней источника света, задав для свойства Light.shadowCustomResolution значение больше 0. Когда это значение больше 0, Unity выполняет следующие вычисления для всех типов освещения:
NextPowerOfTwo (shadowCustomResolution)
Затем фиксируется максимальное разрешение в зависимости от типа освещения и аппаратного обеспечения, как показано в таблице выше.
Обратите внимание, что свойство shadowCustomResolution
поддерживается только во встроенном конвейере рендеринга. Он не поддерживается в конвейере рендеринга высокого разрешения (HDRP) или универсальном конвейере рендеринга (URP).