Производительность геометрических нод¶
Геометрические ноды могут эффективно обрабатывать большие объёмы данных, но производительность в значительной степени зависит от структуры деревьев нод и объёма обрабатываемых геометрических данных.
На этой странице изложены общие принципы и методы повышения производительности.
Общие принципы¶
Сводите к минимуму объём обрабатываемой геометрии.
Избегайте ненужных вычислений или повторных расчётов.
По возможности отдавайте предпочтение простым операциям перед сложными.
Эффективно используйте поля, чтобы отложить вычисления до тех пор, пока они не станут необходимыми.
Уменьшение сложности геометрии¶
Большое количество геометрии является одной из наиболее распространённых причин снижения производительности.
По возможности используйте меши с более низким разрешением.
Снизьте уровень подразделения.
Ограничьте количество генерируемых экземпляров или точек.
Используйте ноду „Realize Instances“ только при необходимости.
Сохранение геометрии «лёгкой» обеспечивает более быстрое вычисление по всему дереву нод.
Использование экземпляров вместо реальной геометрии¶
Создание экземпляров значительно эффективнее, чем дублирование геометрии.
Для размещения повторяющейся геометрии, – используйте ноду „Instance on Points“.
Избегайте преобразования экземпляров в реальную геометрию, если это не требуется.
Выполняйте операции с экземплярами до того, как они будут реализованы.
Использование экземпляров снижает потребление памяти и повышает скорость вычисления.
Ограничение затратных операцией¶
Некоторые ноды требуют бо́льших вычислительных затрат, чем другие.
Логические операции могут быть медленными на плотных мешах.
Использование нод определения близости и трассировки лучей может быть затратным в зависимости от размера входных данных.
Зоны симуляции оценивают каждый кадр и могут создавать дополнительную вычислительную нагрузку.
Используйте данные ноды с осторожностью и по возможности ограничивайте размер входных данных.
Контроль оценки полей¶
Поля обрабатываются отложенно, но неэффективное использование всё же может повлиять на производительность.
Избегайте многократного пересчёта одного и того же поля.
Сохраняйте промежуточные результаты при повторном использовании.
Используйте ноду „Capture Attribute“ для кэширования значений.
Эффективное использование полей позволяет сокращать избыточные вычисления.
Использование выделения для ограничения работы¶
Ограничьте операции только необходимыми элементами.
По возможности используйте в нодах вход „Selection“.
Избегайте применения операций ко всей геометрии, если модификации требует только её часть.
Это уменьшает количество обрабатываемых элементов.
Оптимизация структуры дерева нод¶
Хорошо структурированные деревья нод проще оценивать эффективно.
Группируйте связанные операции в нодовые группы.
Избегайте лишних нодовых цепочек.
Удаляйте неиспользуемые ноды и соединения.
Обеспечьте простой и прямой поток данных.
Более простые графы, как правило, работают быстрее/лучше.
Запекание (baking)¶
Запекание может в значительной степени повышать производительность за счёт сохранения результатов ресурсоёмких вычислений.
Используйте функцию запекания симуляции для кэширования результатов с течением времени.
Запекайте геометрию, которой не требуется обновление в каждом кадре.
Избегайте пересчёта сложных нодовых деревьев, если результаты могут быть использованы повторно.
При запекании теряется гибкость ради производительности, поэтому наиболее полезной она является после завершения всех необходимых настроек.
Лимит стека геометрических нод (geometry nodes stack limit)¶
Оценка геометрических нод ограничена лимитом стека. Максимальный размер стека вызовов можно изменить в пользовательских настройках, если доступны дополнительные ресурсы.
Из-за слишком сложной структуры нод может быть достигнут этот предел вычислительной сложности.
Рекурсивные схемы или чрезмерная вложенность групп нод могут увеличить использование стека.
Если будет достигнут лимит стека, вычисление может завершиться неудачей или дать неполные результаты.
Чтобы этого избежать:
Уменьшите глубину вложенности нодовых групп.
Упростите чрезмерно сложные нодовые цепочки.
По возможности разделяйте крупные схемы на более мелкие, отдельные компоненты.
Настройки вычисления и вьюпорта¶
На производительность также могут влиять и настройки вьюпорта.
Снижайте уровни подразделения для вьюпорта.
Во время работы используйте более простые режимы затенения.
Отключайте ненужные модификаторы во время редактирования.
Снижение нагрузки на вьюпорт улучшает интерактивность.
Профилирование и отладка¶
Для выявления «камней преткновения»:
Для поиска «медленных» нод используйте наложение таймингов.
Временно выключайте ноды, чтобы изолировать медленно работающие операции.
Уменьшайте размеры входных данных для проверки влияния на производительность.
Для сравнения результатов используйте более простую геометрию.
Итеративное тестирование помогает выявлять проблемы с производительностью.
Примечания¶
Производительность зависит от оборудования, особенно от центрального процессора и пропускной способности памяти.
Создание сложных процедурных эффектов требует баланса между детализацией (качеством) и скоростью работы (производительностью).
Ранняя оптимизация помогает избегать дорогостоящей переделки в будущем.