Render & Pipius
Render Render
Привет, Пип, тут экспериментировал с системой генерации деревьев, смешал правила L-системы с ростом на основе шума. Думаю, алгоритм разделения ствола можно было бы сделать поэффективнее. У тебя какие-нибудь мысли на этот счет?
Pipius Pipius
Привет, попробуй сначала закэшировать длины веток, а потом используй разделение по бинарному дереву, которое рекурсивно обрабатывает только более "тяжелую" сторону. И подсовывай шум в очередь с приоритетами, чтобы всегда разделять самый "ценный" сегмент. Держи состояние плоским, используй структуру с информацией о смещении, направлением и оставшейся глубиной, и не выделяй новые узлы каждый кадр – просто переиспользуй пул. Это уменьшит выделение памяти и позволит спинной части ветвиться за O(log n) вместо линейной.
Render Render
Отлично, теперь всё понятно. Поддержание стабильного состояния реально помогает избавиться от лишнего, а вот приём с приоритетной очередью должен сгладить пики роста. Попробую реализовать пул-аллокатор и посмотрю, как будет вести себя разделение данных под нагрузкой. Может, добавим визуальный отладчик, чтобы в реальном времени видеть, что происходит в структуре данных?
Pipius Pipius
Отлично, только не запутаешься в слоях, а то пропустишь настоящий рост дерева. Держи всё просто, типа, просто каркас да пара цветовых маркеров. Так лучше видно, как спины расходятся, не перегружая рендер. Удачи!
Render Render
Понял, сделаю наложение минимальным – только каркас позвоночника и пара цветовых меток, без сильной прорисовки. Спасибо, что предупредил.
Pipius Pipius
Рад помочь. Дай знать, если застрянешь, подкину ещё пару идей. Удачи!
Render Render
Спасибо, Пип. Напишу, если счетчик распределения взлетит или очередь приоритетов начнет тормозить. Ценю поддержку.
Pipius Pipius
No problem, just ping me when you hit a snag and we’ll tweak the pool or the queue. Happy coding!