стриминг текстур что это

Эмуляция компьютера: интерпретатор CHIP-8, графика и стриминг текстур

В прошлый раз мы остановились на том, что создали интерпретатор CHIP-8 и оснастили его системой для формирования кадров. Видеть то, что должно попасть на экран, можно в консоли. Теперь же мы собираемся взять то, что формирует интерпретатор, вынести это за пределы консоли и показать на экране.

Решать вышеозначенные задачи мы будем с помощью библиотеки SDL, которая умеет выводить графические данные на экран, принимать то, что вводит пользователь, и проигрывать звуки. Настройка SDL-проекта может вызвать некоторые сложности. Поэтому я рекомендую перед началом работы с библиотекой почитать мой материал о ней.

Мы планируем использовать этот класс как SDL-окно RAII, которое получает актуальные сведения о текстурах и выполняет рендеринг. Конструктор принимает показатель масштабирования окна, так как если попытаться вывести на экран изображение размером 64×32 пикселя без масштабирования, оно окажется очень маленьким.

Теперь нам надо отредактировать код главного цикла, сделав так, чтобы в нём использовалось бы новое окно.

При создании RGB-изображений данные красного (red), зелёного (green) и синего (blue) цветовых каналов каждого пикселя часто идут в памяти друг за другом. Поэтому простое добавление 1 к адресу памяти уже необязательно позволит нам получить значение, соответствующее следующему пикселю.

Нам, прежде чем мы сможем это обсудить, понадобится ввести некоторые новые термины. То, что называется «stride» или «pitch», представляет собой ширину строки изображения в байтах. В данном случае это — 3 * width_px (3 * ширина в пикселях). Мы можем говорить о байтовой ширине строки изображения и в смысле её отношения к цветовым каналам. Для того чтобы перейти от одного значения красного цвета (канала) в некоем пикселе к такому же значению для следующего пикселя, мы должны прибавить к адресу этого первого значения 3 (это называется «0-dimension stride»). То же самое справедливо и для синего, и для зелёного каналов. При этом каждое отдельное значение, как и прежде, представлено 8 битами (значение может находиться в диапазоне от 0 до 255), но для описания каждого пикселя теперь нужно 3 значения (число «24» в названии «RGB24», в результате, означает результат умножения 3 каналов на 8 битов). Собственно говоря, теперь у нас, похоже, есть всё необходимое для того чтобы сгенерировать изображение нужного формата на основе нашего монохромного изображения.

Итоги

Теперь на экране можно наблюдать за изображением, формируемым эмулятором. Мы даже пользуемся тут возможностями GPU! То, что выводит ваш вариант эмулятора, должно сильно напоминать, например, то, что показано в этом видеофрагменте. В следующий раз поговорим о временных параметрах работы эмулятора, о том, как заставить систему работать с нужной скоростью, и о том, как обрабатывать ввод данных пользователем.

Как вы думаете, почему эмулятор CHIP-8 столь популярен?

Источник

Читайте также:  как прописать в договоре аренды уборку квартиры

Обновление 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 было немного ниже, а должно было быть наоборот.

После тестирования новой опции графики в игре статья будет обновлена.

Источник

Стриминг текстур что это

В преддверии выхода 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, то эти файлы всегда там.

Источник

Обновление и новые стикеры!

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 станет работать быстрее.

Источник

Стриминг текстур что это

С обновлением 0.10.1 в Калибр добавили технологию потоковой загрузки (стриминг) текстур. Она призвана существенно ускорить загрузку боя у игроков со слабыми компьютерами — тех, кто играет на настройках ниже средних. Впрочем, в той или иной степени положительные изменения коснутся всех игроков.

Как это работает

Нововведение делится на две части: собственно технологию потоковой загрузки и новую настройку в лаунчере, которая устанавливает максимальное качество текстур на компьютере игрока.

Стриминг текстур — это технология, которая позволяет постепенно загружать графику игры прямо во время геймплея. Вы могли видеть подобные решения в других проектах: это когда в начале игры на короткое время здания, модели игроков и другие объекты не полностью детализированы или размыты, а затем полноценно отображаются.

В Калибре это реализовано так, что для каждой текстуры в её самом детализированном варианте рисуется подменная текстура размером 4×4 пикселя. Эти «лёгкие» текстуры — первое, что загружается, когда игрок нашёл себе команду и уже видит таймер обратного отсчёта до начала матча.

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

Источник

Академический образовательный портал