VoxelGIData
Запечённые данные и параметры объёма VoxelGI.
VoxelGIData хранит подготовленное октодерево и параметры непрямого освещения. Обычный путь: VoxelGI.Bake → Data → сохранение внешнего .rbin. Для разных настроек одного запекания создайте независимую копию ресурса; изменение общего Data повлияет на использующие его объёмы.
Пример возвращает ресурс, которым владеет вызывающий код. После назначения volume.Data копия удерживается объёмом; освобождайте собственную ссылку, когда она больше не нужна. Это копирование уже запечённых данных, не новое запекание геометрии.
using System;
using Reckfell;
public static class VoxelDataCopies
{
// Caller owns the returned resource. The source stays unchanged.
public static VoxelGIData WithEnergy(VoxelGIData source, float energy)
{
ArgumentNullException.ThrowIfNull(source);
if (!float.IsFinite(energy) || energy < 0f)
throw new ArgumentOutOfRangeException(nameof(energy));
var copy = (VoxelGIData)source.Duplicate(true);
copy.Energy = energy;
return copy;
}
}Рабочий процесс и диагностика: руководство VoxelGI.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
VoxelGIDataКонструктор
public VoxelGIData();Создаёт ресурс без запечённой геометрии. Обычный рабочий путь — VoxelGI.Bake и VoxelGI.Data либо загрузка готового .rbin. Наличие ресурса само по себе не означает наличие рабочего объёма GI.
Свойства8
BiasСвойство
public float Bias { get; set; }Начальная дистанция трассировки конуса в координатах вокселей; отличается от NormalBias. Смещение помогает уменьшать самозатенение, но слишком большое значение может пропускать тонкие препятствия. Геттер нового ресурса возвращает 1.5; не считайте это доказательством пиксельной эквивалентности всех начальных настроек рендерера. Подсказка инспектора 0…8 не ограничивает сеттер.
DynamicRangeСвойство
public float DynamicRange { get; set; }Диапазон кодирования энергии в буфере VoxelGI, по умолчанию 2. В вычислениях участвует как масштаб деления и восстановления энергии; используйте конечное положительное значение. Подсказка инспектора 1…8 не является ограничением сеттера. Это не экспозиция камеры и не коэффициент качества без потери точности.
EnergyСвойство
public float Energy { get; set; }Множитель непрямого света, по умолчанию 1. При 0 вклад VoxelGI в проверенном кадре исчезает; прямой свет и видимость эмиссивного материала этим не выключаются. Подсказка инспектора 0…64 не ограничивает сеттер: например, 65 сохраняется. Используйте конечное неотрицательное значение.
InteriorСвойство
public bool Interior { get; set; }При true исключает вклад неба в VoxelGI; по умолчанию false. Полезно для закрытой комнаты, но не отключает прямые источники и не исправляет отверстия в геометрии. Изменение параметра не перестраивает статические меши.
NormalBiasСвойство
public float NormalBias { get; set; }Смещение точки выборки вдоль нормали в координатах вокселей, по умолчанию 0. В отличие от Bias меняет положение начала выборки, а не только начальную дистанцию вдоль конуса. Увеличивайте небольшими шагами и проверяйте утечки света. Подсказка инспектора 0…8 не ограничивает сеттер.
PropagationСвойство
public float Propagation { get; set; }Коэффициент распространения энергии при построении уровней VoxelGI, по умолчанию 0.5. Подсказка инспектора 0…1 не ограничивает сеттер; используйте обычный диапазон, пока не проверили иной режим. Более высокое значение не гарантирует физически верную яркость: сравнивайте с Energy и UseTwoBounces.
UseTwoBouncesСвойство
public bool UseTwoBounces { get; set; }Использовать второй проход отражения непрямого света; по умолчанию true. Может изменить яркость и распределение света. Не обещает бесплатного улучшения качества: проверяйте кадр и время GPU на целевой сцене. Геометрию заново не запекает.
_DataСвойство
public Reckfell.Collections.Dictionary _Data { get; set; }Внутренний словарь сериализации, не стабильный внешний формат. Содержит bounds, octree_size, octree_cells, octree_data, level_counts, to_cell_xform и поле расстояний octree_df либо сжатый L8 PNG octree_df_png. Не путайте PNG с сырыми байтами Allocate. Чтение создаёт представление для сериализации; запись требует полного согласованного набора и вызывает Allocate. Параметры Energy/Bias и остальные свойства сохраняются отдельно. Для обычной копии используйте Duplicate(true), для файла — ResourceSaver и .rbin.
Методы22
Allocate2 перегрузки
public void Allocate(Transform3D toCellXform, Aabb aabb, Vector3 octreeSize, byte[] octreeCells, byte[] dataCells, byte[] distanceField, int[] levelCounts);Низкоуровнево загружает согласованный набор уже подготовленных воксельных буферов. Не вокселизирует меш и не заменяет Bake. Буферы octreeCells/dataCells имеют соответственно 32/16 байт на ячейку; поле расстояний передаётся сырыми L8-байтами. Для обычной копии используйте Duplicate(true).
Старые GPU-буферы освобождаются до части проверок входа: операция не атомарна и не гарантирует сохранение прежнего состояния при ошибке. Возвращает void; не используйте для недоверенных или произвольно сконструированных массивов. Передавайте только согласованные данные и проверяйте ошибки. Входные C#-массивы не остаются живым представлением данных GPU.
| Имя | Тип | По умолчанию |
|---|---|---|
toCellXform | Transform3D | — |
aabb | Aabb | — |
octreeSize | Vector3 | — |
octreeCells | byte[] | — |
dataCells | byte[] | — |
distanceField | byte[] | — |
levelCounts | int[] | — |
toCellXformПреобразование из локальных координат объёма в координаты ячеек из того же набора данных.
aabbЛокальные границы объёма из того же запекания.
octreeSizeРазмеры сетки по осям; используйте целые положительные размеры корректного запекания.
octreeCellsВнутренняя структура: длина кратна 32 байтам. Одной кратности недостаточно для валидности.
dataCellsДанные тех же ячеек: 16 байт на ячейку, половина длины octreeCells.
distanceFieldСырые L8-данные 3D-поля расстояний тех же размеров; не PNG-байты из _Data.
levelCountsЧисло ячеек каждого уровня того же октодерева.
public void Allocate(Transform3D toCellXform, Aabb aabb, Vector3 octreeSize, ReadOnlySpan<byte> octreeCells, ReadOnlySpan<byte> dataCells, ReadOnlySpan<byte> distanceField, ReadOnlySpan<int> levelCounts);Низкоуровнево загружает согласованный набор уже подготовленных воксельных буферов. Не вокселизирует меш и не заменяет Bake. Буферы octreeCells/dataCells имеют соответственно 32/16 байт на ячейку; поле расстояний передаётся сырыми L8-байтами. Для обычной копии используйте Duplicate(true).
Старые GPU-буферы освобождаются до части проверок входа: операция не атомарна и не гарантирует сохранение прежнего состояния при ошибке. Возвращает void; не используйте для недоверенных или произвольно сконструированных массивов. Передавайте только согласованные данные и проверяйте ошибки. Перегрузка span не сохраняет ссылки на управляемую память после вызова.
| Имя | Тип | По умолчанию |
|---|---|---|
toCellXform | Transform3D | — |
aabb | Aabb | — |
octreeSize | Vector3 | — |
octreeCells | ReadOnlySpan<byte> | — |
dataCells | ReadOnlySpan<byte> | — |
distanceField | ReadOnlySpan<byte> | — |
levelCounts | ReadOnlySpan<int> | — |
toCellXformПреобразование из локальных координат объёма в координаты ячеек из того же набора данных.
aabbЛокальные границы объёма из того же запекания.
octreeSizeРазмеры сетки по осям; используйте целые положительные размеры корректного запекания.
octreeCellsВнутренняя структура: длина кратна 32 байтам. Одной кратности недостаточно для валидности.
dataCellsДанные тех же ячеек: 16 байт на ячейку, половина длины octreeCells.
distanceFieldСырые L8-данные 3D-поля расстояний тех же размеров; не PNG-байты из _Data.
levelCountsЧисло ячеек каждого уровня того же октодерева.
GetBiasfloat
public float GetBias();Возвращает Bias. Начальная дистанция трассировки конуса в координатах вокселей; отличается от NormalBias. Смещение помогает уменьшать самозатенение, но слишком большое значение может пропускать тонкие препятствия. Геттер нового ресурса возвращает 1.5; не считайте это доказательством пиксельной эквивалентности всех начальных настроек рендерера. Подсказка инспектора 0…8 не ограничивает сеттер.
floatТекущее значение Bias.
GetBoundsAabb
public Aabb GetBounds();Возвращает локальные границы, сохранённые при Bake или Allocate. Это Aabb данных, а не автоматически преобразованные мировые границы Entity.
AabbСохранённый локальный Aabb.
GetDataCellsbyte[]
public byte[] GetDataCells();Возвращает byte[] внутренних данных ячеек, по 16 байт на ячейку корректного запекания. Это не массив Color или текстура для редактирования художником. Изменение полученного C#-массива не меняет ресурс.
byte[]Копия внутренних данных ячеек.
GetDynamicRangefloat
public float GetDynamicRange();Возвращает DynamicRange. Диапазон кодирования энергии в буфере VoxelGI, по умолчанию 2. В вычислениях участвует как масштаб деления и восстановления энергии; используйте конечное положительное значение. Подсказка инспектора 1…8 не является ограничением сеттера. Это не экспозиция камеры и не коэффициент качества без потери точности.
floatТекущее значение DynamicRange.
GetEnergyfloat
public float GetEnergy();Возвращает Energy. Множитель непрямого света, по умолчанию 1. При 0 вклад VoxelGI в проверенном кадре исчезает; прямой свет и видимость эмиссивного материала этим не выключаются. Подсказка инспектора 0…64 не ограничивает сеттер: например, 65 сохраняется. Используйте конечное неотрицательное значение.
floatТекущее значение Energy.
GetLevelCountsint[]
public int[] GetLevelCounts();Возвращает int[] с числом ячеек каждого уровня октодерева. В проверенном корректном запекании сумма равна GetOctreeCells().Length / 32. Изменение C#-массива не меняет ресурс.
int[]Копия количества ячеек по уровням.
GetNormalBiasfloat
public float GetNormalBias();Возвращает NormalBias. Смещение точки выборки вдоль нормали в координатах вокселей, по умолчанию 0. В отличие от Bias меняет положение начала выборки, а не только начальную дистанцию вдоль конуса. Увеличивайте небольшими шагами и проверяйте утечки света. Подсказка инспектора 0…8 не ограничивает сеттер.
floatТекущее значение NormalBias.
GetOctreeCellsbyte[]
public byte[] GetOctreeCells();Возвращает byte[] с внутренней структурой октодерева. В корректном запекании на ячейку приходится 32 байта. Возвращённый C#-массив независим: его изменение не изменяет данные GPU. Чтение может потребовать получения данных из рендерера; не вызывайте без необходимости каждый кадр.
byte[]Копия внутренних ячеек октодерева.
GetOctreeSizeVector3
public Vector3 GetOctreeSize();Возвращает сохранённое число ячеек по трём осям как Vector3. Это дискретные размеры сетки, не метры и не Size самого VoxelGI.
Vector3Размеры сетки по осям.
GetPropagationfloat
public float GetPropagation();Возвращает Propagation. Коэффициент распространения энергии при построении уровней VoxelGI, по умолчанию 0.5. Подсказка инспектора 0…1 не ограничивает сеттер; используйте обычный диапазон, пока не проверили иной режим. Более высокое значение не гарантирует физически верную яркость: сравнивайте с Energy и UseTwoBounces.
floatТекущее значение Propagation.
GetToCellXformTransform3D
public Transform3D GetToCellXform();Возвращает сохранённое преобразование из локальных координат объёма в координаты ячеек. Не является GlobalTransform VoxelGI.
Transform3DСохранённое преобразование к ячейкам.
IsInteriorbool
public bool IsInterior();Возвращает Interior. При true исключает вклад неба в VoxelGI; по умолчанию false. Полезно для закрытой комнаты, но не отключает прямые источники и не исправляет отверстия в геометрии. Изменение параметра не перестраивает статические меши.
boolТекущее значение Interior.
IsUsingTwoBouncesbool
public bool IsUsingTwoBounces();Возвращает UseTwoBounces. Использовать второй проход отражения непрямого света; по умолчанию true. Может изменить яркость и распределение света. Не обещает бесплатного улучшения качества: проверяйте кадр и время GPU на целевой сцене. Геометрию заново не запекает.
boolТекущее значение UseTwoBounces.
SetBiasvoid
public void SetBias(float bias);Устанавливает Bias. Начальная дистанция трассировки конуса в координатах вокселей; отличается от NormalBias. Смещение помогает уменьшать самозатенение, но слишком большое значение может пропускать тонкие препятствия. Геттер нового ресурса возвращает 1.5; не считайте это доказательством пиксельной эквивалентности всех начальных настроек рендерера. Подсказка инспектора 0…8 не ограничивает сеттер.
| Имя | Тип | По умолчанию |
|---|---|---|
bias | float | — |
biasНовое значение Bias; учитывайте ограничения назначения свойства.
SetDynamicRangevoid
public void SetDynamicRange(float dynamicRange);Устанавливает DynamicRange. Диапазон кодирования энергии в буфере VoxelGI, по умолчанию 2. В вычислениях участвует как масштаб деления и восстановления энергии; используйте конечное положительное значение. Подсказка инспектора 1…8 не является ограничением сеттера. Это не экспозиция камеры и не коэффициент качества без потери точности.
| Имя | Тип | По умолчанию |
|---|---|---|
dynamicRange | float | — |
dynamicRangeНовое значение DynamicRange; учитывайте ограничения назначения свойства.
SetEnergyvoid
public void SetEnergy(float energy);Устанавливает Energy. Множитель непрямого света, по умолчанию 1. При 0 вклад VoxelGI в проверенном кадре исчезает; прямой свет и видимость эмиссивного материала этим не выключаются. Подсказка инспектора 0…64 не ограничивает сеттер: например, 65 сохраняется. Используйте конечное неотрицательное значение.
| Имя | Тип | По умолчанию |
|---|---|---|
energy | float | — |
energyНовое значение Energy; учитывайте ограничения назначения свойства.
SetInteriorvoid
public void SetInterior(bool interior);Устанавливает Interior. При true исключает вклад неба в VoxelGI; по умолчанию false. Полезно для закрытой комнаты, но не отключает прямые источники и не исправляет отверстия в геометрии. Изменение параметра не перестраивает статические меши.
| Имя | Тип | По умолчанию |
|---|---|---|
interior | bool | — |
interiorНовое значение Interior; учитывайте ограничения назначения свойства.
SetNormalBiasvoid
public void SetNormalBias(float bias);Устанавливает NormalBias. Смещение точки выборки вдоль нормали в координатах вокселей, по умолчанию 0. В отличие от Bias меняет положение начала выборки, а не только начальную дистанцию вдоль конуса. Увеличивайте небольшими шагами и проверяйте утечки света. Подсказка инспектора 0…8 не ограничивает сеттер.
| Имя | Тип | По умолчанию |
|---|---|---|
bias | float | — |
biasНовое значение NormalBias; учитывайте ограничения назначения свойства.
SetPropagationvoid
public void SetPropagation(float propagation);Устанавливает Propagation. Коэффициент распространения энергии при построении уровней VoxelGI, по умолчанию 0.5. Подсказка инспектора 0…1 не ограничивает сеттер; используйте обычный диапазон, пока не проверили иной режим. Более высокое значение не гарантирует физически верную яркость: сравнивайте с Energy и UseTwoBounces.
| Имя | Тип | По умолчанию |
|---|---|---|
propagation | float | — |
propagationНовое значение Propagation; учитывайте ограничения назначения свойства.
SetUseTwoBouncesvoid
public void SetUseTwoBounces(bool enable);Устанавливает UseTwoBounces. Использовать второй проход отражения непрямого света; по умолчанию true. Может изменить яркость и распределение света. Не обещает бесплатного улучшения качества: проверяйте кадр и время GPU на целевой сцене. Геометрию заново не запекает.
| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
enableНовое значение UseTwoBounces; учитывайте ограничения назначения свойства.