Ir para o conteúdo PET Sistemas de Informação Ir para o menu PET Sistemas de Informação Ir para a busca no site PET Sistemas de Informação Ir para o rodapé PET Sistemas de Informação
  • International
  • Acessibilidade
  • Sítios da UFSM
  • Área restrita

Aviso de Conectividade Saber Mais

Início do conteúdo

Renderização gráfica e Pós-processamento em Jogos



Você provavelmente já ouviu falar de renderização, principalmente em se tratando de jogos ou modelagens em 3D, mas já parou para pensar no que realmente se trata a renderização gráfica?

Renderização é o processo no qual se obtém um resultado final, a partir da unificação de um ou mais arquivos, sempre com o objetivo de melhorar a experiência do usuário. Ou seja, trata-se da combinação de um material bruto, digitalizado, como imagens, vídeos ou áudios e recursos incorporados ao software como transições, legendas, efeitos, entre outros.
O processo de renderização exige muito do hardware, principalmente do processador, por isso muitas vezes temos que aguardar a finalização do “produto final” antes de poder acessá-lo ou visualizar seu conteúdo. Deste modo, existem dois tipos de renderização, os quais são classificados pela sua velocidade de execução do processo. Estes tipos são:

Renderização off-line ou pré-renderização:

Trata-se daquela renderização que não prioriza ou não consegue entregar o resultado do projeto em tempo real. Os principais motivos para isso são a alta complexidade ou quantidade dos cálculos, que não permitem que o computador exiba o resultado instantaneamente.
Na pré-renderização, o CPU (processador), com o auxílio da memória e da placa gráfica, é o principal responsável pelos cálculos de render. Alguns exemplos de onde a pré-renderização é mais utilizada são animações 3D, plantas de arquitetura e edições de áudio e vídeo.

Renderização em tempo real:

Como o nome sugere, a renderização em tempo real processa as informações em alta velocidade e apresenta ao usuário. Este tipo de renderização é muito utilizado no mundo dos jogos, pois tratam-se de ambientes não controlados, ou seja, o jogador é que decide o que irá fazer e consequentemente, as imagens devem ser renderizadas (criadas) automaticamente e em tempo real.
Devido a constante evolução dos processadores gráficos, as famosas placas de vídeo (GPU), grande parte dos jogos atuais utilizam as GPUs para o armazenamento e processamento das imagens, deste modo melhorando a velocidade de criação e exibição das cenas.

Contudo, os jogos não passam por somente um processo de renderização, existe outro método chamado de “post-processing”, ou “pós-processamento” em português, que é o segundo tópico desta redação, então vamos lá!

Primeiramente precisamos entender o que é pós-processamento e para que é utilizado.
Assim como a renderização vista anteriormente, pós-processamento também é um processo no qual filtros e efeitos são aplicados a imagem de um jogo. Contudo, neste processo, a imagem do jogo é renderizada, mas antes de a mesma ser enviada para o monitor, ocorre outro processo de renderização sobre a imagem, sendo assim, aplicados diversos efeitos e filtros diretamente sobre ela, esta “segunda” renderização é a chamada de pós-processamento.
Por tratar-se de uma opção gráfica, o pós-processamento é utilizado para contribuir com a parte visual do jogo, deste modo, permitindo que o mesmo se aproxime de sua concepção. Exemplos disso são, tornar o jogo mais realista ou mais cartunizado.

Gif disponível em: https://www.youtube.com/watch?v=IkRMMcPBFsc

Agora, para título de curiosidade, ou até mesmo de ensino, vou mostrar como utilizar este processo de renderização em jogos. Para isso, estarei utilizando a engine Unity, pois ela disponibiliza por padrão um sistema chamado “Universal Render Pipeline” ou URP, adicionado a partir da versão de 2019 da engine e atualmente se encontra na versão 13.0.0.


Primeiramente, você pode criar um novo projeto com o template do URP ou adicionar em um projeto existente. Se você deseja adicionar em um projeto existente, você pode instala-lo através do “Package Manager system”, basta procura-lo na ferramenta de busca e instalar.

Após instalar, você deverá configurá-lo.

Na “Project window” clique com o botão direito e siga os passos: Create > Rendering > Universal Render Pipeline > Pipeline Asset.

