DalerLiss
@DalerLiss
Ребенок в большом теле

Что стоит изучить чтобы написать ландшафтный шейдер для воксельного и сглаженого-воксельного мира?

Делаю игру песочницу наподобие Майнкрафта или Винтаж стори, однако кубизм откровенно надоел, поэтому ландшафт будет генерироваться как в 7 days to die, и если с генерацией меша проблем нет, быстро со всем разобрался и уже написал основу, то вот с наложением текстур длительный стопор, так как с написанием шейдеров никогда до этого не сталкивался.
Пока только разобрался с мелкими отдельными моментами, но этого явно мало, поэтому возник вопрос, какие темы мне нужно изучить чтобы добиться необходимого результата, а так как это разовая необходимость и писать нечто подобное я больше не собираюсь, то полноценное изучение шейдеров не рассматриваю, ещё как минимум за неимением достаточного количества свободного времени на это.
Также имеется сложность в том, что в будущем количество игровых блоков будет увеличиваться, а сами текстуры я планирую делать 1024х1024, поэтому атлас тут явно мимо. Пока что вскрыл пару скаченных исходников с процедурно-генерируемым воксельным ландшафтом, разобраться в работе их систем текстурирования не получилось, но увидел что шейдеры вроде как хорошо сообщаются с C# скриптами, так как список блоков записывается в генератор мира из папки с блоками при старте, а в их файле типа Scriptable object вместо материалов указываются текстуры для каждой из сторон со всеми картами и указываются настройки (такие как уровень воздействия карт металлики и высот) так же как в шейдерах, это как минимум значит, что шейдер находящийся на мешах чанков получает все нужные параметры и правильно их использует.

Надеюсь найдутся люди которые смогут если и не помочь, то хоть подсказать в какую сторону стоит копать, заранее спасибо.

Для визульного обьяснения что значит "сглажено-воксельного мира" прилагаю скриншоты:
На первом чисто "Майнкрафтовский" генератор, хотя кубы в моем случае естественно тоже будут использоваться, например для стен;
На втором я сгладил эти кубы исходя от октаэдра, однако в будущем такой тип останется только при установке блока игроком, а изначальная генерация будет еще более сглаженной (до трех блоков в длину на метровый подъем, это даст еще 4 возможных угла между 0 и 90 градусами не считая их и 45 градусов).
63901969b07c2902882388.jpeg 63901984781d3456531382.jpeg

На данный момент я пытаюсь разобраться в работе шейдера террейна, там вроде нужный принцип, правда только проекцией сверху, поэтому лишь двумерный, но самостоятельно без базы понять это невероятно сложно, в инете я не могу найти ничего подходящего, как минимум пока что, поэтому если кто-нибудь знает, статью или в идеале видео на любом языке мира где пишут кастомный, пусть и слабенький террейн, то прошу поделится ссылкой, я уже там как-нибудь разберусь что к чему. Мне главное понять как можно управлять шейдером из скрипта, а пока что буду ковырять скачанные исходники в котором это как-то работает.
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Ну не выйдет изучить шейдеры только чуть-чуть. Это как "мне надо выучить только циклы" и дальше я смогу написать свою программу. С таким подходом остаётся надеяться, что кто-то уже написал это для вас.
Да и с недавнего времени стало модно писать на computeshader тем самым позволяя многое делать непосредственно на GPU, например ту же скошенную геометрию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы