ReflectionProbe
Локальный захват окружения и область применения отражения.
Size задаёт полный локальный объём влияния; OriginOffset смещает точку захвата внутри него, MaxDistance задаёт запрошенную дальность внутренних камер. CullMask выбирает захватываемую геометрию, ReflectionMask — геометрию, получающую результат: это разные маски.
Методы GetSize, GetOriginOffset и GetMaxDistance возвращают сохранённые настройки. Они не сообщают о готовности GPU-захвата или его визуальном качестве. Для первоначальной настройки используйте корректный положительный Size, затем OriginOffset и проверяйте результат на материале, который поддерживает отражённый свет.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
ReflectionProbeКонструктор
public ReflectionProbe();Создаёт Entity пробы и принадлежащий ей ресурс RenderingServer. Начальные настройки: Size=(20,20,20), OriginOffset=0, MaxDistance=0, Intensity=1, BlendDistance=1, UpdateMode=Once; обе маски включают первые 20 слоёв. BoxProjection, Interior и EnableShadows выключены, AmbientMode=Environment. Конструктор не означает, что GPU-захват уже завершён: пробу необходимо добавить в активный 3D-мир. Освобождайте Entity обычным способом; её внутренний RID не принадлежит вызывающему коду.
Свойства15
AmbientColorСвойство
public Color AmbientColor { get; set; }Постоянный ambient-цвет для AmbientMode.Color, по умолчанию чёрный. В RD RGB переводится из sRGB в линейное пространство и умножается на AmbientColorEnergy и вклад пробы. Альфа не задаёт прозрачность получателя. В остальных ambient-режимах значение сохраняется, но этот цвет не используется.
AmbientColorEnergyСвойство
public float AmbientColorEnergy { get; set; }Множитель AmbientColor в режиме Color, по умолчанию 1. Не меняет энергию источников света или запечатлённую геометрию. Intensity дополнительно масштабирует вклад пробы. Используйте неотрицательные значения; setter не ограничивает их диапазоном подсказки инспектора. При 0 RGB вклада становится чёрным; режим Color остаётся активным.
AmbientModeСвойство
public ReflectionProbe.AmbientModeEnum AmbientMode { get; set; }Способ добавления диффузного ambient-вклада, по умолчанию Environment. Disabled не добавляет такой вклад; Environment использует наиболее размытый уровень захвата; Color использует AmbientColor и AmbientColorEnergy. Это приближение локального освещения, не расчёт многократных отражений. Сам режим Disabled не запрещает зеркальное отражение, но при нулевом общем ambient стандартное specular occlusion может его погасить.
BlendDistanceСвойство
public float BlendDistance { get; set; }Ширина затухания вклада у внутренних границ области Size, по умолчанию 1. Значение 0 отключает плавный переход, сохраняя ограничение областью. В текущем RD переход вычисляется по осям и ограничивается полуразмерами коробки; это не линейная прозрачность по одному расстоянию и не дальность захвата.
BoxProjectionСвойство
public bool BoxProjection { get; set; }Коррекция параллакса отражения по коробке Size, по умолчанию false. В RD направление пересчитывается с учётом положения отражаемой поверхности внутри коробки и OriginOffset. Полезно для прямоугольных помещений, но не восстанавливает точную геометрию комнаты. Не перемещает точку захвата и не задаёт разрешение атласа.
CullMaskСвойство
public uint CullMask { get; set; }Маска слоёв VisualInstance3D, попадающих в захват; по умолчанию включены первые 20 слоёв. Сравнивается со слоями захватываемой геометрии, а не с номером слоя. Не выбирает получателей отражения: для них используется ReflectionMask. Ноль исключает геометрию, но не останавливает пробу и не обязательно исключает небо.
EnableShadowsСвойство
public bool EnableShadows { get; set; }Разрешает вычисление теней источников света при захвате, по умолчанию false. В RD для этого передаётся атлас теней пробы; сами источники и их настройки также должны поддерживать тени. Увеличивает работу при обновлении, особенно с Always. Не выключает уже запечённое затемнение в материалах или картах освещения.
IntensityСвойство
public float Intensity { get; set; }Множитель зеркального и добавочного ambient-вклада пробы, по умолчанию 1. Значение 0 убирает её световой вклад, но не удаляет пробу и не останавливает захват. Это не мощность источников света внутри захвата. Используйте неотрицательное значение; setter не ограничивает его подсказкой инспектора 0…1.
InteriorСвойство
public bool Interior { get; set; }Интерьерный захват без фонового неба, по умолчанию false. В текущем RD окружение Environment исключается из рендера самой пробы. Это не создаёт свет внутри комнаты и не отключает всё освещение основной камеры; видимый ambient-вклад также зависит от AmbientMode и других источников.
MaxDistanceСвойство
public float MaxDistance { get; set; }Запрошенная дальность внутренних камер захвата, по умолчанию 0. Обёртка ограничивает значение диапазоном 0…262144. Фактическая дальняя плоскость дополнительно расширяется до границ области относительно OriginOffset, поэтому 0 не отключает захват. Это не расстояние видимости пробы от основной камеры и не размер её области влияния.
MeshLodThresholdСвойство
public float MeshLodThreshold { get; set; }Порог экранного размера для выбора существующих LOD геометрии при захвате, по умолчанию 1. В текущем RD нормируется на разрешение атласа. Большие значения могут выбирать менее подробные LOD. Не создаёт LOD и не меняет их выбор основной камерой. Используйте неотрицательные значения; setter не ограничивает диапазон.
OriginOffsetСвойство
public Vector3 OriginOffset { get; set; }Локальное смещение точки захвата относительно центра пробы, по умолчанию (0,0,0). Для корректного положительного Size компоненты ограничиваются диапазоном ±(Size/2−0.01); уменьшение Size может изменить ранее заданное смещение. Смещение используется внутренними камерами захвата, а при BoxProjection — также коррекцией направления отражения. Оно не перемещает саму область влияния.
ReflectionMaskСвойство
public uint ReflectionMask { get; set; }Маска слоёв геометрии, получающих отражение и ambient-вклад этой пробы; по умолчанию включены первые 20 слоёв. В текущем RD сравнивается со слоями экземпляра при применении пробы. Не меняет набор захватываемой геометрии — это CullMask. Ноль убирает получателей, но не освобождает захват и не является выключением процесса обновления.
SizeСвойство
public Vector3 Size { get; set; }Полные локальные размеры области влияния, а не половины размеров. По умолчанию (20,20,20). Используйте положительные компоненты; setter сохраняет переданный вектор без проверки положительности. Изменение размера также ограничивает сохранённый OriginOffset внутри области. Для размеров используйте это свойство, а не масштаб Entity: у ReflectionProbe отключено наследуемое масштабирование трансформации.
UpdateModeСвойство
public ReflectionProbe.UpdateModeEnum UpdateMode { get; set; }Политика обновления захвата, по умолчанию Once. Once сохраняет результат до инвалидации; изменения материала постороннего объекта сами по себе не гарантируют перезахват. Always повторяет захват при обработке активной пробы. Доступность результата зависит от видимости, планирования и обработки roughness, а не только от вызова setter. В текущем RD Always использует размер захвата 256 на грань куба; переход может пересоздать общий атлас и сопровождается известным ограничением освобождения текстур из руководства.
Методы30
AreShadowsEnabledbool
public bool AreShadowsEnabled();Возвращает флаг EnableShadows. Он не сообщает, есть ли подходящие источники или готовые тени в текущем захвате.
booltrue, если вычисление теней при захвате разрешено; по умолчанию false.
GetAmbientColorColor
public Color GetAmbientColor();Возвращает сохранённый AmbientColor, включая компоненты Color, без замены на готовый линейный RGB освещения.
ColorНазначенный Color; по умолчанию чёрный.
GetAmbientColorEnergyfloat
public float GetAmbientColorEnergy();Возвращает сохранённый AmbientColorEnergy независимо от активного AmbientMode.
floatНастроенный множитель постоянного цвета; по умолчанию 1.
GetAmbientModeReflectionProbe.AmbientModeEnum
public ReflectionProbe.AmbientModeEnum GetAmbientMode();Возвращает сохранённый режим ambient пробы. Это не запрос готовности захвата.
ReflectionProbe.AmbientModeEnumЗначение AmbientModeEnum; по умолчанию Environment.
GetBlendDistancefloat
public float GetBlendDistance();Возвращает сохранённую ширину перехода BlendDistance.
floatНастроенная ширина в локальных единицах пробы; по умолчанию 1.
GetCullMaskuint
public uint GetCullMask();Возвращает сохранённую маску захватываемых слоёв.
uintБитовая маска CullMask; по умолчанию 0x000FFFFF.
GetIntensityfloat
public float GetIntensity();Возвращает сохранённый Intensity, а не измеренную яркость пикселей отражения.
floatНастроенный множитель вклада; по умолчанию 1.
GetMaxDistancefloat
public float GetMaxDistance();Возвращает сохранённый MaxDistance после ограничения диапазона. Не возвращает фактическую дальнюю плоскость захвата: рендерер может увеличить её с учётом Size и OriginOffset.
floatСохранённая запрошенная дальность в диапазоне 0…262144. Это не вычисленная дальняя плоскость внутренних камер.
GetMeshLodThresholdfloat
public float GetMeshLodThreshold();Возвращает сохранённый порог LOD для захвата.
floatЗначение MeshLodThreshold; по умолчанию 1.
GetOriginOffsetVector3
public Vector3 GetOriginOffset();Возвращает сохранённый OriginOffset после ограничения внутри размеров пробы. Результат может отличаться от переданного в SetOriginOffset или измениться после SetSize.
Vector3Локальное смещение после ограничения размерами пробы; по умолчанию (0,0,0).
GetReflectionMaskuint
public uint GetReflectionMask();Возвращает сохранённую маску получателей, а не маску камер захвата.
uintБитовая маска ReflectionMask; по умолчанию 0x000FFFFF.
GetSizeVector3
public Vector3 GetSize();Возвращает сохранённые полные локальные размеры Size. Локальный GetAabb() пробы задаётся позицией -Size/2 и размером Size; это не дальность внутренней камеры.
Vector3Сохранённый вектор полных локальных размеров Size, по умолчанию (20,20,20). Это не полуразмеры и не дальность захвата.
GetUpdateModeReflectionProbe.UpdateModeEnum
public ReflectionProbe.UpdateModeEnum GetUpdateMode();Возвращает настроенную политику обновления. Метод не сообщает о завершении захвата или фильтрации.
ReflectionProbe.UpdateModeEnumЗначение UpdateModeEnum; по умолчанию Once.
IsBoxProjectionEnabledbool
public bool IsBoxProjectionEnabled();Возвращает настройку BoxProjection. Значение true не подтверждает точность параллакса конкретной комнаты.
booltrue, если коррекция коробки включена; по умолчанию false.
IsSetAsInteriorbool
public bool IsSetAsInterior();Возвращает сохранённый флаг Interior, а не результат проверки помещения на замкнутость.
booltrue для интерьерного режима; по умолчанию false.
SetAmbientColorvoid
public void SetAmbientColor(Color ambient);Сохраняет постоянный цвет ambient. Для его применения выберите AmbientMode.Color; для силы вклада используйте AmbientColorEnergy и Intensity.
| Имя | Тип | По умолчанию |
|---|---|---|
ambient | Color | — |
ambientЦвет ambient; используются RGB. Альфа не превращает материал в полупрозрачный.
SetAmbientColorEnergyvoid
public void SetAmbientColorEnergy(float ambientEnergy);Задаёт множитель постоянного ambient-цвета. Для видимого действия нужен AmbientMode.Color; увеличение не добавляет светильники или тени.
| Имя | Тип | По умолчанию |
|---|---|---|
ambientEnergy | float | — |
ambientEnergyНеотрицательный множитель RGB: 1 сохраняет исходную силу цвета. При 0 RGB вклада становится чёрным, но AmbientMode не переключается в Disabled.
SetAmbientModevoid
public void SetAmbientMode(ReflectionProbe.AmbientModeEnum ambient);Выбирает источник диффузного ambient-вклада. Настройки AmbientColor и AmbientColorEnergy хранятся независимо, но используются в режиме Color.
| Имя | Тип | По умолчанию |
|---|---|---|
ambient | ReflectionProbe.AmbientModeEnum | — |
ambientДопустимый AmbientModeEnum: Disabled, Environment или Color. Для зеркального вклада отдельно проверяйте материал и specular occlusion.
SetAsInteriorvoid
public void SetAsInterior(bool enable);Переключает интерьерный режим и помечает данные пробы для обновления. Разместите точку захвата вне сплошной геометрии и обеспечьте освещение помещения.
| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
enabletrue исключает окружение из интерьерного захвата; false разрешает обычное окружение.
SetBlendDistancevoid
public void SetBlendDistance(float blendDistance);Задаёт ширину перехода у границ области. Используйте неотрицательное значение: setter не проверяет диапазон. Не увеличивает область Size и не создаёт дополнительные пробы.
| Имя | Тип | По умолчанию |
|---|---|---|
blendDistance | float | — |
blendDistanceШирина затухания внутри коробки; 0 задаёт резкую границу. Это не MaxDistance.
SetCullMaskvoid
public void SetCullMask(uint layers);Назначает слои геометрии для внутренних камер и инвалидирует захват. Маска основной Camera3D остаётся отдельной настройкой.
| Имя | Тип | По умолчанию |
|---|---|---|
layers | uint | — |
layersБиты слоёв: 1u — первый, 2u — второй, 3u — оба. Ноль исключает всю геометрию из захвата.
SetEnableBoxProjectionvoid
public void SetEnableBoxProjection(bool enable);Включает или выключает коррекцию направления отражения по коробке. Сначала подгоните Size и OriginOffset под помещение.
| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
enabletrue для коррекции коробки, false для обычного направления выборки захвата.
SetEnableShadowsvoid
public void SetEnableShadows(bool enable);Переключает вычисление теней при захвате и инвалидирует данные пробы. Проверяйте качество и стоимость на целевой платформе.
| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
enabletrue разрешает поддерживаемые тени в новом захвате; false убирает их вычисление пробой.
SetIntensityvoid
public void SetIntensity(float intensity);Назначает множитель вклада пробы. Изменение не является запросом нового захвата сцены; проверьте итог вместе с экспозицией, материалом и BlendDistance.
| Имя | Тип | По умолчанию |
|---|---|---|
intensity | float | — |
intensityНеотрицательный множитель: 1 — исходный вклад, 0 — отсутствие вклада. Захват может продолжаться при нулевом значении.
SetMaxDistancevoid
public void SetMaxDistance(float maxDistance);Запрошенная дальность внутренних камер захвата, по умолчанию 0. Обёртка ограничивает значение диапазоном 0…262144. Фактическая дальняя плоскость дополнительно расширяется до границ области относительно OriginOffset, поэтому 0 не отключает захват. Это не расстояние видимости пробы от основной камеры и не размер её области влияния.
| Имя | Тип | По умолчанию |
|---|---|---|
maxDistance | float | — |
maxDistanceЗапрошенная дальность захвата в единицах проекта; отрицательные значения становятся 0, значения выше 262144 ограничиваются верхней границей.
SetMeshLodThresholdvoid
public void SetMeshLodThreshold(float ratio);Задаёт порог выбора LOD для следующих захватов. Сам setter не инвалидирует уже сохранённое изображение Once; изменение настройки не доказывает, что новая геометрия уже захвачена.
| Имя | Тип | По умолчанию |
|---|---|---|
ratio | float | — |
ratioНеотрицательный порог экранного размера. Несмотря на имя ratio, это не процент уменьшения числа полигонов.
SetOriginOffsetvoid
public void SetOriginOffset(Vector3 originOffset);Локальное смещение точки захвата относительно центра пробы, по умолчанию (0,0,0). Для корректного положительного Size компоненты ограничиваются диапазоном ±(Size/2−0.01); уменьшение Size может изменить ранее заданное смещение. Смещение используется внутренними камерами захвата, а при BoxProjection — также коррекцией направления отражения. Оно не перемещает саму область влияния.
| Имя | Тип | По умолчанию |
|---|---|---|
originOffset | Vector3 | — |
originOffsetЛокальное смещение точки захвата; задавайте после корректного положительного Size и проверяйте сохранённое значение, если точное положение важно.
SetReflectionMaskvoid
public void SetReflectionMask(uint layers);Задаёт слои объектов, на которые действует проба, и обновляет её зависимости. Для исключения самого объекта из изображения захвата меняйте CullMask, а не эту маску.
| Имя | Тип | По умолчанию |
|---|---|---|
layers | uint | — |
layersБиты слоёв получателей; 0 означает отсутствие получателей. Это не номер слоя и не CullMask.
SetSizevoid
public void SetSize(Vector3 size);Полные локальные размеры области влияния, а не половины размеров. По умолчанию (20,20,20). Используйте положительные компоненты; setter сохраняет переданный вектор без проверки положительности. Изменение размера также ограничивает сохранённый OriginOffset внутри области. Для размеров используйте это свойство, а не масштаб Entity: у ReflectionProbe отключено наследуемое масштабирование трансформации.
| Имя | Тип | По умолчанию |
|---|---|---|
size | Vector3 | — |
sizeПолные размеры по X/Y/Z в локальных единицах. Для корректной области задавайте положительные размеры; пример использует не менее 0.02 на каждой оси.
SetUpdateModevoid
public void SetUpdateMode(ReflectionProbe.UpdateModeEnum mode);Меняет политику обновления и инвалидирует данные пробы. Это не синхронная команда получения готового изображения. Учитывайте стоимость Always и известное предупреждение освобождения ресурсов при переходе между режимами.
| Имя | Тип | По умолчанию |
|---|---|---|
mode | ReflectionProbe.UpdateModeEnum | — |
modeДопустимый UpdateModeEnum: Once или Always. Для обычного статического окружения начните с Once.
ReflectionProbe.AmbientModeEnum
| Значение | Описание |
|---|---|
Color = 2 | Постоянный диффузный ambient из AmbientColor с множителем AmbientColorEnergy и Intensity. Действует в области пробы с учётом перехода BlendDistance; не создаёт отдельные источники света. |
Disabled = 0 | Не добавляет ambient от этой пробы. Ambient окружения и другие источники не выключаются этим значением. Зеркальный вклад настраивается отдельно; при нулевом общем ambient стандартное specular occlusion может его подавить. |
Environment = 1 | Диффузный ambient из наиболее размытого уровня захвата пробы. Это локальное приближение освещения, а не полноценный расчёт многократных отражений. |
ReflectionProbe.UpdateModeEnum
| Значение | Описание |
|---|---|
Always = 1 | Повторяет захват при обработке активной пробы. Стоимость зависит от сцены и числа обновляемых проб; универсального ограничения «только одна на сцену» нет. В текущем RD используется размер захвата 256 на грань куба. Переход из Once может пересоздать общий атлас; известное предупреждение освобождения текстур описано в руководстве. |
Once = 0 | Сохраняет захват до инвалидации. Изменение трансформации пробы вызывает обновление; изменение соседнего материала само по себе не гарантирует его. Захват и фильтрация планируются рендерером, поэтому нельзя полагаться на готовность ровно через шесть кадров. Подходит как начальная настройка для статического окружения. |