Após criado o asset, navegue para Edit > Project Settings… > Graphics. E no campo Scriptable Render Pipeline Settings adicione o asset criado anteriormente. E está pronto, o URP está instalado em seu projeto.

Provavelmente após adicionar o URP em um projeto existente, ocorrerá erros de textura e iluminação, para corrigir isto você deverá atualizar os Materials e Shaders.

Após finalizada a instalação e configuração do URP em seu projeto, você pode começar a utilizar os efeitos disponíveis na ferramenta para personalizar seu projeto. Inicialmente você precisará criar um objeto vazio em sua cena, para fins de facilitar seu trabalho, coloque o nome deste objeto de “Post processing”.

Assim que criar o objeto, vá em Inspector > Add Component, neste momento pesquise por um script chamado de “Volume” e adicione ao objeto. Este script é responsável por adicionar os vários efeitos na cena.

Neste script haverá dois campos principais que devem ser configurados, o primeiro é o campo “Mode”, no qual deve ser indicado se os efeitos serão aplicados em toda a cena ou somente em um local da mesma. O segundo campo é o “Profile”, neste será colocado um arquivo que armazenará as configurações dos efeitos que você colocar. Para adicionar um “Profile” você pode clicar no botão New, colocar o nome que desejar e salva-lo em alguma pasta do projeto, isso serve para que o profile possa ser reutilizado em várias cenas diferentes do projeto. Contudo, lembre-se que ao alterar as configurações de um “Profile” em uma cena, você irá alterar os efeitos em todas as cenas que utilizam o mesmo “Profile”.

Entre os vários efeitos disponíveis, destaco estes a seguir:

Ambient Occlusion

Este efeito serve para aperfeiçoar as sombras, os buracos a superfícies muito próximas e torná-los mais realistas, possuindo dois modos: o Scalable Ambient Obscurance (utilizado para máquinas mais “fracas”) e o Multi-Scale Volumetric Occlusion (utilizado para máquinas mais potentes e consoles).

2019 / Fonte: https://medium.com/@matheus.gomes_86063


Anti-aliasing

Este efeito serve para remover as linhas “picotadas” que aparecem ao redor de alguns objetos dentro do jogo.
Sem Anti-aliasing:

2019 / Fonte: https://medium.com/@matheus.gomes_86063


Com Anti-aliasing:

2019 / Fonte: https://medium.com/@matheus.gomes_86063


Depth of Field

Como o nome sugere, “profundidade de campo”, este efeito aplica as propriedades de foco e desfoco aos objetos da cena dependendo de sua distância da câmera do jogo.

2019 / Fonte: https://medium.com/@matheus.gomes_86063


Color Grading

É utilizado para alterar as cores da imagem final de sua cena, podendo ser utilizado para representar cenários mais frios ou quentes.

2019 / Fonte: https://medium.com/@matheus.gomes_86063


Bloom

Torna os pontos luminosos mais brilhantes e menos focados.

2019 / Fonte: https://medium.com/@matheus.gomes_86063


Vignette

Este efeito é bem conhecido e provavelmente você já o viu em algum lugar, esse efeito é o responsável por escurecer as bordas das imagens para criar cenas mais dramáticas ou de filmes antigos.

2019 / Fonte: https://medium.com/@matheus.gomes_86063


Concluindo, estes são alguns dos efeitos disponíveis no URP da Unity, além destes existem vários outros com as mais diversas funcionalidades e aplicações. Cada um deles com suas próprias configurações que, se achar interessante, pode ir “brincando” para entender como ajusta-los para atender melhor aos seus objetivos.
Esta foi a edição desta semana do PET Redação, qualquer dúvida ou sugestão pode nos contatar por e-mail ou pelo Discord do grupo, que estaremos sempre dispostos a ajuda-lo(a).

  • Links úteis:
    • Documentos da Unity sobre Post-processing:
      https://docs.unity3d.com/Manual/PostProcessingOverview.html

    • Tutorial de efeitos de imagem:
      https://www.youtube.com/watch?v=a0OQvWAPeuo

    • URP – Overview & Tutorial no canal da Unity no YouTube:
      https://www.youtube.com/watch?v=m6YqTrwjpP0

Lucas Ziquinatti Piccini Nunes

Divulgue este conteúdo:
https://ufsm.br/r-791-3227

Publicações Relacionadas

Publicações Recentes