Texture streaming что это
Обновление и новые стикеры!
Counter-Strike: Global Offensive получила очередное обновление. В 50 мегабайтов патча Valve напихала немало интересного, и CS.MONEY расскажет тебе о главных фишках апдейта.
Есть еще парочка изменений, вроде обновления Steamworks SDK, но они не значительны. Весь чейнджлог патча можно разделить на три группы: QoL-изменения, то есть мелкие правки, косметика и технологические изменения.
Изменения
Косметические изменения — это, конечно же, новая капсула со стикерами по “вахе”. Фанаты вселенной без проблем узнают в наклейках отсылки к знаковым персонажам: ультрамаринам-космодесантникам, тиранидам и самому Императору. Те, кто с вселенной не знаком, могу почитать о ней в нашем блоге.
Texture Streaming
И наконец технические изменения, а именно Texture Streaming. Всплывающая подсказка в настройках игры гласит: “Texture Streaming откладывает загрузку текстур высокого разрешения до тех пор, пока они не понадобятся для рендеринга”. Не очень понятно, да?
В обычных условиях, при загрузки уровня или новой игровой зоны, игровой движок подгружает в память видеокарты все текстуры локации. Если памяти достаточно, то все круто. Если нет — начинаются подгрузки и количество кадров в секунду падает.
Texture Streaming меняет этот алгоритм. Вместо единовременной загрузки всех текстур в память, они подгружаются постепенно, при надобности. Из-за этого снижаются требования к запасам памяти видеокарты. В итоге можно добиться загрузки текстур высокого разрешения без заметного влияния на производительность.
Есть и минусы. Если скорость подгрузки маленькая, то текстуры не успеют “перекинуться” с жесткого диска и будут подгружаться прямо перед глазами. Выглядит это очень не круто.
Кому нужно подрубать Texture Streaming?
Очевидно, эта функция нужнее всего тем, кто использует бюджетные и старые видеокарты. Или встроенные графические решения, вроде Radeon RX Vega 8, распаянный на процессорах AMD. По идее, это должно повысить производительность при сохранении качества картинки.
Но не все так просто. Блоггер 3kliksphilip протестировал эту функцию когда она была еще в бета-версии игры и не выявить увеличения производительности при использовании встроенного видеоядра Radeon. Разница по кадрам в секунду была в рамках статистической погрешности.
Значит ли это, что Texture Streaming бесполезна? Нет. Обладателям видеокарт с малым запасом памяти все равно стоит ее включить. В худшем случае не будет заметно никаких изменений, в лучшем — Counter-Strike: Global Offensive станет работать быстрее.
Texture streaming что это
С обновлением 0.10.1 в Калибр добавили технологию потоковой загрузки (стриминг) текстур. Она призвана существенно ускорить загрузку боя у игроков со слабыми компьютерами — тех, кто играет на настройках ниже средних. Впрочем, в той или иной степени положительные изменения коснутся всех игроков.
Как это работает
Нововведение делится на две части: собственно технологию потоковой загрузки и новую настройку в лаунчере, которая устанавливает максимальное качество текстур на компьютере игрока.
Стриминг текстур — это технология, которая позволяет постепенно загружать графику игры прямо во время геймплея. Вы могли видеть подобные решения в других проектах: это когда в начале игры на короткое время здания, модели игроков и другие объекты не полностью детализированы или размыты, а затем полноценно отображаются.
В Калибре это реализовано так, что для каждой текстуры в её самом детализированном варианте рисуется подменная текстура размером 4×4 пикселя. Эти «лёгкие» текстуры — первое, что загружается, когда игрок нашёл себе команду и уже видит таймер обратного отсчёта до начала матча.
Если за то время, пока игрок наблюдает загрузочный экран, его компьютер не загрузил более качественные текстуры, то матч начинается с тем, что есть, — текстурами низкого разрешения, но полностью работоспособной игрой. Дальнейшая детализация текстур будет происходить уже в фоновом режиме до тех пор, пока они не достигнут уровня, который был выбран в настройках лаунчера.
Обновление CS:GO от 14.05.2020 (Beta)
Сегодня ночью вышло очередное обновление кс го от 14.05.2020. Разработчики выпустили новую бета-версию игры, в которую добавили экспериментальную опцию настройки текстур. Данная опция служит в роли оптимизации FPS для более слабых ПК. Подробности внутри статьи.
Сегодня ночью вышло обновление CS:GO от 14.05.2020 (по времени VALVE апдейт от 13 мая 2020). Была добавлена новая бета-версия игры с экспериментальной опцией настройки графики. Подробности ниже.
texture_streaming_beta
Новая бета-версия “texture_streaming_beta” доступна на вкладке «Бета-версии» CS:GO. Эта сборка совместима с текущим соревновательным режимом для всех.
Детальная инструкция о том, как перейти на бета-версию CS:GO можно найти тут.
Разное
VALVE решили всё же добавить в игру больше оптимизации в графике, тем самым увеличив кол-во FPS. Скорее всего, представленный тип обработки текстур необходим для скорого перехода CS:GO на Source 2.
Texture Compositor
Texture Streaming
Личный тест
Чтобы убедиться в каком либо прибавлении FPS от новой опции настройки графики CS:GO, воспользуется картой сообщества FPS Benchmark. Подписаться на неё можно тут, это позволит вам протестировать данное обновление у себя.
FPS Benchmark
Данная карта позволяет проверять свой FPS в CS:GO, изменяя параметры игры одним нажатием кнопки
FPS в обычной версии CS:GO (1280×960)
FPS в версии texture_streaming_beta (1280×960)
Как видите, в моём случае, на карте FPS Benchmark среднее кол-во FPS в новой бета-версии CS:GO было немного ниже, а должно было быть наоборот.
После тестирования новой опции графики в игре статья будет обновлена.
Texture streaming что это
В преддверии выхода 267ого билда, решил перевести сообщения одного из CDT-разработчиков NS2 (matso [forums.unknownworlds.com] ) на форуме UWE, который поведал о найденных проблемах и путей их решения в движке NS2.
Сразу прошу, за косяки в переводе не бейте, а комментируйте, ставьте лайки, подписывайтесь xDDD
Поехали!
Одной из задач для билда 267 было нахождение причины почему в NS2 очень низкое качество времени кадра (frame-time) или «Почему 90 fps ощущаются как 30».
Оказалось, что этому есть несколько причин. Рассмотрим их последовательно.
Во-первых, пара слов о Стримере текстур в NS2. Стример создает из всех используемых текстур их версии с очень низким разрешением (low-res), которые занимают очень мало места в ОЗУ видеокарты (VRAM), так что их там можно держать постоянно, не выгружая. Затем, когда вы хотите загрузить текстуру, сначала используется её low-res версия, пока фоновый стример подгружает текстуру высокого разрешения (hi-res) с файловой системы.
Таким образом, GPU не простаивает, и в худшем случае, пару мгновений видны прогружающиеся текстуры.
Тем не менее, отсюда вылезло несколько проблем.
Второй проблемой является то, что менеджер текстур использует драйвер в то же время, когда главный рендер-поток (render thread) что-то рендерит. Так как рендер-поток является «узким горлышком», это означает, что менеджер текстур тормозит весь процесс рендеринга.
Исправить легко, достаточно добавить флаг, чтобы рендер-поток сообщал менеджеру текстур, чтобы тот подождал, пока идет процесс рендеринга. Это в свою очередь означает, что менеджер текстур не сможет также быстро загрузить нужные текстуры, поэтому иногда вы будете видеть те самые low-res текстуры почаще, но…
Третья проблема оказалась весьма серьёзной. NS2 использует размеченные файлы (memory-mapped files), чтобы эффективнее их подгружать. Это работает очень хорошо, если файл, который вы ищете, уже находится в буфере файловой системы (в этом случае чтение файла в 5Mb почти не занимает времени – всего лишь переключение нескольких внутренних регистров и всё – у вас данные файла).
Обычно стример текстур берёт размеченный файл, находит начало данных текстуры и передает этот адрес драйверу видеокарты. Чрезвычайно быстро и эффективно – если только файл находится в буфере файловой системы.
Но если нет, то загрузка текстуры займет в 10 000 раз больше времени, 100+ мс, вместо 0.01 мс. И графический драйвер будет всё это время занят (locked up), а GPU простаивать, поэтому эти 100+ мс добавляются к вашему времени кадра.
Не очень хороший расклад. К счастью, исправить не сложно – сначала надо просмотреть всю размеченную область через фоновый загрузчик, чтобы убедиться, что вся область загрузилась (а так как это фоновый поток, то он не влияет на время кадра), и только потом вызвать драйвер карты.
Вы спросите, почему раньше всё это не обнаружилось, но это возможно обнаружить только если требуемые файлы вне буфера файловой системы… а если вы разрабатываете NS2, то эти файлы всегда там.
В CS:GO нашли оптимальные настройки для максимального FPS. Ставить все на минималки не нужно
Делаем 300 FPS.
FPS – самый важный параметр в CS:GO. Чем больше кадров в секунду – тем плавнее двигаются модельки противников. При низкой частоте кадров игра и вовсе превращается в слайд-шоу, в которое невозможно играть.
Стартовал топовый турнир с NAVI, VP и Gambit! Го смотреть
Для повышения FPS, как правило, понижают все настройки графики до минимальных. Но ютубер ALBU провел исследование и выявил оптимальные настройки графики для максимального FPS в CS:GO. Небольшой спойлер – там почти нет низких настроек.
Стриминг текстур. Если игра установлена на SSD, то данный параметр ничего не поменяет. Но если игра на жестком диске, то возможна небольшая потеря FPS при включенном стриминге, так как текстуры будут прогружаться медленно. Поэтому его рекомендуется выключить.
Повышенный контраст игроков – опция, благодаря которой вы будете лучше видеть противников в темных местах карты, теряя при этом до 3% FPS. При этом после добавления этой возможности многие игроки жаловались на серьезные просадки FPS при наводке на модель противника. Сейчас эта проблема частично устранена, поэтому выбор за вами.
Многоядерная обработка – крайне важный параметр. Он обязательно должен быть включен, это дает прирост до 50% FPS. Количество кадров будет зависеть от числа ядер процессора – чем их больше, тем больше FPS.
Часть параметров никак не влияют на FPS в игре – их можно устанавливать на максимальные значения:
На собственном опыте могу сказать, что установка настроек из видео повысила мне FPS с 120-130 до 200 за счет включения многоядерной обработки. А с какими настройками играете вы?