Open 0x4E69676874466F78 opened 1 year ago
Этой хернёй наверное я могу сам заняться, как подойдёт необходимость.
Подразумевается унифицировать схему упаковки https://github.com/SNMetamorph/PrimeXT/issues/160
Подразумевается унифицировать схему упаковки SNMetamorph/PrimeXT#160
Пока что со схемой упаковки я не определился, но я точно могу сказать, что будет какая-то определенная схема, без возможности выбора указать что в каком цветовом канале лежит (опять же, это сделано чтоб не городить лишней логики в шейдере).
Ну так вот, планируется сделать что-то приблизительно такое. Можно в параметрах материала указать вот так:
"metal_map" "1.dds"
"roughness_map" "2.dds"
А можно вот так
"combined_map" "abc.dds" // this texture contains roughness/metalness/etc. in it, packed in different color channels
Первое удобно для непосредственно процесса создания контента. Второе, на этапе когда весь контент уже готов, позволяет эффективно упаковать текстуры и сэкономить приличное количество видеопамяти и дискового пространства.
Для упаковки текстур потребуется скрипт, задача которого позвать Compressonator и сжать в dds/ktx2 При этом скрипт будет ещё звать например libvps (быстро) или imagemagick (медленно), чтобы metal_map и roughness_map упаковать в один файл metalroughness.png На тему в каком канале что хранить это под вопросом, я пока не понял как оптимальнее. Cкрипт ещё будет обходить mat файлы и переписывать строки
на
Это просто пример. Здесь green и red это устное соглашение, по идее не нужно пихать в шейдер лишнюю логику выбора каналов, но если без удорожания можно сделать выборку каналов то это будет неплохо (наверное). Ещё можно схлопнуть в
"metalroughness_map" "${name}_metalroughness.ktx2"
но это мне меньше нравится.