не только постройку самого меша, но и математические расчёты. Последнее было решено распаралелить по потомкам с помощью джобов, а вот с билдингом меша с уже готовыми данными пока проблема. Меш апи в юнити работает только в главном потоке, и до этого я думал просто делать делеи между генерацией чанков, но сейчас задумался об альтернативах. Они есть? Насколько эффективно для этого было бы использовать gpu и возможно ли вообще? Может есть ещё какие варианты
Можешь как варианты использовать compute shaders, если хочешь для вычислений использовать видеокарту Правильно говоришь что узкое горлышко здесь api unity Самый оптимальный способ: сделать вычисления на бекграунде (task, jobs или compute shaders), а потом передать на главный поток массив данных (вершины, треугольники)и сделать меши
Блин, а я почему-то думал, что compute shader может быть как альтернативный вариант для постройки меша. То есть нет смысла запариваться с шейдерами, если уже джобами идёт просчёт данных? В любом случае мейн потоку нужно будет строить меш в итоге?
О, знакомая задача, пару лет я на неё убил😱 Сперва надо составить алгоритм, как вообще строится меш. Понять, лучший ли это алгоритм. А еще раньше, нулевой шаг - понять, что такое меш, из чего он состоит и как с ним работать. Вот на картинке меш. Четыре треугольника. 6 точек или 8 точек? Если ты выбираешь 8 точек (Unique vertices), то у тебя есть возможность делать разные нормали на границе, т.е. делать острые углы с точки зрения освещения. Алгоритм построения проще. Если ты выбираешь 6 точек (Shared vertices), то у тебя общие нормали, "плавные" углы с точки зрения света, сложнее алгоритм. Выгода в производительности: финальное количество вершит сокращается почти вдвое. Еще до организации потоков, тебе предстоит решить задачи алгоритмов и структур данных. Начать неплохо бы с написания своего тестового стенда: собственного профайлера и разных вариантов симуляций процедурного мира
Обсуждают сегодня