Как стать автором
Обновить

Комментарии 9

На последнем скрине справа-посередине на коричневом стволе воксели «кроны дерева» как-то странно выглядят. Будто ошибка Z-буфера.
Да и слева тоже.
Да и на скриншоте, где много леса в мелком масштабе, можно разглядеть странность закраски кроны. Видимо, фича.
Полупрозрачность кроны же.
Если я когда-нибудь реализую многопоточное сохранение и загрузку фрагментов, то преобразование плоского массива в разреженное октодерево и обратно может быть вполне возможным вариантом для экономии памяти.

Забей. Все, кого я читал и кто на практике пытался прикрутить к воксельному движку октодерево, от него отказывались. Для сжатия чанков используй RLE ― примитивно и эффективно за счёт линейного доступа к памяти.


У меня даже была мысль, что можно данные чанков хранить в памяти в сжатом виде и распаковывать/запаковывать на лету когда надо. Попробовать не довелось, т.к. в моём движке блоки хранились не в отдельных чанках, а большом общем для всего видимого мира закольцованном 3д-массиве.

Изначально я использовал наивную версию создания мешей: просто создавал куб и отбрасывал вершины, не касающиеся пустого пространства. Однако такое решение было медленным, и при загрузке новых фрагментов создание мешей оказывалось даже более узким «бутылочным горлышком», чем доступ к файлу.

Основной проблемой было эффективное создание из фрагментов рендерящихся VBO, но мне удалось реализовать на C++ собственную версию «жадного создания мешей» (greedy meshing),

Тут я не совсем понял, что именно в итоге получается. Вот картинка:
http://i.piccy.info/i9/3ed4fab4365bebb9fb194162e75f4b84/1573063991/63783/1346249/collider_mesh.jpg Голубыми линиями показана сетка, которая рендерится, а зелёными ― упрощённая модель для физического движка. У тебя в итоге получается какой вариант?


Когда решал, стоит ли заморачиваться и оптимизировать сетку для ренедринга, для проверки взял и продублировал всю геометрию. Вершин и треугольников стало в 2 раза больше, но fps не уменьшился. Я тогда сделал вывод, что если стану сетку упрощать, то генерировать её буду дольше, а fps нихрена в итоге не увеличится.

При рендеринге сцены из 5x1x5 фрагментов в окне, не развёрнутом на весь экран, я получаю в среднем около 140 FPS (с отключенным VSYNC).

На каком железе?

Пардон, забыл, что это перевод. Значит, качественный перевод.

Это перевод не от автора статьи.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории