Closed 0x4E69676874466F78 closed 1 year ago
Материалы в принципе медленно обрабатываются даже если текстур мало, но много самих файлов материалов с пустыми записями. Нам бы их как-то кэшировать.
После того изменения со строкой я не уверен в том что материалы действильно загружаются. Особенно вкупе с этим: #332
После того изменения со строкой я не уверен в том что материалы действильно загружаются. Особенно вкупе с этим: #332
Какого изменения со строкой?
@w23 ну где ты убрал тормоза из-за спама принтом при загрузке материалов. Я не помню точный коммит и бегло поиск не даёт его найти.
Можешь привести примеры текстур, которые мы грузим, но не используем? Там только "new"
, или "for"
тоже есть?
Новые я могу условно легко грузить лениво, только если их действительно после патчинга попросили.
Но вот с текстурами, которые нас попросил загрузить движок, а затем не стал нигде использовать, я не знаю, что делать. Потому что я в принципе ожидаю, что движок лучше знает, что ему вдруг может понадобиться.
И да, я всё ещё не понимаю коммент про "не уверен в том, что материалы действительно загружаются". И как к этому относится #332
Забей пока на эту проблему. Лучше посмотри в сторону
И да, я всё ещё не понимаю коммент про "не уверен в том, что материалы действительно загружаются". И как к этому относится https://github.com/w23/xash3d-fwgs/issues/332
Имеется ввиду текстуры.
Скорее всего тут происходит следующее: текстуры загружаются вне зависимости от того, существует ли "for"
текстура, или нет. Мы безусловно загружаем все текстуры для таких материалов, а потом просто дропаем сам материал в конце, если для него не было "for"
текстуры (оставив текстуры загруженными, да).
Это нетрудно починить, откладывая загрузку на самый конец загрузки материала.
Труднее починить случаи, когда движок загрузил текстуры, но не использовал их.
И случаи "new"
материалов тоже труднее, т.к. рендер не знает, где они могут использоваться. Репочёс и более тесная интеграция с патчингом surface нужны, да.
Либо, альтернативно: все материалы загружаются лениво в таблицу, и только потом осуществляется загрузка текстур, которые в принципе могут быть запрошены. Либо даже стриминг текстур сделать в отдельном треде и на трансфер очереди, как у взрослых. Попить будет как не в себя!
Стриминг текстур интересная тема, но это сразу надо смотреть в контексте https://github.com/FWGS/xash3d-fwgs/pull/729 иначе это что-то странное получается, когда есть менеджер текстур/ресурсов а стриминг в вулкане отдельно делается. Там осталось до принятия пуллреквеста сделать:
1. Вернуть R_ShowTextures в ref api
2. Поправить оформление в texturelib
3. Прикрутить текстуры неба
4. Протестировать текстуры-заглушки
5. Решить, стоит ли оставлять оригинал текстуры в ref_ и вообще для чего оно использовалось раньше
Но zgdump уже не в состоянии это доделать судя по всему.
Привлекать движок к стримингу не вижу целесообразным. Движок же ничего не знает про дополнительные RT/Vk-специфичные текстуры, и не должен знать. У движка в голове всё ещё 1998 год на дворе и маленькие простые текстуры.
Если смотреть в будущее и пытаться научить движок (и GL рендер) новому и интересному, то там да, сложнее. Но меня точно не хватит ещё и на это.
Стриминг, ограниченный вулканом, сделать в принципе не так сложно.
Сейчас система материалов подгружает текстуры всех указанных материалов даже тех которые не нужны для карты, это при большом количестве материалов приводит к тому что карты загружаются долго (более 5 секунд любая смена уровня). Требуется перед загрузкой замены текстур из материалов