Полная переделка системы материалов #160
Labels
clientside
Issue relared to client-side game library
documentation
Improvements or additions to documentation
enhancement
New feature or request
graphics
Related to rendering
studiomodel
Related to studiomodel renderer or MDL file
utilities
Related to utilities: map compilers, model viewer, etc.
Текущее устройство системы материалов имеет большое количество минусов.
Пример 1.1: на прикреплённой фотографии, зелёными галочками помечены модели, которые требуют уникальную текстуру. Красными галочками помечены модели, для которых можно было бы обойтись одной и той же текстурой, а в идеале вообще обойтись без текстуры. Но в текущей реализации, для КАЖДОЙ модели приходится делать уникальную текстуру (потому что материалы там разные)
В идеале, понятия текстур и материалов должны быть отделены друг от друга. То есть, модели/браши должны ссылаться не на какую-либо определённую текстуру, а на материал (как это реализовать - вопрос тоже дискуссионный). И уже в самом материале указаны все нужные текстуры, которые рендер будет использовать.
Такое ошибочное решение было принято в попытках сделать возможность использовать одни и те же текстуры в классической и физически-корректной модели освещения. Однако позже выяснилось, что в них есть фундаментальные различия и подобную совместимость невозможно реализовать на практике. Соответственно, больше нет никакого смысла использовать smoothness, так как roughness является наиболее распространённым в практике.
Да, с точки зрения экономии видеопамяти и дискового пространства - это хорошее решение, но для процесса создания контента, это крайне, крайне неудобно (приходится каждый канал текстуры сохранять в отдельный файл, что-то менять в этих файлах, и упаковывать всё обратно в одну текстуру). В идеале надо иметь возможность в описании материала задавать путь до roughness/metalness/AO/specular intencity текстур - это нужно для процесса создания контента. А когда весь необходимый контент уже создан, в описании материала указать путь до условной combined map, в которой уже упакованы все вышеупомянутые текстуры в нужные цветовые каналы. Также под вопросом схема упаковки нужных параметров в цветовые каналы текстуры. Например, зелёный канал в некоторых форматах сжатия упаковывается более качественно, так что в него имеет смысл паковать roughness, как наиболее вариабельный параметр (metalness, напротив, обычно редко имеет какие-то промежуточные значения помимо 0.0 и 1.0). Также для принятия этого решения имеет смысл оценить, унифицированы ли где-то и как-то подобные схемы упаковки PBR параметров в цветовые каналы текстур (см. MRAO, RMA, ORM).
В планах создать внутриигровой редактор материалов на базе ImGui. Помимо базового функционала изменения всяких настроек у материалов прямо налету, будет также функция перезагрузки описаний материалов из файлов прямо в игре. Также, должна быть возможность менять путь до карт нормалей/PBR/люма-текстур и так далее. Всё это крайне важные вещи, которые экономят огромное количество времени создателей контента.
Это также плохо с точки зрения удобства разработчиков. Для нового формата материалов планируется использовать JSON ради унификации. Это позволит избавиться от кода парсинга собственного неунифицированного формата, и в перспективе упростит создание каких-либо инструментов для работы с материалами.
В новой реализации стоит этот момент переработать, сделать какой-то прекэш материалов, но и оставить возможность загружать новые материалы прямо на ходу, если вдруг что-то не будет прописано в прекэше.
The text was updated successfully, but these errors were encountered: