Что такое Microsoft DirectStorage? Как это сделать игры быстрее?
Раньше игры не были слишком сложными. Игровые уровни были довольно маленькими, персонажей немного, а текстуры простыми. С годами игры улучшились в геометрической прогрессии. Игры, от огромных открытых миров до детализированных персонажей, часто могут выглядеть фотореалистично.
Но за все эти инновации приходится платить.
Современным играм требуются десятки гигабайт данных для отображения этих красивых персонажей и окружения. Но некоторые инструменты, которые используют разработчики игр, не предназначены для обработки такого огромного количества данных, что создает узкое место для производительности.
Здесь на помощь приходит Microsoft DirectStorage.
Зачем нам нужен Microsoft DirectStorage?
Прежде чем обсуждать DirectStorage, давайте посмотрим, как работают текущие методы потоковой передачи данных.
Когда вы запускаете игру, ей требуются такие данные, как текстуры, модели персонажей и звук, которые будут отображаться вам на экране. Эти данные хранятся на запоминающем устройстве, например на жестком диске. Игра запрашивает эти данные с помощью программных инструментов, известных как интерфейсы прикладного программирования (API).
После того, как игра запросила данные через API, она извлекает данные из запоминающего устройства и помещает их в системную оперативную память, прежде чем передать их графическому процессору для рендеринга.
Когда вы загружаете игру, все данные сжимаются, чтобы сэкономить как можно больше места. Но графические процессоры не могут использовать сжатые данные. Следовательно, он должен быть распакован.
Таким образом, как только данные находятся в ОЗУ, они отправляются в ЦП для декомпрессии.
После распаковки данные, запрошенные игрой, копируются во VRAM графического процессора.
Наконец, графический процессор преобразует эти данные в красивую графику, которую мы видим на дисплее.
У этого метода потоковой передачи есть два основных недостатка.
Во-первых, распаковка данных занимает много времени. Это не только приводит к увеличению времени загрузки игры, но также делает процессор недоступным для других задач. А поскольку процессор большую часть времени нагоняет декомпрессию, он не справляется с требованиями графического процессора, что приводит к снижению частоты кадров.
Во-вторых, существующие API хранилища не используют в полной мере преимущества современного оборудования хранения. Например, в те времена устройства хранения были медленными механическими жесткими дисками, у которых не было скорости и пропускной способности для отправки гигабайт данных в секунду. Таким образом, API были написаны только для потоковой передачи ограниченного объема данных.
Разработчики, которые сегодня используют эти старые API-интерфейсы, должны обойти этот ограниченный бюджет потоковой передачи данных, используя такие методы, как снижение сложности сцены, чтобы минимизировать потребность в большом количестве ресурсов, визуализацию только текстур и среды, которые может видеть игрок, и увеличения времени загрузки, чтобы убедиться, что они у игры есть достаточно времени, чтобы загрузить все активы перед запуском.
Эти методы лучше работают в теории, чем на практике. Потому что даже с самыми быстрыми накопителями на рынке игры по-прежнему имеют длительное время загрузки, всплывающие текстуры и ограниченные расстояния отрисовки.
DirectStorage призван помочь разработчикам решить эти проблемы за счет улучшения процесса потоковой передачи данных.
Как работает Microsoft DirectStorage?
Microsoft DirectStorage – это набор API-интерфейсов хранилища, цель которых исправить все, что не так с текущими API-интерфейсами.
Когда разработчик вызывает API-интерфейсы DirectStorage для запроса данных с устройства хранения, процесс почти такой же, с двумя основными отличиями.
Во-первых, после копирования данных в ОЗУ процедура декомпрессии ЦП не выполняется. Данные не копируются в ЦП и не распаковываются. В отличие от старых API, сжатые данные отправляются непосредственно в графический процессор.
Во-вторых, API-интерфейсы в полной мере используют преимущества сверхбыстрого оборудования NVMe SSD. Для работы DirectStorage требуется твердотельный накопитель NVMe, поскольку твердотельные накопители NVMe имеют экспоненциально более высокую пропускную способность, чем механические жесткие диски. DirectStorage использует всю пропускную способность этих твердотельных накопителей, которая составляет порядка ГБ / с, для одновременного чтения большого количества данных. Это не похоже на старые API, которые считывают данные медленно и со скоростью порядка МБ / с.
Таким образом, графический процессор получает сразу много сжатых данных, и ему не нужно ждать прибытия дополнительных данных перед рендерингом. Осталось только распаковать данные для рендеринга графическим процессором.
DirectStorage включает в себя самые современные методы декомпрессии графического процессора. Графические процессоры распаковывают данные с гораздо большей скоростью, чем процессоры. Они также могут поддерживать эту высокоскоростную декомпрессию в течение длительного времени, чего не может ЦП. Это то, что делает GPU главным кандидатом на будущее декомпрессии данных.
Выгрузка декомпрессии на графический процессор также освобождает центральный процессор для выполнения других задач, таких как обработка звука и подготовка кадров для отображения.
Как DirectStorage улучшает игры?
Поскольку DirectStorage невероятно быстро предоставляет вашему графическому процессору большой объем данных, он может революционизировать ваш игровой процесс.
Во-первых, если разработчики создают свои игры с помощью DirectStorage, игры будут загружаться практически мгновенно. Таким образом, вам не придется ждать, чтобы просидеть длинный экран загрузки, чтобы перейти к своей любимой игре.
Во-вторых, поскольку DirectStorage освобождает ЦП для обработки других задач, это увеличивает производительность. Другими словами, вы получите лучшую частоту кадров, даже если вы не обновили свое оборудование .
Наконец, с DirectStorage игры будут иметь более обширные и сложные миры с минимальным количеством всплывающих текстур. Это позволит разработчикам создавать игры следующего поколения, не сдерживая свое творческое видение из-за проблем с потоковой передачей данных.
DirectStorage может навсегда изменить игровой процесс, если разработчики позволят это
Microsoft упорно продвигает DirectStorage. И это правильно. Старые методы потоковой передачи данных являются узким местом, сдерживающим игры.
Если DirectStorage удастся стать отраслевым стандартом, игры перейдут в новую эру погружения.
Если Microsoft удастся усовершенствовать DirectStorage и убедить разработчиков, что стоит вкладывать в него свое время, геймеры, наконец, смогут избавиться от неприятностей, таких как время загрузки и всплывающие текстуры.
Итак, будем надеяться, что мы увидим день, когда не будет фальшивых поездок на лифтах, бесконечных лестниц и быстрых путешествий, которые займут миллион лет.