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

Компонент Light Probe Proxy Volume

Компонент Light Probe Proxy Volume (LPPV) позволяет использовать больше информации об освещении для больших динамических GameObjectsОсновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь
, в котором нельзя использовать запеченный карты освещенияПредварительно визуализированная текстура, содержащая эффекты источников света на статических объектах сцены. Карты освещения накладываются поверх геометрии сцены для создания эффекта освещения. Подробнее
См. в Словарь
(например, большие системы частиц или скелетные сетки).

По умолчанию рендерер с освещением зонда получает освещение от одного Light Probe, который интерполируется между окружающими Light Probes в СценаСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь
. Из-за этого игровые объекты имеют постоянное окружающее освещение по всей поверхности. Это освещение имеет вращательный градиент, потому что использует сферические гармоники, но ему не хватает пространственного градиента. Это более заметно на более крупных игровых объектах или системах частицкомпоненте, который имитирует текучие объекты, такие как жидкости, облака и пламя, путем создания и анимации большое количество небольших 2D-изображений в сцене. Подробнее
См. в Словарь
. Освещение вокруг игрового объекта соответствует освещению в точке привязки, и если игровой объект охватывает градиент освещения, части игрового объекта могут выглядеть неправильно.

Компонент Light Probe Proxy Volume создает трехмерную сетку интерполированных Light Probes внутри Bounding Volume Замкнутая форма, представляющая края и грани коллайдера или триггера. Подробнее
См. в Словарь
. Вы можете указать разрешение этой сетки в UI(пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. Подробнее
См. в Словаре
компонента. Коэффициенты сферических гармоник (SH) интерполированных Light Probes загружаются в 3D-текстуры. 3D-текстуры, содержащие коэффициенты SH, затем сэмплируются во время рендеринга для вычисления вклада в рассеянное окружающее освещение. Это добавляет пространственный градиент к игровым объектам с зондовым освещением.

Эту функцию поддерживает Стандартный шейдер. Чтобы добавить это в пользовательский шейдерпрограмму, работающую на графическом процессоре. Подробнее
См. в Словарь
, используйте ShadeSHPerPixel функция. Чтобы узнать, как реализовать эту функцию, см. пример кода пример шейдера Particle System внизу этой страницы.

Поддержка конвейера рендеринга

См. HDRP и URP документация по совместимости, относящаяся к конвейерам рендеринга с поддержкой сценариев.

Когда использовать компонент

Большинство компонентов средства визуализации в Unity содержат световые зонды. Есть три варианта световых зондов:

  • Выкл.: визуализатор не использует интерполированные световые зонды.

  • Blend Probes (значение по умолчанию): визуализатор использует один интерполированный Light Probe.

  • Использовать прокси-объем: средство визуализации использует трехмерную сетку интерполированных световых зондов.

При установке пробников светапробники света сохраняют информацию о том, как свет проходит через пространство в вашей сцене. Набор световых зондов, расположенных в заданном пространстве, может улучшить освещение движущихся объектов и статических пейзажей LOD в этом пространстве. Подробнее
См. в свойстве Словарь
в MeshОсновной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в компоненте Словарь
Renderer
Использовать объем прокси к GameObject должен быть подключен компонент Light Probe Proxy Volume (LPPV). Вы можете добавить компонент LPPV к тому же игровому объекту или использовать (заимствовать) компонент LPPV из другого игрового объекта с помощью свойства Переопределение прокси-тома. Если Unity не может найти компонент LPPV в текущем GameObject или в Proxy Volume Override GameObject, в нижней части средства визуализации отображается предупреждающее сообщение.

Пример

Пример простого Mesh Renderer с использованием компонента Light Probe Proxy Volume
Пример простого Mesh Renderer с использованием компонента Light Probe Proxy Volume

В приведенной выше сцене на полу есть две плоскости с использованием материалов, излучающих много света. Обратите внимание:

  • рассеянный светСвет, который не исходит ни с какого определенного направления и дает одинаковый свет во всех направлениях к Сцене. Подробнее
    См. в Словарь
    изменения геометрии при использовании компонента LPPV. Используйте один интерполированный световой зонд, чтобы создать постоянный цвет на каждой стороне геометрии.

  • В геометрии не используются статические карты освещения, а сферы представляют собой интерполированные датчики освещения. Они являются частью Gizmo Renderer.

Как использовать компонент

На область, в которой создается трехмерная сетка интерполированных световых зондов, влияет свойство Режим ограничительной рамки.

Доступны три варианта:

Режим ограничивающей рамки: Функция:
Automatic Local (default value) Вычисляется ограничивающая рамка локального пространства. Интерполированные позиции Light Probe генерируются внутри этой ограничивающей рамки. Если компонент Renderer не присоединен к GameObject, создается ограничивающая рамка по умолчанию. Вычисление ограничительной рамки охватывает текущий модуль визуализации и устанавливает для всех модулей визуализации ниже по иерархии, имеющих свойство Light Probes, значение Use Proxy Volume.
Automatic World Вычисляется ограничивающая рамка, которая охватывает текущий модуль визуализации и все модули визуализации ниже по иерархии, у которых для свойства Light Probes установлено значение Использовать прокси-том. Ограничительная рамка выровнена по миру.
Custom Используется настраиваемый ограничивающий прямоугольник. Ограничивающая рамка указывается в локальном пространстве GameObject. Доступны инструменты редактирования ограничительной рамки. Вы можете изменить ограничивающий объем вручную, изменив значения Size и Origin в пользовательском интерфейсе (см. ниже).

Основное различие между Automatic Local и Automatic World заключается в том, что в Automatic Local ограничивающая рамка требует больше ресурсов для вычисления, когда большая иерархия GameObjects использует тот же компонент LPPV из родительского GameObject. Однако результирующая ограничивающая рамка может быть меньше по размеру, что означает более компактные данные об освещении.

На количество интерполированных световых зондов внутри ограничивающего объема влияет свойство Разрешение прокси-объема. Есть два варианта:

  • Автоматически (значение по умолчанию). Разрешение по каждой оси рассчитывается с использованием заданного вами числа интерполированных световых зондов на единицу площади и размера ограничивающей рамки.

  • Пользовательский — позволяет указать различное разрешение для каждой оси (см. ниже).

Примечание. Окончательное разрешение по каждой оси должно быть степенью двойки, а максимальное значение разрешения равно 32.

Режим положения зонда определяет положение интерполированного светового зонда относительно центра ячейки. Этот параметр может быть полезен в ситуациях, когда некоторые из интерполированных световых зондов проходят сквозь стены или другую геометрию и вызывают утечку света. В приведенном ниже примере показана разница между Cell Corner и Cell Center в двухмерном представлении с использованием сетки 4x4:

Формат данных указывает, какой формат использует соответствующая 3D-текстура. Есть два варианта:

  • Float (значение по умолчанию). Текстура использует 32-битный формат канала с плавающей запятой для хранения коэффициентов сферических гармоник.

  • Half Float. Текстура использует формат канала Half-Float (16-битное число с плавающей запятой) для хранения коэффициентов сферических гармоник. Преимущество этого формата в том, что линейная выборка текстур с половинной плавающей запятой поддерживается большинством устройств, и разница в точности между этим форматом и 32-битным форматом канала с плавающей запятой не заметна. Кроме того, производительность выборки текстур на графическом процессоре выше при использовании этого формата данных.

Изображения для сравнения

  1. Простой модуль визуализации сеткикомпонент сетки, который берет геометрию из фильтра сетки и визуализирует ее в позиции, заданной компонент Transform объекта. Подробнее
    См. в Словарь
    с использованием стандартного шейдера:

    С прокси-томом Light Probe (разрешение: 4x1x1)
    С прокси-томом Light Probe (разрешение: 4x1x1)
    Без прокси-тома Light Probe
    Без прокси-тома Light Probe
  2. Скин-рендерер сетки с использованием стандартного шейдера:

    С прокси-томом Light Probe (разрешение: 2x2x2)
    С прокси-томом Light Probe (разрешение: 2x2x2)
    Без прокси-тома Light Probe
    Без прокси-тома Light Probe

Пример шейдера Particle System с использованием функции ShadeSHPerPixel

Shader "Particles/AdditiveLPPV" { Properties { _MainTex ("Particle Texture", 2D) = "white" {} _TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5) } Category { Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } Blend SrcAlpha One ColorMask RGB Cull Off Lighting Off ZWrite Off SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_particles #pragma multi_compile_fog // Specify the target #pragma target 3.0 #include "UnityCG.cginc" // You must include this header to have access to ShadeSHPerPixel #include "UnityStandardUtils.cginc" fixed4 _TintColor; sampler2D _MainTex; struct appdata_t { float4 vertex : POSITION; float3 normal : NORMAL; fixed4 color : COLOR; float2 texcoord : TEXCOORD0; }; struct v2f { float4 vertex : SV_POSITION; fixed4 color : COLOR; float2 texcoord : TEXCOORD0; UNITY_FOG_COORDS(1) float3 worldPos : TEXCOORD2; float3 worldNormal : TEXCOORD3; }; float4 _MainTex_ST; v2f vert (appdata_t v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.worldNormal = UnityObjectToWorldNormal(v.normal); o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; o.color = v.color; o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { half3 currentAmbient = half3(0, 0, 0); half3 ambient = ShadeSHPerPixel(i.worldNormal, currentAmbient, i.worldPos); fixed4 col = _TintColor * i.color * tex2D(_MainTex, i.texcoord); col.xyz += ambient; UNITY_APPLY_FOG_COLOR(i.fogCoord, col, fixed4(0,0,0,0)); // fog towards black due to our blend mode return col; } ENDCG } } } }

Hardware requirements

Для этого компонента требуется как минимум графическое оборудование Shader Model 4 и поддержка API, включая поддержку 3D-текстур с 32-битным или 16-битным форматом с плавающей запятой и линейной фильтрацией.

Для правильной работы сцена должна содержать световые зонды через группу световых зондовкомпонент, который позволяет добавлять световые зонды к GameObjects в вашей сцене. Дополнительная информация
См. в компонентах Словарь
. Если требование не выполнено, компонент Renderer или Light Probe Proxy Volume Inspectorокно Unity, в котором отображается информация о выбранном в данный момент GameObject , настройки объекта или проекта, что позволяет просматривать и редактировать значения. Подробнее
See in Словарь
отображает предупреждающее сообщение.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3