пятница, марта 28, 2008

Оптимизация рендера Virtools

Сегодня запостил первую альфа версию плагина для оптимизации процесса кулинга для виртулз. Работает на основе KD –Tree иерархии сцены для статической геометрии.
Уже научили:
- Расчет видимости в синхронном с behavior process потоке с возможностью регулирование приоритета
- Статус видимости объектов сохраняется
- Дерево может быть построено исходя из следующих критериев: для группы, для соллекции, для всех существующих рут объектов. Иерархии дочерних объектов сохраняются. Камеры, порталы, плейсы, свет и прочие спец объекты игноряться.
- Возможность выбора глубины рекурсии и эвристического алгоритма для оптимизации базового KD Tree (AABB) - CAH (Count Heuristic ) и PAH (Polygon Heuristic), а так же возможность использовать оптимизацию по минимальной площади (Inflation Square)
- Отладка, возможность просмотреть AABB любого узла дерева, иерархии уровней.

Еще предстоить :
- Сериализация построенного дерева в XML
- Объединение Alpha/MultyMesh LOD и Culling Manager
- Возможность выполнять построение (обновление) дерева в потоке
- Возможность использование не только для статической геометрией


Результаты на тестовом городе в 3500 меня удовлетворили почти полностью :) На моем 1,8 древнющем атлоне с 512 мб озу и карте 5600 fx без оптимизации ~120 fps при ~260 объектах в видимом кадре (на кулинг 6,1 мс), с оптимизацией ~230 fps при том же цисле объектов (на кулинг 0,65мс). При тех же самых условиях 2,2 интел на работе тратить 5,4мс и 0,35мс соответсвенно.
В планах скрестить его с нашим LOD менеджером и попробовать сделать более удобные средства настройки и отладки.

http://www.virtools.ve-group.ru/index.php?showtopic=323&pid=1429&st=0&#entry1429
Отправить комментарий