Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты
к Руководству

Light.layerShadowCullDistances

public float[] layerShadowCullDistances;

Описание

Расстояния отбраковки теней для каждого источника света и слоя. Только направленный свет.

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

Использование Light.layerShadowCullDistances позволяет ограничить для каждого слоя максимальное расстояние от камеры, отбрасывающее тени, до того, как они будут исключены из карт теней. поколение. Эта функция дополняет Camera.layerCullDistances, но влияет только на отбрасывание теней, а не на обычный рендеринг объектов.

Точно так же, как Camera.layerCullDistances, Light.layerShadowCullDistances требует назначения массива с плавающей запятой ровно из 32 ценности. Расстояние 0 в индексе слоя означает сохранение текущего поведения для этого слоя. Присвоение значения null полностью отключает отбраковку расстояния между тенями и фактически равносильно передаче массива из 32 нулей.

По умолчанию отсечение теней для каждого слоя использует плоскость, выровненную с камерой. Вы можете изменить это на сферу, установив для параметра Camera.layerCullSpherical значение true. Действие этого флага одинаково для Camera.layerCullDistances и Light.layerShadowCullDistances.

Обратите внимание, что когда вы ограничиваете расстояние отбраковки камеры с помощью Camera.layerCullDistances, это также ограничивает отбрасывание теней теми же расстояниями отбраковки. В результате, если вы используете Camera.layerCullDistances и Light.layerShadowCullDistances одновременно *для одного и того же индекс слоя*, эффективное расстояние отбраковки теней для этого слоя будет наименьшим из этих двух расстояний. Для индексов слоев, где одно из значений равно нулю, другое значение используется напрямую, а для индексов слоев, где оба значения равны нулю, к этому слою не применяется никакое специальное поведение отбраковки.

Работает только с направленными источниками света.

Смотрите так же: Camera.layerCullDistances, Camera.layerCullSpherical

using UnityEngine; [RequireComponent(typeof(Light))] public class LayerShadowCullDistancesExample : MonoBehaviour { void OnEnable() { // Настройка дистанций теневой отбраковки var shadowCullDistances = new float[32]; shadowCullDistances[10] = 5f; // Let's imagine this is our 'Tiny Objects' layer shadowCullDistances[11] = 15f; // Let's imagine this is our 'Small Things' layer shadowCullDistances[12] = 100f; // Let's imagine this is our 'Trees' layer // Assign shadow cull distances. This will only affect layers 10, 11 and 12. GetComponent<Light>().layerShadowCullDistances = shadowCullDistances; } void OnDisable() { // Полностью отключить дистанции отбраковки теней GetComponent<Light>().layerShadowCullDistances = null; } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3