O último de nós, parte 2, prova que 8 GB de VRAM podem ser suficientes, mesmo em 4K com configurações máximas, então por que não são mais jogos usando o mesmo truque inteligente de streaming de ativos?

Quando a obra -prima da Sony, The Last of Us, Parte 1 apareceu no humilde PC há dois anos, esperava que isso se tornasse um momento decisivo na história dos portos do console. Bem, foi, mas por todas as razões erradas – buggy e instável, ele monopolizou sua CPU e GPU como nada mais, e mais controversa de tudo, tentou comer muito mais VRAM do que sua placa de gráfico. É justo dizer que o momento da bacia hidrográfica de Tlou1 consolidou o debate inteiro de ‘8 GB de VRAM não é suficiente.
A maioria dessas questões foi resolvida por meio de uma série de patches, mas como tantos jogos de grande orçamento e mega-graphics, se você o acionar a 4K em configurações Ultra, o jogo deixará você usar mais VRAM do que você realmente tem. A captura de tela TLOU1 abaixo é de um equipamento de teste usando um RTX 3060 Ti, com 8 GB de memória, mostrando o HUD de desempenho interno; Confirmei que o número de uso de RAM com outras ferramentas e o jogo está realmente tentando usar cerca de 10 GB de VRAM.
Então, quando comecei a testar o último de nós, parte 2 remasterizada há algumas semanas, a primeira coisa que monitorei depois de progredir através do jogo suficiente foi a quantidade de memória gráfica que estava tentando alocar e realmente usar. Para fazer isso, eu usei a Microsoft’s Pix no WindowsUma ferramenta para desenvolvedores que os permite analisar com enormes detalhes exatamente o que está acontecendo embaixo do capô do jogo, em termos de tópicos, recursos e desempenho.
Para minha surpresa, descobri duas coisas: (1) o TLOU2 não exagere o VRAM como a parte 1 e (2) o jogo quase sempre usa 80% a 90% da memória da GPU, independentemente do que as configurações de resolução e gráficos estão sendo usados. Você pode achar que um pouco difícil de acreditar, mas aqui estão algumas evidências para você:
As capturas de tela abaixo de Pix mostram a quantidade de memória local e não local da GPU sendo usada no TLOU2, em uma plataforma cibernética Ryzen 7 9800x3D, usando uma placa gráfica RTX 5080 e RTX 3060. O primeiro tem 16 GB de VRAM, enquanto o último tem 8 GB de VRAM. Nos dois casos, executei o jogo em 4K usando configurações de qualidade máxima (ou seja, a predefinição muito alta, juntamente com a filtragem anisotrópica 16x e o maior campo de visão), juntamente com o DLAA e a geração de quadros ativados (DLSS para o 5080, FSR para o 3060 TI).
Observe que em ambos os casos, a quantidade de memória local sendo usado Não excede a quantidade real de RAM em cada cartão – mesmo que ambos estejam correndo com as mesmas configurações de gráficos aplicadas. Claro, é assim que qualquer jogo deve Lidar com a memória, mas após o desastre do TLOU1, foi bom ver tudo resolvido para a Parte 2.
Se você observar atentamente as capturas de tela do PIX, notará que o RTX 3060 Ti usa mais memória não local que o RTX 5080, especificamente 4,25 GB versus 1,59 GB. Não local, nesse caso, refere-se à memória do sistema e o que está usando esse pedaço de RAM para a GPU é o sistema de streaming de ativos do jogo. Como o 3060 Ti possui apenas 8 GB de VRAM, o buffer de streaming precisa ser maior que o do RTX 5080.
Durante o loop de jogabilidade que realizei para coletar essas informações, o RTX 5080 teve uma média de 9,77 GB de uso de memória local e 1,59 GB de uso não local, para um total de 11,36 GB. No caso do RTX 3060 Ti, os números foram de 6,81 e 4,25 GB, respectivamente, com o total de 11,06 GB.
Por que eles não são exatamente iguais? Bem, o 3060 Ti estava usando a geração de quadros FSR, enquanto o 5080 estava executando o DLSS Frame Gen, então as poucas centenas de MB de uso de memória entre as duas cartas podem ser parcialmente explicadas por isso. A outra possível razão para a diferença é que os loops de jogabilidade não eram idênticos; portanto, para a gravação, as duas configurações não estavam reunindo exatamente os mesmos ativos.
Não que isso realmente importa, pois o ponto que estou fazendo é que o TLOU2 é um exemplo de um jogo que está lidando com o VRAM corretamente por não tentar carregar a memória da GPU com mais ativos do que pode lidar. É o que todos os grandes jogos de mega-graphics da AAA devem estar fazendo e a pergunta óbvia a fazer aqui, é por que não são?
Bem, outro aspecto do TLOU2 que eu monitorei pode explicar o porquê: a escala da carga de trabalho da CPU. Uma das plataformas de teste que usei na minha análise de desempenho do último de nós, parte 2 remasterizada, foi um antigo Core i7 9700K com um Radeon RX 5700 XT. A antiga CPU da Intel Coffee Lake Refresh é um design de oito núcleos e oito threads e, independentemente das configurações que eu usei, o TLOU2 tinha a utilização do núcleo da CPU fixada em 100% em todos os núcleos, o tempo todo.
Mesmo o Ryzen 7 9800x3D no equipamento de teste cibernéticopc foi fortemente carregado, com seus dezesseis núcleos lógicos (ou seja, oito núcleos físicos lidando com dois fios) sendo fortemente utilizados – não na mesma extensão que os 9700k, mas muito mais que qualquer jogo que testei tardio.
O TLOU2 gera muitos threads para gerenciar várias tarefas em paralelo, como a emissão de comandos gráficos e a compilação de shaders, mas existem pelo menos oito threads dedicados às tarefas DirectStorage. Neste ponto, eu apresso a acrescentar que todos os jogos modernos geram muito mais threads do que você normalmente percebe, portanto, não há nada especialmente digno de nota no número que o TLOU2 está usando para o DirectStorage.
A captura de tela de pix acima mostra esses threads específicos em 80 milissegundos em renderização (basicamente um punhado de quadros) e, embora muitos dos fios estejam ociosos nesse período, duas filas de DirectStorage e os threads de envio de DirectStorage estão relativamente ocupados puxando os ativos (ou possivelmente ‘enviando -os de volta’, assim como para falar).
Dado que não é possível desativar o uso do DirectStorage e a compilação de sombreador de fundo no TLOU2, é difícil dizer o quanto essas cargas de trabalho contribuem para a forte demanda do tempo da CPU, mas suspeito que nada disso seja trivial.
… Embora não seja uma técnica impecável, faz um bom trabalho de contornar as limitações de vram
No entanto, reconheço que o maior desafio de programação é apenas fazer com que todo esse trabalho sincronize de maneira suave e correta com os threads primários, e é possivelmente por isso que a maioria dos desenvolvedores de grandes jogos deixa para o usuário final se preocupar com o uso do VRAM, em vez de criar um sistema de gerenciamento de ativos como o TLOU2.
O último de nós, parte 1, como tantos outros jogos, inclui um indicador de uso do VRAM no menu gráfico para seus jogos e isso é relativamente fácil de implementar, embora o torne 100% preciso é Mais difícil do que você imagina.
Correndo o risco de isso aparecer como uma isca de flamebra, vamos considerar por um momento se o sistema de gerenciamento de ativos da TLOU é uma resposta definitiva para o argumento ‘8 GB de VRAM não é suficiente’. De certa forma, 8 GB é Memória suficiente, porque eu não encontrei um limite no TLOU2 (e testei muitas áreas, configurações e configurações de PC diferentes para confirmar isso).
Assim como no último de nós, parte 2, qualquer jogo que faça a mesma coisa também precisará transmitir mais ativos pelo barramento do PCIE em uma placa de gráfico de 8 GB em comparação com uma de 12 ou 16 GB, mas se isso for tratado corretamente, isso não deve afetar o desempenho em nenhum grau perceptível. O desempenho relativamente baixo do RTX 3060 Ti a 4K muito alto não tem nada a ver com a quantidade de RAM, mas o número de shaders, TMUs, ROPs e largura de banda de memória.
Se você leu até aqui, poderá estar em direção à seção de comentários para atirar em vários links do YouTube, mostrando a gaguejando tlou2 ou encontrando outros problemas de desempenho em placas gráficas com 8 ou menos GB de VRAM. Certamente não vou dizer que essas peças de análise estão todas erradas e sou o único que está certo.
Qualquer pessoa que esteja em jogos de PC há tempo suficiente saberá que os PCs variam muito – em termos de configurações e ambientes de hardware e software – que sempre se pode acabar tendo experiências muito diferentes.
Justin, que revisou o Last of Us Part 2, usou um Core i7 12700F com um RTX 3060 TI e teve problemas de desempenho a 1080p com a predefinição média. Usei um Ryzen 5 5600X com a mesma GPU e não tive nenhum problema. Dois PCs bastante semelhantes, dois resultados muito diferentes.
Lidar com esse tipo de coisa é uma das maiores dores de cabeça com as quais os desenvolvedores de jogos de PC precisam lidar, e é provavelmente por isso que não vemos o sistema de gerenciamento de ativos interessantes do TLOU2 em uso pesado-como fazer com que ele funcione perfeitamente em todas as configurações possíveis de PC que podem executar o jogo que será muito demorado. Isso é uma pena, porque, embora não seja uma técnica impecável (ocasionalmente não consegue atingir os ativos no momento certo, por exemplo, levando a alguns objetos quase sem texto), ele faz um bom trabalho ao contornar as limitações do VRAM.
Não estou sugerindo que 8 GB sejam suficientes período Como não é – como rastreamento de raios e renderização neural se tornam mais prevalentes, e o potencial de executar os NPCs de AI na GPU, a quantidade de RAM que a GPU se tornará uma mercadoria cada vez mais importante, por exemplo. A transmissão de ativos também é efetivamente inútil se toda a sua visão em um mundo 3D estiver cheia de objetos e centenas de materiais ultra-complexos, porque esses recursos precisam estar em VRAM naquele momento.
Mas espero que alguns desenvolvedores de jogos tomem nota do Last of Us Part 2 e tente implementar algo semelhante, porque com a AMD e a NVIDIA ainda produzindo 8 GB de placas gráficas e chips móveis (embora no setor de nível básico), ainda será um fator limitante para muitos anos e o argumento sobre se seu VRam suficiente continuará.