Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

materials: loading textures even when they are not needed #372

Closed
0x4E69676874466F78 opened this issue Jul 9, 2022 · 11 comments · Fixed by #531
Closed

materials: loading textures even when they are not needed #372

0x4E69676874466F78 opened this issue Jul 9, 2022 · 11 comments · Fixed by #531
Milestone

Comments

@0x4E69676874466F78
Copy link
Collaborator

0x4E69676874466F78 commented Jul 9, 2022

Сейчас система материалов подгружает текстуры всех указанных материалов даже тех которые не нужны для карты, это при большом количестве материалов приводит к тому что карты загружаются долго (более 5 секунд любая смена уровня).
Требуется перед загрузкой замены текстур из материалов

  1. проверить их наличие в карте, если текстуры в карте нет то не грузить, если есть то загрузить и не выгружать пока на следующей карте они используются (проверить при переходе на другую карту).
  2. закэшировать текстуры спрайтов, моделей (при желании можно так же проверять какие модели используются и не грузить их текстуры) и не грузить повторно при смены карты.
@0x4E69676874466F78
Copy link
Collaborator Author

0x4E69676874466F78 commented Jul 31, 2022

Материалы в принципе медленно обрабатываются даже если текстур мало, но много самих файлов материалов с пустыми записями. Нам бы их как-то кэшировать.

@w23 w23 added this to HLRT Feb 8, 2023
@0x4E69676874466F78
Copy link
Collaborator Author

После того изменения со строкой я не уверен в том что материалы действильно загружаются.
Особенно вкупе с этим: #332

@w23
Copy link
Owner

w23 commented Feb 16, 2023

После того изменения со строкой я не уверен в том что материалы действильно загружаются. Особенно вкупе с этим: #332

Какого изменения со строкой?

@0x4E69676874466F78
Copy link
Collaborator Author

0x4E69676874466F78 commented Feb 17, 2023

@w23 ну где ты убрал тормоза из-за спама принтом при загрузке материалов. Я не помню точный коммит и бегло поиск не даёт его найти.

@w23
Copy link
Owner

w23 commented Feb 20, 2023

Можешь привести примеры текстур, которые мы грузим, но не используем? Там только "new", или "for" тоже есть?
Новые я могу условно легко грузить лениво, только если их действительно после патчинга попросили.
Но вот с текстурами, которые нас попросил загрузить движок, а затем не стал нигде использовать, я не знаю, что делать. Потому что я в принципе ожидаю, что движок лучше знает, что ему вдруг может понадобиться.

@w23
Copy link
Owner

w23 commented Feb 20, 2023

И да, я всё ещё не понимаю коммент про "не уверен в том, что материалы действительно загружаются". И как к этому относится #332

@0x4E69676874466F78
Copy link
Collaborator Author

@0x4E69676874466F78
Copy link
Collaborator Author

И да, я всё ещё не понимаю коммент про "не уверен в том, что материалы действительно загружаются". И как к этому относится #332

Имеется ввиду текстуры.

@w23
Copy link
Owner

w23 commented Apr 23, 2023

Скорее всего тут происходит следующее: текстуры загружаются вне зависимости от того, существует ли "for" текстура, или нет. Мы безусловно загружаем все текстуры для таких материалов, а потом просто дропаем сам материал в конце, если для него не было "for" текстуры (оставив текстуры загруженными, да).
Это нетрудно починить, откладывая загрузку на самый конец загрузки материала.

Труднее починить случаи, когда движок загрузил текстуры, но не использовал их.
И случаи "new" материалов тоже труднее, т.к. рендер не знает, где они могут использоваться. Репочёс и более тесная интеграция с патчингом surface нужны, да.

Либо, альтернативно: все материалы загружаются лениво в таблицу, и только потом осуществляется загрузка текстур, которые в принципе могут быть запрошены.
Либо даже стриминг текстур сделать в отдельном треде и на трансфер очереди, как у взрослых. Попить будет как не в себя!

@w23 w23 added this to the Materials milestone Apr 23, 2023
@0x4E69676874466F78
Copy link
Collaborator Author

Стриминг текстур интересная тема, но это сразу надо смотреть в контексте FWGS#729 иначе это что-то странное получается, когда есть менеджер текстур/ресурсов а стриминг в вулкане отдельно делается.
Там осталось до принятия пуллреквеста сделать:

1. Вернуть R_ShowTextures в ref api
2. Поправить оформление в texturelib
3. Прикрутить текстуры неба
4. Протестировать текстуры-заглушки
5. Решить, стоит ли оставлять оригинал текстуры в ref_ и вообще для чего оно использовалось раньше

Но zgdump уже не в состоянии это доделать судя по всему.

@w23
Copy link
Owner

w23 commented Apr 23, 2023

Привлекать движок к стримингу не вижу целесообразным. Движок же ничего не знает про дополнительные RT/Vk-специфичные текстуры, и не должен знать. У движка в голове всё ещё 1998 год на дворе и маленькие простые текстуры.

Если смотреть в будущее и пытаться научить движок (и GL рендер) новому и интересному, то там да, сложнее. Но меня точно не хватит ещё и на это.

Стриминг, ограниченный вулканом, сделать в принципе не так сложно.

@w23 w23 moved this to 🔖 Ready in HLRT May 1, 2023
@w23 w23 moved this from 🔖 Ready to 🏗 In progress in HLRT May 4, 2023
@w23 w23 mentioned this issue May 4, 2023
1 task
@w23 w23 moved this from 🏗 In progress to 👀 In review in HLRT May 4, 2023
@w23 w23 closed this as completed in #531 May 4, 2023
@github-project-automation github-project-automation bot moved this from 👀 In review to ✅ Done in HLRT May 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants