O que é o Microsoft DirectStorage? Como isso torna o jogo mais rápido?
A nova API da Microsoft poderia reduzir os tempos de carga dos videogames para sempre, mas como funciona?
No passado, os jogos não eram muito complexos. Os níveis jogáveis eram bastante pequenos, os personagens eram poucos, e as texturas eram simples. Com o passar dos anos, os jogos melhoraram exponencialmente. De mundos abertos maciços a personagens altamente detalhados, os jogos podem muitas vezes parecer fotorealistas.
Mas toda essa inovação tem um custo.
Os jogos modernos precisam de dezenas de gigabytes de dados para renderizar esses belos personagens e ambientes. Mas algumas ferramentas que os desenvolvedores de jogos usam não foram construídas para lidar com uma quantidade tão grande de dados, criando um gargalo de desempenho.
É aqui que entra o Microsoft DirectStorage.
Por que precisamos do Microsoft DirectStorage?
Antes de discutirmos o DirectStorage, vamos ver como funcionam os métodos atuais de streaming de dados.
Quando você lança um jogo, ele precisa de dados como texturas, modelos de caracteres e áudio para apresentar a você na tela. Esses dados são armazenados em um dispositivo de armazenamento como um disco rígido. O jogo solicita esses dados através de ferramentas de software conhecidas como APIs (Application Programming Interfaces, interfaces de programação de aplicativos).
Depois que o jogo solicitou os dados através de uma API, ele busca os dados do dispositivo de armazenamento e os coloca na RAM do sistema antes de passá-los para a GPU para renderização.
Quando você baixa um jogo, todos os dados são compactados para salvar o máximo de armazenamento possível. Mas gpus não podem usar dados comprimidos. Portanto, deve ser descomprimido.
Assim, uma vez que os dados estão em RAM, ele vai para a CPU para descompressão.
Após a descompressão, os dados que o jogo solicitou são copiados para o VRAM da GPU.
Finalmente, a GPU torna esses dados em belos gráficos que vemos no display.
Agora, este método de streaming tem duas grandes desvantagens.
Primeiro, a descompressão de dados leva muito tempo. Isso não só resulta em maiores tempos de carga de jogo, mas também torna a CPU indisponível para outras tarefas. E como a CPU é pega com a descompressão na maioria das vezes, ela não consegue acompanhar as demandas da GPU, resultando em taxas de quadros mais baixas.
Em segundo lugar, as APIs de armazenamento existentes não aproveitam ao máximo o hardware de armazenamento moderno. Por exemplo, os dispositivos de armazenamento naquela época eram discos rígidos mecânicos lentos que não tinham a velocidade e a largura de banda para enviar gigabytes de dados por segundo. Assim, as APIs foram escritas para transmitir apenas uma quantidade limitada de dados.
Os desenvolvedores que usam essas APIs antigas hoje devem contornar esse orçamento limitado de streaming de dados usando métodos como reduzir a complexidade da cena para minimizar a necessidade de muitos ativos, apenas renderizar texturas e o ambiente que o jogador pode ver, e aumentar os tempos de carga para garantir que o jogo tenha tempo suficiente para carregar todos os ativos antes de começar.
Esses métodos funcionam melhor na teoria do que na prática. Porque, mesmo com as unidades de armazenamento mais rápidas do mercado, os jogos ainda têm longos tempos de carga, textura pop-in e distâncias de saque apertados.
O DirectStorage tem como objetivo ajudar os desenvolvedores a resolver esses problemas através de um melhor processo de streaming de dados.
Como funciona o Microsoft DirectStorage?
O Microsoft DirectStorage é um conjunto de APIs de armazenamento que visam corrigir tudo de errado com as APIs atuais.
Quando um desenvolvedor invoca APIs do DirectStorage para solicitar dados do dispositivo de armazenamento, o processo é quase o mesmo com duas grandes diferenças.
Primeiro, depois de copiar os dados na RAM, não há rotina de descompressão da CPU. Os dados não são copiados para a CPU e descomprimidos. Ao contrário das APIs antigas, os dados compactados são enviados diretamente para a GPU.
Em segundo lugar, as APIs aproveitam ao máximo o hardware SSD NVMe super rápido. O DirectStorage precisa de um SSD NVMe para funcionar, já que os SSDs NVMe têm largura de banda exponencialmente maior do que os discos rígidos mecânicos. O DirectStorage usa a largura de banda completa desses SSDs, que está na ordem de GB/s, para ler muitos dados ao mesmo tempo. Isso é diferente das APIs mais antigas que leem dados lentamente e na ordem de MB/s.
Assim, a GPU recebe um monte de dados compactados ao mesmo tempo, e não precisa esperar que mais dados cheguem antes da renderização. A única coisa que resta fazer é descomprimir os dados para a GPU renderizar.
Pacotes directStorage em técnicas de descompressão gpu de última geração. As GPUs descomprimam dados a uma taxa muito maior do que as CPUs. Eles também podem sustentar essa descompressão de alta taxa por um longo tempo que uma CPU não pode. Isso é o que faz de uma GPU um candidato primordial para o futuro da descompressão de dados.
Descarregar a descompressão na GPU também libera a CPU para lidar com outras tarefas, como processar áudio e preparar quadros a serem exibidos.
Comentários
Postar um comentário