Перейти к основному содержимому

Массивы расчетов видимости

Not (yet) implemented feature

Некоторые функции, описанные в настоящем документе, более не поддерживаются, либо начнут поддерживаться в будущем.

Массивы расчетов видимости - элемент движка определяющий необходимый данные для осуществления расчетов видимости определенного объекта. Идентифицируется при помощи ID (int32_t).

Идея

Некоторые элементы движка (такие как камера, источники света) имеют свои фрустумы (пирамиды видимости), и для рендера некоторых объектов (например статическая геометрия и растительность) необходим расчет видимости для каждого фрустума. Но каждый расчет имеет свои данные, актуальные только для него.

Если сделать расчет видимости для одного фрустума, то следующий расчет для другого фрустума приведет к изменению данных видимости для предыдущего фрустума, а значит необходимо считать видимость и тут же осуществлять рендер, что является неэффективным для real-time приложений.

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

Данные

Данные массива расчетов видимости зависят от объектов расчетов, но в большинстве случаев вся суть хранимых данных сводится к определению (bool) видимости объекта и его элементов.

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

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

Использование

Как правило, менеджеры объектов создают первичные массивы расчетов (для камеры или по умолчанию), все остальные должны быть созданы явно посредством API менеджера соответствующих объектов. Функция создания создаст новый массив расчетов видимости и вернет его ID, по которому можно будет его использовать.

После того как массив расчетов видимости больше не нужен, необходимо сообщить менеджеру соответствующих объектов о удалении массива расчетов видимости по полученному ранее ID.