Engine и Godot (это те, в которых я смотрел), два разных меша могут использовать один и тот же материал. И собственно сам вопрос. Требует ли такой подход, чтобы у каждого меша были одинаковые вершинные атрибуты? Или они постоянно обновляются в реалтайме? Просто в вулкане будет очень ресурсозатратно пересоздавать пайплайн для того, чтобы обновить атрибуты
https://github.com/fefemf10/Engine/tree/master/Engine
https://medium.com/@lordned/unreal-engine-4-rendering-part-2-shaders-and-vertex-data-80317e1ae5f3
Короткий ответ - нет, но лейаутов данных очень немного. Один для статических мешей, второй для мешей со скелетной анимацией, третий для декалей, и еще пару по мелочи на весь движок. Эти лейауты связуют данные меша и сам шейдер. Подменять лейауты в рантайме нельзя, шейдер компилируется с определенной разметкой данных. Поэтому подход просто в том, чтобы определить несколько разметок заранее, заранее скомпилировать нужные вариации пайплайнов (один материал может иметь множество пайплайнов под разные сценарии внутри себя) и использовать их в рендере.
четвертый для партиклов, пятый для UI, шестой для морфинговых мешей, седьмой для физики ткани...
Там их всего штук 5
ну морфинг сто процентов требует особого формата
в разборе кадра elden ring написано что у них свой формат для ткани которая под двумя слоями ткани
кстати там всратый формат вообще
индексы в текстуру позиций там зачем-то в нормализованном формате, но денормализуются в шейдере
Обсуждают сегодня