Per aspera ad astra или RoadMap по вашей будущей игре. Godot 4 C# Часть 13 "Шейдеры".
Слово «шейдеры» поначалу у меня вызывало полный ступор. Зачем нужна эта великолепная вещь, было максимально непонятно, пока я не начал искать способы обойти ограничения с освещением, о которых писал в предыдущей статье.
В целом, шейдеры — это код, который выполняется на видеокарте и позволяет описать поведение вершин модели или пикселей текстуры.
Для примера можно взять задачу по созданию волн на море. Изначально это просто 3D-фигура с набором вершин. Благодаря шейдеру вершин можно сделать так, чтобы вершины двигались по определённому алгоритму и имитировали поведение волн на море.
Пример второй: необходимо создать в игровом мире эффект обводки всего и вся, как в Borderlands. С этим тоже нам поможет шейдер — он вычислит вершины и перекрасит пиксели в чёрный цвет по границам объектов.
Пример третий: создание пиксельного стиля для 3D-проекта в изометрии — тоже шейдер.
Пример четвёртый: разработка следов на песке или снеге, следов от гусениц или колес.
В общем, понимание шейдеров очень важно для создания уникальных стилизованных проектов. С их помощью можно добиться потрясающих результатов в атмосфере и стиле игры.
В следующей статье мы будем затрагивать VFX-эффекты — они тоже активно используют шейдеры, что позволяет создавать различные эффекты взрывов, использования способностей и т.д.
В Godot 4 доступно два подхода к работе с шейдерами — графический и код.
В графическом редакторе шейдеров мы работаем с ними как с набором различных заготовленных блоков (подобие Blueprints в Unreal Engine или материалов в Blender).
В кодовом варианте мы пишем код вручную, что может показаться сложным, но даёт возможность вставлять куски кода в различные реализации, получая новое поведение. Ну и код, как всегда, более гибок и структурирован (особенно при работе с большими файлами).
Есть официальный ресурс для шейдеров — godotshaders.com, на котором можно найти для себя что-то полезное. Описание по языку можно посмотреть здесь.
Лично я предпочитаю использовать графический редактор, но иногда применял и код. Не ограничивайте себя!
Спасибо за внимание!