Shaders de pós-processamento visual open-source para Unreal Engine 5
por
Bernardo Coutinho
Bruno Mariz
Vinicius Ariel
Orientador: Prof. Dr. Ricardo Nakamura
Universidade de São Paulo - USP
Escola Politécnica
Departamento de Engenharia de Computação e Sistemas Digitais (PCS)
São Paulo, SP 2023
1. Introdução
1.1. Problema e Solução
Com a indústria de jogos brasileira começando a consolidar-se, alguns dos obstáculos para os desenvolvedores tornam-se mais aparentes. Dentre eles, está o manejamento do tempo de produção de conteúdo. Esse processo envolve o planejamento, implementação, teste e polimento de qualquer parte do conteúdo que pode fazer parte do projeto final. No entanto, muitas vezes soluções propostas são desacartadas na seção de testes, fazendo com que o tempo gasto no seu planejamento e implementação tenha sido gasto em um conteúdo que não será utilizado. Nesse trabalho, abordaremos primariamente nesta questão sob a óptica da produção de arte técnica para jogos digitais, no escopo de efeitos de pós-processamento.
Para ajudar a solucionar esse problema, propomos um Asset Pack feito para a Unreal Engine 5, que implementa com conjunto de Shaders de pós-processamento. A ideia é disponibilizar essa ferramenta gratuitamente no Marketplace oficial da Unreal. Acreditamos que o acesso a Shaders básicos poderá facilitar os testes em projetos de outros desenvolvedores, de maneira a averiguar como os efeitos se comportam antes de gastar parte do ciclo de produção e o trabalho do artista ténico.
Também consideramos que, para equipes muito pequenas e que não tenham um profissional especializado na produção de Shaders, o Asset Pack desenvolvido poderá ser útil para tornar esse tipo de tecnologia mais acessível. Isso se torna um ponto mais importante sob o ponto de vista do desenvolvimento no Brasil uma vez que o mercado de jogos brasileiro é composto de pequenas empresas independentes e também pelo fato de que os poucos Asset Packs disponíveis atualmente são pagos e com preços não ajustados à moeda brasileira.
Por fim, também pretendemos que o trabalho se torne uma fonte de estudo a respeito da implementação de Shaders de pós-processamento, que possa ser consultado sobretudo por pessoas que queiram aprender mais a respeito do desenvolvimento desse tipo de efeito utilizando primairamente HLSL.
2. Efeitos Produzidos
Abaixo, listamos cada um dos Shaders de pós-processamento presentes no trabalho, explicando seu propósito e ilustrando sua aparência.
2.1. Dithering Ordenado
Dithering foi um efeito muito usado na época em que o hardware limitava a profundidade de cores num jogo. Ele se baseia na introdução de ruído padronizado sobre a imagem para aparentar uma profundidade maior de cores.
2.2. Kuwahara Filter
Esse é um filtro que simplifica imagens mantendo as fronteiras entre objetos bem definidas. Esse efeito cria um aspecto de pintura à mão na imagem.
2.3. Outline
Esse efeito cria uma borda colorida sobre objetos 3D em cena. Ele pode ser usado para dar uma aparência de cartunesca à cena 3D.
2.4. Edge Detection
Efeito similar ao Outiline, em que bordas dos objetos são coloridas, mas o restante da cena também é pintado com uma outra cor. Em suma, apenas as fronteiras dos objetos são destacadas.
2.5. CRT Effect
Procurando reproduzir os efeitos das televisões de tubo CRT, esse efeito foi criado para dar um aspecto nostálgico à cena. Ele introduz uma ilusão de curvatura na tela, além de aplicar as “scanlines” (linhas iluminadas diferentemente enquanto o scan de raios catódicos passa pela tela).
3. Instalação e Utilização
O Plugin que implementa este Asset Pack necessita que seja instalado em um projeto para Unreal Engine 5.1 (ou mais recente) configurado para C++. Caso seu projeto não esteja configurado para C++, basta criar uma classe de C++ e esperar a Engine criar os arquivos de build necessários.
Com essas configurações feitas, basta copiar a pasta PPFree para dentro da pasta “Plugins” do seu projeto. Faça uma nova build do projeto e você poderá ter acesso aos efeitos de pós processamento criados.
Caso os Materials não apareçam como opções para serem usadas dentro da Engine, marque a opção “Show Plugin Content” no buscador.