CD Projekt RED explica a renderização “inteligente” de The Witcher 3

CD Projekt RED explica a renderização “inteligente” de The Witcher 3

Último Vídeo

A desenvolvedora CD Project RED aproveitou a última edição da feira GDC (Game Developers Conference) para mostrar um pouco mais do seu vindouro The Witcher 3: Wild Hunt — título que deve fechar a epopeia de Geralt de Rivia em busca de sua amada Yennefer. Além de mostrar imagens do seu renovado mundo de jogo pestilento, a softhouse também organizou uma apresentação da tecnologia Advanced Occlusion.

Com o título de “Tratando a Visibilidade e a Transmissão em The Witcher 3: Wild Hunt”, o painel mostrou como os desenvolvedores da CD Projekt tem feito uso da engine Umbra 3 com o objetivo de minimizar ao máximo a utilização de memória na hora de criar as extensas paisagens do game.

Só até onde a vista alcança

Conforme explicou o engenheiro de software da CD Projeckt RED, Przemyslaw Czatrowski, o que o recurso Advanced Occlusion faz é renderizar apenas os objetos enquadrados pela câmera em dado momento — seria a perspectiva do personagem, portanto.

Trata-se, portanto, de uma tecnologia de oclusão, embora a softhouse tenha lançado mão de critérios próprios na hora de selecionar objetos do cenário. De qualquer forma, o resultado é uma economia substancial do poder de fogo da placa de vídeo.

Confira o passo a passo do sistema de oclusão da Umbra Software:

  • O mundo de jogo é dividido em quadros (tiles), sendo que, para cada um deles, é formado um conjunto de dados, incluindo os dados de oclusão. A engine determina quais conjuntos precisam ser mostrados de acordo com a posição e a direção da câmera;
  • Caso um novo conjunto de dados determinados difira do conjunto antigo, um processo de computação assíncrono começa, criando um novo conjunto, que é então enviado ao renderizador para ocupar o lugar dos gráficos previamente renderizados. (Ocorre quando, digamos, a direção da câmera é alterada, focando em uma nova porção do mundo de jogo); e
  • Conjuntos de dados que não estejam mais em uso são removidos, liberando espaço na memória.

Advanced Occlusion em Skellige

A imagem abaixo ilustra bem o processo de oclusão da Umbra Software na região de Skellige. A área em verde representa a parte do cenário no momento.

Conforme a câmera se desloca para frente, a área coberta pela perspectiva também muda, determinando o espaço que precisa ser renderizado e liberando o espaço anterior (conforme explicado acima). É isso que faz, portanto, com que novos objetos entrem em cena sem sobrecarregar a memória.

Exemplo de oclusão em Novigrad

A cena abaixo, localizada na cidade de Novigrad, compara uma screenshot específica dentro do jogo com os dados que são efetivamente renderizados pela engine Umbra. A câmera e a área coberta pela perspectiva do personagem podem ser vistas em amarelo.

Conforme explicou Przemyslaw Czatrowski, essa cena possui um total de 43 conjuntos de dados — dispostos em porções específicas do cenário, que é dividido em quadros. Adicionalmente, também são gerados 15 MB de dados para formar cada conjunto em tempo real.

Embora existam mais de 62 mil malhas formadas por conjuntos de pixels (formando texturas e demais elementos gráficos), apenas 500 são visíveis e renderizados no momento da cena — apenas 0,76% do total, portanto. Czatrowski acrescenta também que todo o processo de substituição de elementos renderizados não toma mais do que 1,8 microssegundo para exibir o resultado acima — considerando-se também partículas e demais detalhes (sangue, fogo etc.)

Economia de memória

Embora Skellige, por exemplo, possua 64 quilômetros quadrados de extensão — com algo entre 45 mil e 50 mil malhas formadas por “pedaços” de cenário (como ilustra a imagem abaixo) —, a CD Project garante que apenas entre 1% e 5% desses dados devem ser carregados em cada cena.

Em termos de espaço em HD, não obstante o fato de a Umbra ocupar, por exemplo, 300 MB de espaço com dados para Skellige e 250 MB para Novigrad, o primeiro deve representar uma utilização efetiva de memória RAM de apenas 40 MB (máximo de 80 MB) e o segundo de 45 MB (também com valor máximo de 80 MB).

Ademais, a desenvolvedora afirmou ainda que pretende utilizar a mesma tecnologia para reduzir as sombras carregadas em cena — conseguindo isso, explica Czatrowski, por meio de cálculos que mostrem quais objetos projetam sombras visíveis para o jogador em determinado momento.

Você sabia que o Voxel está no Facebook, Instagram e Twitter? Siga-nos por lá.