Como mover seu projeto Built-in Render Pipeline para o Universal Render Pipeline (URP)
O Universal Render Pipeline (URP) é o pipeline de renderização padrão no Unity 6. Neste guia, explicaremos por que estamos tornando o URP o padrão, abordaremos os principais recursos e benefícios deste Pipeline de Renderização Scriptável (SRP), compartilharemos exemplos de estúdios que moveram seus projetos para o URP e explicaremos passo a passo como você pode fazer o mesmo com o seu.
Para um mergulho mais profundo no URP, confira o e-book completo, Introdução ao URP para criadores avançados.
Evolução da renderização: Do pipeline de renderização integrado para pipelines de renderização programáveis
O alcance da plataforma é um dos maiores pontos fortes da Unity. O ideal para quase todos os estúdios de jogos é criar um jogo uma vez e implementá-lo com eficiência em qualquer variedade de plataformas que escolherem, desde PCs de última geração até dispositivos móveis de baixo custo.
O Render Pipeline integrado foi desenvolvido para ser uma solução pronta para uso para todas as plataformas suportadas pelo Unity. Ele oferece uma combinação de recursos gráficos e é conveniente para uso com caminhos de renderização Forward e Deferred.
No entanto, como a Unity continua adicionando suporte para mais plataformas, percebemos as seguintes limitações no Pipeline de renderização integrado:
- A maior parte do código é escrita em C++ e não pode ser modificada, o que o torna um sistema de caixa preta.
- O fluxo de renderização e as passagens de renderização são pré-estruturados.
- O algoritmo de renderização é codificado.
- A personalização irrestrita dificulta a obtenção de um bom desempenho em todas as plataformas.
- Ele expõe retornos de chamada no código de renderização que acionam pontos de sincronização no pipeline. Esses retornos de chamada impedem otimizações de renderização multithread, permitindo alterações para injeção de estado em qualquer ponto do quadro dinamicamente por meio de chamadas para C#.
- É difícil armazenar dados em cache para gerenciar o estado de persistência para injeção de usuário.
A solução: Pipelines de renderização programáveis
Tanto o High-Definition Render Pipeline (HDRP) quanto o URP são scriptable render pipelines (SRPs). Os SRPs da Unity foram desenvolvidos para oferecer suporte a um fluxo de trabalho multiplataforma eficiente, fornecendo:
- Dimensionamento inteligente e confiável para o número máximo de plataformas de hardware, de dispositivos de ponta a de baixo custo
- A capacidade de personalizar processos de renderização usando C#, não C++, o que significa que um novo executável não precisa ser compilado para cada alteração
- Flexibilidade para suportar a evolução da arquitetura
- Capacidade de criar gráficos nítidos com bom desempenho em muitas plataformas
A imagem abaixo ilustra como os SRPs funcionam. Eles usam C# para controlar e personalizar passes de renderização e controle de renderização, bem como shaders HLSL que podem ser criados usando ferramentas fáceis de usar para artistas, como o Shader Graph. Os shaders dão acesso até mesmo às abstrações de nível inferior da API e da camada do mecanismo.
Um desenvolvedor avançado pode criar um novo SRP do zero ou modificar o URP ou o HDRP. O conjunto de gráficos é de código aberto e está disponível para uso no GitHub.
Embora ambos os SRPs ofereçam vantagens exclusivas, o URP foi projetado para alcance máximo da plataforma, para que você possa levar gráficos de ótima aparência para qualquer lugar. Vamos analisar mais de perto.
6 motivos para mover seu projeto Unity para URP
- O URP é acessível a uma ampla variedade de níveis de habilidade.
O URP pode ser configurado por artistas e técnicos, proporcionando mais flexibilidade para prototipagem e refinamento de técnicas de renderização para produção completa de jogos. - O URP é extensível e personalizável.
O URP permite que você modifique recursos existentes e estenda o pipeline com novos, o que o torna uma escolha sólida para usuários avançados, incluindo criadores de pacotes da Asset Store e de terceiros, desenvolvedores experientes e equipes profissionais.
Embora a API de renderização de baixo nível seja escrita em C++ para fins de desempenho, um desenvolvedor de URP pode escrever um script C# simples para ser chamado durante o pipeline de renderização, permitindo personalização de alto nível sem sacrificar o desempenho. - O URP oferece diversas opções de renderização.
O URP fornece um Renderizador Universal que suporta caminhos de renderização Forward, Forward+e Deferred , bem como um Renderizador 2D.
Você pode estender esses renderizadores com recursos adicionais e passes de renderização programáveis.
O recurso Renderizar Objetos pode ser usado para renderizar objetos de uma determinada Máscara de Camada em diferentes eventos no pipeline de renderização. Ele também permite que você substitua o material e outros estados de renderização ao renderizar esses objetos, possibilitando personalizar a renderização sem código.
O URP pode ser estendido com renderizadores personalizados para atender a necessidades específicas. Unity 6 apresenta o Render Graph,uma ferramenta que permite acessar e manipular os vários buffers usados para renderizar um quadro, e usar o fluxo de trabalho dos recursos do renderizador significa que isso pode ser adicionado em qualquer estágio do pipeline de renderização. - O URP aprimora o desenvolvimento de jogos 2D .
O URP oferece desempenho e flexibilidade otimizados, tornando-o ideal para plataformas móveis e de ponta. Ele suporta iluminação avançada, sombras e efeitos de pós-processamento, melhorando a qualidade visual de jogos 2D sem comprometer o desempenho.
Além disso, as configurações de renderização personalizáveis e os recursos de shader do URP permitem que você ajuste a aparência dos seus jogos para uma aparência elegante e profissional. Isso faz do URP uma ferramenta valiosa para criar jogos 2D visualmente atraentes e de execução suave. - O URP é compatível com as últimas tecnologias para artistas.
O URP suporta as mais recentes ferramentas amigáveis aos artistas, como Shader Graph, VFX Graphe Rendering Debugger. - Você pode obter melhor desempenho com URP.
O URP foi criado pensando no desempenho e tem muitas ferramentas para encontrar um equilíbrio entre fidelidade e taxa de quadros em uma ampla variedade de dispositivos.
• O URP avalia a iluminação em tempo real de forma muito eficiente. Na renderização direta, ele avalia toda a iluminação em uma única passagem. O Forward+ melhora a renderização Forward padrão ao selecionar as luzes espacialmente em vez de por objeto. Isso aumenta o número total de luzes que podem ser usadas para renderizar um quadro. Na renderização diferida, ele suporta a API Native RenderPass, permitindo que as passagens de iluminação e G-buffer sejam combinadas em uma única passagem de renderização.
• O URP faz uso mais eficiente da memória de blocos em dispositivos móveis, resultando em menor consumo de energia, maior duração da bateria e, portanto, na possibilidade de sessões de jogo mais longas.
• O URP vem com uma pilha de pós-processamento integrada que permite melhor desempenho em comparação ao Pipeline de renderização integrado. Usando a estrutura de Volume, você pode criar efeitos de pós-processamento que dependem da posição da câmera sem escrever nenhum código.
• O Unity 6 Preview apresenta uma variedade de atualizações de URP, incluindo melhorias de CPU e GPU ao desenhar malhas; o SRP Batcher, que garante menos chamadas de desenho e melhorias em como a profundidade é manipulada; e o GPU Resident Drawer e o GPU Occlusion Culling, que podem reduzir significativamente as chamadas de desenho para algumas cenas.
Embora a maioria dos projetos do Unity agora esteja sendo construída em URP ou HDRP, o Pipeline de renderização integrado continua disponível no Unity 6.
3 estúdios que moveram seus projetos de Pipeline de renderização integrado para URP
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
Kluge Interactive – Cavaleiros Sintéticos
A Kluge Interactive lançou seu jogo de ritmo imersivo Synth Riders no Steam VR e no Meta Quest em 2019. Desde então, ele foi portado para vários dispositivos, incluindo o Apple Vision Pro. Manter-se atualizado com as últimas tecnologias tem sido essencial para ajudar o estúdio a alcançar cada vez mais jogadores em plataformas de VR .
“Os últimos 12 a 18 meses de desenvolvimento de jogos foram para pagar dívidas técnicas e aproximar nossos conjuntos de ferramentas do LTS de 2022”, explica AnnMarie Wirrel Bartholomaeus, produtora técnica da Kluge Interactive. “Já migramos do Built-in Render Pipeline para o Universal Render Pipeline (URP) e mudamos para um backend OpenXR. Isso nos ajudou a ficar em uma posição técnica muito melhor para trabalhar com novas tecnologias.”
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
Subcult Joint – Cortador de biscoitos
Cookie Cutter, da Subcult Joint, é um Metroidvania de alta octanagem e estilo beat-em-up disponível para PC e consoles. Todos os recursos do jogo são desenhados à mão e animados usando técnicas tradicionais. Para adicionar profundidade a esses personagens e ambientes impressionantes, a Subcult Joint precisava da configuração de iluminação perfeita, uma que pudesse ser otimizada e permanecesse com bom desempenho em todas as plataformas.
Ao mudar para o URP e atualizar o projeto para a versão mais recente do Unity , o Subcult Joint desbloqueou todo o potencial do Cookie Cutter. Eles adicionaram mais de 10.000 luzes 2D e as otimizaram usando o Memory Profiler atualizado. E a versão mais recente do Sprite Atlases permitiu que eles enviassem centenas de animações desenhadas à mão para diferentes plataformas de destino com mais facilidade e eficiência.
“Cada luz no jogo ilumina nossos Sprites em tempo real, criando uma sensação de densidade e coesão entre personagens, animações e ambientes”, diz o fundador da Subcult Joint, Stefano Guglielmana. “Em lugares escuros, os personagens ficam na sombra e são banhados pela luz quando expostos às claraboias saturadas e contaminadas em áreas externas. Adoro esses detalhes!”
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
more8bit – Espada Bleak DX
O desenvolvedor solo Luis Moreno Jimenez, também conhecido como more8bit, lançou originalmente seu Soulslike Bleak Sword de 8 bits no Apple Arcade em 2019. Após o sucesso do jogo, a editora Devolver Digital sugeriu que a more8bit trouxesse o jogo para PC e consoles para alcançar ainda mais jogadores. A more8bit aproveitou a oportunidade para expandir o conceito original de Bleak Sword, em vez de recriar uma cópia carbono da versão para dispositivos móveis.
Os visuais de Bleak Sword DXevocam jogos de fliperama retrô. Os efeitos de pós-processamento incluem brilho de luz com textura suja, curvatura de tela, filtros semelhantes aos de VHS, efeitos de profundidade de campo e muito mais. Para Luis, o maior desafio foi manter o estilo visual de Bleak Sword, mas melhorar os gráficos de DXpara aproveitar o poder de processamento extra. Ele criou a maior parte dos efeitos visuais usando o Render Pipeline e o Shader Graph integrados do Unity antes de otimizar no URP.
“A passagem da Built-in para a URP foi muito tranquila. “Levei apenas um fim de semana e depois uma semana para consertar pequenos problemas”, diz more8bit.
Como adicionar URP a um projeto de pipeline de renderização integrado existente
Nesta seção, mostraremos como converter um projeto existente que usa o Pipeline de renderização integrado para URP.
Importante: Certifique-se de fazer backup do seu projeto usando o controle de origem antes de seguir as etapas desta seção. Esse processo converterá ativos, e o Unity não oferece uma opção de desfazer. Se você usar o controle de origem, poderá reverter para versões anteriores dos ativos, se necessário.
Se você estiver atualizando um projeto existente do Built-in Render Pipeline, precisará adicionar o pacote URP ao seu projeto.
Vá para Janela > Package Managere clique no menu suspenso Pacotes para adicionar URP ao seu projeto. Certifique-se de selecionar o Unity Registry, seguido pelo Universal RP. Clique em Download no canto inferior direito da janela se o pacote URP ainda não estiver instalado no seu computador de desenvolvimento. Em seguida, clique em Instalar após o download.
Para criar um Ativo URP, clique com o botão direito do mouse na janela Projeto e escolha Criar > Renderização > Ativo URP (com Renderizador Universal). Dê um nome ao ativo.
Lembrar: Se você criar um novo projeto usando o Universal Render Pipeline ou modelos 3D (URP), esses ativos URP já estarão disponíveis no projeto. Em vez de criar um único ativo URP, o URP usa dois arquivos, cada um com uma extensão de ativo.
Um é chamado UniversalRP_Renderer,um recurso de dados do renderizador que você pode usar para filtrar as camadas nas quais o renderizador trabalha e interceptar o pipeline de renderização para personalizar como a cena é renderizada. Dessa forma, você pode facilitar a criação de efeitos de alta qualidade.
Além disso, o UniversalRP_Renderer controla a lógica de renderização de alto nível e passa pelo URP. Ele suporta caminhos Forward e Deferred, bem como um renderizador 2Dque habilita recursos como Luzes 2D, Sombras 2De Estilos de Mesclagem de Luz. Você pode até estender o URP para criar seus próprios renderizadores.
O outro URP Asset serve para controlar configurações de Qualidade, Iluminação, Sombras e Pós-processamento. Você pode usar diferentes ativos URP para controlar as configurações de qualidade.
Este ativo de configurações está vinculado ao ativo de dados do renderizador por meio da lista de renderizadores. Ao criar um novo Ativo URP, o Ativo de Configurações terá uma Lista de Renderizadores contendo um único item – o Ativo de Dados do Renderizador criado ao mesmo tempo, definido como padrão. Você pode adicionar ativos de dados do renderizador alternativos a esta lista.
O renderizador padrão é usado para todas as câmeras, incluindo a visualização da cena. Uma câmera pode substituir o renderizador padrão selecionando outro na Lista de Renderizadores. Isso pode ser feito usando um script, conforme necessário.
Apesar de seguir essas etapas para criar um ativo URP, uma cena aberta na visualização de cena ou jogo ainda usará o pipeline de renderização integrado. Você deve concluir uma última etapa para fazer a mudança para URP: Vá em Editar > Configurações do Projetoe abra o painel Gráficos . Clique no pequeno ponto ao lado de Nenhum (Renderizar ativo do pipeline). No painel aberto, selecione UniversalRP.
Uma mensagem de aviso aparecerá sobre a troca, mas você pode simplesmente pressionar Continuar. Como ainda não há conteúdo no seu projeto, a alteração do pipeline de renderização será quase instantânea. Agora você está pronto para usar o URP.
Convertendo as cenas de um projeto existente
Depois de concluir os passos acima, você verá que suas belas cenas ficarão subitamente coloridas em magenta. Isso ocorre porque os shaders usados pelos materiais em um projeto de Pipeline de renderização integrado não são suportados no URP. Felizmente, existe um método para restaurar suas cenas à qualidade original.
Vá para Janela > Renderização > Conversor de pipeline de renderização. Escolha Converter integrado para 2D (URP) para um projeto 2D ou Integrado para URP para um projeto 3D . Supondo que seu projeto seja 3D, você precisará selecionar os conversores apropriados:
- Configurações de renderização: Selecione esta opção para criar vários ativos de configuração do Render Pipeline que corresponderão o mais próximo possível às configurações de Qualidade do Render Pipeline Integrado. Isso permite que você teste diferentes Níveis de Qualidade com mais eficiência.
- Atualização de material: Use isso para converter materiais do Pipeline de renderização integrado para URP.
- Conversor de clipes de animação: Isso converte clipes de animação. Ele é executado quando o conversor de atualização de material termina.
- Conversor de material somente leitura: Isso converte os materiais pré-criados e somente leitura incluídos em um projeto Unity . Ele indexa o projeto e cria o arquivo temporário .index. Observe que isso pode levar um tempo considerável.
Convertendo shaders personalizados
Shaders personalizados não são convertidos usando o conversor de atualização de material. Usar o Shader Graph geralmente é a maneira mais rápida de atualizar um shader personalizado para URP.
Existem vários shaders URP diferentes, incluindo:
- Pipeline de renderização universal/Lit: Este shader de renderização baseado em física (PBR), semelhante ao shader padrão integrado, pode ser usado para representar a maioria dos materiais da vida real. Ele suporta todos os recursos do Shader Padrão com fluxos de trabalho metálicos e especulares.
- Pipeline de renderização universal/iluminação simples: Ele usa um modelo Blinn-Phong e é adequado para dispositivos móveis de baixo custo ou jogos que não usam fluxos de trabalho PBR.
- Pipeline de renderização universal/Baked Lit: Use este Shader para jogos ou aplicativos estilizados que exigem apenas iluminação assada por meio de lightmaps, light probese Adaptive Probe Volumesdo Unity 6. Este shader não usa sombreamento baseado em física e não tem iluminação em tempo real, então todas as palavras-chave e variantes de shader relevantes em tempo real são removidas do código do shader, o que torna o cálculo mais rápido.
- Pipeline de renderização universal/complexo iluminado: O Complex Lit Shader contém todas as funcionalidades do Lit Shader e adiciona recursos de material avançados. Alguns recursos deste shader podem exigir muito mais recursos e hardware Unity Shader Model 4.5 .
- Pipeline de renderização universal/Unlit: Este é um shader com desempenho de GPU que não usa equações de iluminação.
- Pipeline/Terreno/Iluminação Universal Render: É adequado para uso com o pacote Terrain Tools .
- Pipeline/Partículas/Iluminação Universal Render: Este shader de partículas usa um modelo de iluminação PBR.
- Pipeline de renderização universal/partículas/não iluminado: Este shader de partículas não iluminado é leve na GPU.
Embora o Simple Lit substitua muitos shaders antigos ou móveis, o desempenho não é o mesmo. Os shaders legados/móveis avaliam apenas parcialmente a iluminação, enquanto o Simple Lit considera todas as luzes conforme definido pelo URP Asset.
Consulte esta tabela em nossa documentação URP para ver como cada shader URP é mapeado para seu equivalente no Pipeline de renderização integrado.
Depois de selecionar um ou mais dos conversores acima, clique em Inicializar conversores ou Inicializar e converter. Seja qual for a opção escolhida, o projeto será digitalizado e os ativos que precisam ser convertidos serão adicionados a cada um dos painéis do conversor.
Se você escolher Inicializar conversores, poderá limitar as conversões desmarcando os itens usando a caixa de seleção fornecida para cada um. Nesta etapa, clique em Converter ativos para iniciar o processo de conversão.
Se você escolher Inicializar e converter, a conversão começará automaticamente após os conversores serem inicializados. Quando estiver concluído, você poderá ser solicitado a reabrir a cena que está ativa no Editor.
Obtenha o e-book completo
Aproveite ao máximo o URP com nosso guia abrangente de 140 páginas, Introdução ao Universal Render Pipeline para criadores avançados do Unity. Escrito pelo especialista em Unity Nik Lever, este manual aborda as melhores práticas para criar gráficos escaláveis no Unity. Os destaques incluem:
- Configurações e conversores URP
- Comparando pipelines de renderização e caminhos de renderização
- Iluminação em URP
- Shaders e retornos de chamada de pipeline
- Pós-processamento
- Dicas de desempenho e otimização e muito mais
Essas atualizações estão presentes em quase todas as seções desta última edição do guia, para que você possa confiar que ele corresponderá à sua experiência de uso do URP no Unity 2022 LTS com a maior precisão possível.
Crie seu jogo, do seu jeito
Tenha mais controle sobre a aparência do seu jogo e maximize o desempenho de renderização com URP. Este SRP se tornará mais poderoso do que nunca quando o Unity 6 for lançado no final deste ano. Crie cenas ricas em detalhes e aprimore quadros de baixa resolução sem perder a fidelidade visual, minimizando a necessidade de otimização manual em suas plataformas de destino.
Como mover seu projeto Built-in Render Pipeline para o Universal Render Pipeline (URP)
Aprenda como atualizar seu projeto do Built-In Render Pipeline Unity para o Universal Render Pipeline e veja como três estúdios alcançaram mais plataformas ao mudar para o URP.