Nesta página, você encontra informações sobre funcionalidades que aparecem tanto na Unreal Engine quanto no Unreal Editor para Fortnite (UEFN).
A página foi originalmente criada para a Unreal Engine, portanto, algumas descrições e capturas de tela podem não corresponder ao que você vê no UEFN.
Clique aqui para voltar à documentação principal do UEFN.
Nanite é o sistema de geometria virtualizada do Unreal Engine 5, que usa um novo formato de malha interna e tecnologia de renderização para renderizar detalhes em escala de pixels e altas contagens de objetos. Funciona de forma inteligente apenas nos detalhes que podem ser percebidos e nada mais. O formato de dados Nanite também é altamente compactado e é compatível com transmissão refinada com nível automático de detalhes.
Benefícios da Nanite
- Várias ordens de magnitude sofrem aumento na complexidade da geometria, maior contagem de triângulos e objetos do que era possível antes em tempo real
- Os orçamentos de quadro não são mais limitados por pontos em polígono, draw calls e uso de memória de malha
- Agora é possível importar diretamente artes de origem com qualidade de filme, como esculturas ZBrush e digitalizações de fotogrametria
- Use detalhamento de alta contagem de polígonos em vez de incorporar detalhes em texturas de mapa normal
- O Nível de Detalhe (LOD) é tratado automaticamente e não requer mais configuração manual para LODs de malha individual
- A perda de qualidade é rara ou inexistente, especialmente com transições LOD
Embora as vantagens possam ser um divisor de águas, existem limites práticos que ainda permanecem. Por exemplo, contagens de instâncias, triângulos por malha, complexidade do material, resolução de saída e desempenho devem ser medidos cuidadosamente para qualquer combinação de conteúdo e hardware. A Nanite continuará expandindo seus recursos e melhorando o desempenho em versões futuras do Unreal Engine.
Diferenças entre uma malha Nanite e uma malha estática
Uma malha Nanite é uma malha estática com a Nanite habilitada. Uma malha Nanite ainda é essencialmente uma malha triangular em seu núcleo com muito nível de detalhe e compactação aplicada aos dados. Além disso, a Nanite usa um sistema totalmente novo para renderizar esse formato de dados de maneira extremamente eficiente.
Tudo o que é necessário para que uma malha estática aproveite a Nanite é um sinalizador para habilitá-la. A criação de conteúdo para a Nanite é a mesma das malhas tradicionais, mas a Nanite pode lidar com ordens de magnitude de mais triângulos e instâncias do que é possível para a geometria renderizada tradicionalmente. Mova a câmera para perto o suficiente, e a Nanite desenhará os triângulos de origem originais, os quais foram importados.
As malhas Nanite são compatíveis com vários UVs e cores de vértice. Os materiais são atribuídos a seções da malha de forma que esses materiais possam usar diferentes modelos de sombreamento e efeitos dinâmicos que podem ser feitos nos shaders. A atribuição de materiais pode ser trocada dinamicamente, assim como qualquer outra malha estática, e a Nanite não requer nenhum processo para reduzir os materiais.
Não se exige o uso de texturas virtuais com a Nanite, mas elas são altamente recomendadas. Texturas virtuais são uma funcionalidade ortogonal do Unreal Engine com objetivos semelhantes para dados de textura que a Nanite alcança com dados de malha.
Os fluxos de trabalho de malhas estáticas devem estar familiarizados com a Nanite, mas há muitas coisas ainda não compatíveis. Consulte a seção Funcionalidades Compatíveis desta página para obter mais detalhes.
Como funciona a Nanite?
A Nanite integra-se da maneira mais perfeita possível aos fluxos de trabalho existentes do Engine, enquanto usa uma nova abordagem para armazenar e renderizar dados de malha.
- Durante a importação — as malhas são analisadas e divididas em grupos hierárquicos de grupos de triângulos.
- Durante a renderização — os clusters são trocados em tempo real em vários níveis de detalhes com base na visão da câmera e se conectam perfeitamente sem rachaduras aos clusters vizinhos dentro do mesmo objeto. Os dados são transmitidos sob demanda para que apenas os detalhes visíveis precisem residir na memória. A Nanite é executada na própria passagem de renderização que ignora completamente as draw calls tradicionais. Os modos de visualização podem ser usados para inspecionar o pipeline Nanite.
Como a Nanite depende da capacidade de transmitir rapidamente dados de malha do disco sob demanda, unidades de estado sólido (ou SSDs) são recomendadas para armazenamento de tempo de execução.
Para quais tipos de malhas a Nanite deve ser usada?
A Nanite deve ser habilitada sempre que possível. Qualquer malha estática que a tenha habilitada normalmente será renderizada mais rapidamente e ocupará menos memória e espaço em disco.
Mais especificamente, uma malha é uma candidata especialmente boa para a Nanite se:
- Contiver muitos triângulos ou tiver triângulos que ficarão bem pequenos na tela
- Tiver muitas instâncias na cena
- Atuar como um importante oclusor de outras geometrias Nanite
- Lançar sombras usando Mapas de Sombras Virtuais
Um exemplo de exceção a essas regras é algo como uma esfera do céu: os triângulos serão grandes na tela, ela não obstrui nada e há apenas um triângulo na cena. Normalmente, essas exceções são raras, e a perda de desempenho ao usar a Nanite com elas é mínima, portanto, a recomendação é não se preocupar excessivamente sobre onde a Nanite não deve ser habilitada se a Nanite for compatível com o caso de uso.
Alguns casos de uso não são compatíveis com a Nanite no momento. Consulte a seção Funcionalidades Compatíveis desta página para obter mais detalhes.
Habilitando a compatibilidade Nanite em malhas
A Nanite pode ser habilitada na geometria compatível das seguintes maneiras:
A conversão de geometria para a Nanite requer algum tempo de processamento para cada malha. Em grandes projetos, o uso de um Cache de Dados Derivados (DDC) compartilhado é especialmente útil se houver muitos Recursos Nanite. Consulte a documentação do DDC compartilhado para obter mais informações.
Importando uma malha estática
Ao importar uma malha destinada a nós com a Nanite, marque a caixa Criar Nanite.
Recomenda-se desabilitar a propriedade Gerar Uvs de mapa de iluminação quando não estiver usando iluminação pré-computada com Lightmass.
Quando esta propriedade está habilitada, a geometria altamente detalhada adiciona um tempo significativo para importar e construir dados de malha estática. A propriedade também adiciona um canal UV adicional, que inclui uma quantidade significativa de dados para malhas muito densas. Se o seu projeto não requer iluminação incorporada, não há necessidade de incorrer em nenhum custo.
Habilitando a Nanite em Recursos
Nos casos em que você já tem seu projeto preenchido com o conteúdo no qual deseja habilitar a Nanite, há duas opções: habilitar recursos em lotes usando o Navegador de Conteúdo ou habilitar recursos individuais por meio de seus próprios editores.
Habilitar Nanite em malhas em lotes
Para lotes de recursos de malha estática para os quais você deseja habilitar a Nanite, use o Navegador de Conteúdo para selecionar todos eles. Clique com o botão direito e escolha Nanite > Habilitar no menu de contexto.
Habilitar Nanite em malhas individuais
Abra o editor de qualquer malha que seja compatível com a Nanite, como Malhas Estáticas e Coleções de Geometrias (Chaos baseado em malhas de fratura físicas) e habilite a Nanite por meio do painel Detalhes.
No Editor de Malha Estática, localize Configurações da Nanite e marque a caixa Habilitar o Suporte Nanite.
No Editor de Coleções de Geometria, localize a seção Nanite e marque a caixa Habilitar Nanite.
Funcionalidades compatíveis da Nanite
Esta seção descreve a melhor forma de trabalhar com a Nanite em um projeto do Unreal Engine com detalhes sobre o que é e não é compatível e possíveis limitações.
Geometria
A Nanite pode ser habilitada em Malhas Estáticas e Coleções de Geometrias.
Uma malha habilitada para a Nanite pode ser usada com os seguintes tipos de componentes:
- Malha Estática
- Malha Estática Instanciada
- Malha Estática Instanciada Hierárquica
- Coleção de Geometria
- Pintor de Folhagens
- Grama de Paisagem
A Nanite tem suporte limitado para deformação de malhas rígidas. A Nanite é compatível com translação dinâmica, rotação e dimensionamento não uniforme dessas malhas, sejam elas dinâmicas ou estáticas. Isso significa mover qualquer posição de uma malha Nanite de uma forma que seja mais complexa do que pode ser expressa em uma única matriz 4x3, aplicada uniformemente a toda a malha.
A deformação é limitada com:
- (Beta) Deslocamento da Posição de Mundo em Materiais
- As caixas delimitadoras usadas para clusters de seleção de oclusão não atualizam ou expandem suas caixas delimitadoras com base na deformação. Isso significa que sempre que uma superfície for deslocada para fora, de modo a cobrir onde estava anteriormente, há uma boa chance de que ela se oclua e pareça quebrada.
- A folhagem usando WPO é menos problemática porque a folhagem é preenchida com buracos e não pode realmente se ocluir.
A deformação não é compatível com:
- Animação esquelética
- Destinos de metamorfose
- Malhas Spline
Atualmente, as malhas habilitadas para a Nanite não são compatíveis com:
- Profundidade personalizada ou estêncil
- Pintura de vértices em instâncias
- Isso significa especificamente cores pintadas por instância usando o modo Pintura de Malha do Editor, mas a Nanite é compatível com cores de vértice na malha original.
O número máximo de instâncias que podem estar presentes na cena é bloqueado para 16 milhões de instâncias, o que inclui todas as instâncias transmitidas, não apenas aquelas habilitadas para uso com a Nanite. Somente as instâncias transmitidas são contadas no total.
As tangentes por vértice não são armazenadas na malha estática quando ela está habilitada para a Nanite. Em vez disso, o espaço tangente é derivado implicitamente no shader de pixel. Os dados tangentes não são armazenados para reduzir o tamanho dos dados. Essa diferença no espaço tangente usando essa abordagem pode causar descontinuidades nas arestas. No entanto, esse problema específico não se mostrou significativo e há planos para oferecer suporte a tangentes de vértice em uma versão futura.
Materiais
A Nanite oferece suporte a materiais que têm o Modo de Mesclagem definido como Opaco e Mascarado. Quando um tipo de material incompatível é detectado, um material padrão é atribuído à malha habilitada para a Nanite e um aviso é colocado no Registro de Saída com informações adicionais.
Notas adicionais sobre as funcionalidades do material:
- Malhas habilitadas para a Nanite podem receber decalques projetados em suas superfícies, mas não são compatíveis com Decalques de Malha, que requerem materiais para usar um Modo de Mesclagem Translúcido.
- A caixa de seleção Wireframe não é compatível.
- O nó Interpolador de Vértice e Personalizar UVs são compatíveis, mas serão avaliados três vezes por pixel.
Renderização
As seguintes funcionalidades de renderização não são compatíveis no momento:
- Filtragem específica de exibição de objetos usando:
- Raio mínimo da tela
- Seleção de distância
- Avançar renderização
- Renderização estéreo para Realidade Virtual
- Tela dividida
- Antisserrilhado multiamostra (MSAA)
- Canais de Iluminação
- Traçado de raios contra malhas Nanite
- A malha de fallback é usada para malhas habilitadas para a Nanite por padrão. Diminua o parâmetro Erro Relativo a Fallback no Editor de Malha Estática para usar mais triângulos da malha de origem.
- (Experimental) O suporte inicial para traçado de raios nativo de malhas Nanite é habilitada com a variável de console
r.RayTracing.Nanite.Mode 1. Isso preserva todos os detalhes enquanto usa significativamente menos memória de GPU do que malhas de fallback sem erro.
-
Alguns modos de exibição de visualização ainda não são compatíveis com a exibição de malhas Nanite
Tenha cuidado com alguns modos de visualização no Editor de Malha Estática ao visualizar geometria altamente detalhada. A visualização de Normais e UV pode causar problemas no desempenho do editor.
Plataformas compatíveis
No momento, a Nanite é compatível com PlayStation 5, Xbox Series S|X e PCs com placas de vídeo que atendem a essas especificações, usando os drivers mais recentes com DirectX 12 com Shader Model 6 (SM6):
- NVIDIA: Cartões da geração Maxwell ou mais recentes
- AMD: Cartões de geração GCN ou mais recentes
- Todas as versões mais recentes do Windows 10 (mais recentes que a versão 1909.1350) e do Windows 11 com suporte para DirectX 12 Agility SDK são compatíveis.
- Windows 10 versão 1909 — o número da revisão deve exceder ou ser igual a 0,1350.
- Windows 10 versão 2004 e 20H2 — o número da revisão deve exceder ou ser igual a 0,789.
- DirectX 12 com Shader Model 6.6 atomics ou Vulkan (VK_KHR_shader_atomic_int64)
- Drivers gráficos mais recentes
O PlayStation 4 e o Xbox One também oferecem suporte à Nanite, mas o suporte nessas plataformas é atualmente considerado experimental. Espera-se que o desempenho da Nanite nessas plataformas com conteúdo de alta fidelidade não atenda aos requisitos de um jogo entregável.
Malha de Fallback Nanite e Configurações de Precisão
Malhas estáticas incluem propriedades adicionais que controlam a precisão da representação Nanite e a malha de fallback gerada a partir da malha de detalhes completos.
Essas configurações estão localizadas no painel Detalhes do Editor de Malha Estática na seção Configurações da Nanite.
As configurações da Nanite incluem as seguintes propriedades:
| Propriedade | Descrição |
|---|---|
| Habilitar o Suporte Nanite | Permite que esta malha seja usada com a Nanite e gere uma malha de fallback em situações em que a Nanite não pode ser usada. |
| Área de Preservação | Permite que as malhas Nanite, que perderiam área de superfície devido à simplificação, redistribuam essa área perdida para os triângulos restantes, dilatando as arestas de limite abertas. Isso é mais útil para folhagem, onde as folhas tendem a se tornar triângulos e quadrângulos disjuntos por meio da simplificação. O efeito dessa configuração é aumentar a escala de cada folha. Para fitas geométricas, como folhas de grama, tem o efeito de engrossá-las. Esta configuração deve ser habilitada em todas as malhas de folhagem e nada mais. |
| Precisão de Posição | Escolha a precisão que esta malha deve usar ao gerar a malha Nanite. Automático determina a precisão apropriada com base no tamanho da malha. A precisão pode ser substituída para melhorar a precisão ou otimizar a pegada do disco. |
| Residência Mínima | Define o tamanho do byte de memória que esta malha deve sempre manter na memória e tem o restante transmitido. Valores mais altos requerem mais memória, mas para algumas malhas, isso pode atenuar a ocorrência de problemas de pop-in de transmissão. |
| Manter Porcentagem do Triângulo | A porcentagem de triângulos a manter longe da malha de origem. Reduza essa porcentagem para otimizar o tamanho do disco. |
| Erro Relativo a Aparar | Define a quantidade máxima de erro relativo que pode ser removido para a malha Nanite. Todos os detalhes na malha de origem com menos impacto visual do que essa quantidade relativa de erro são removidos. O erro relativo não tem tamanho unitário e é relativo ao tamanho da malha. Por padrão, a Nanite armazena todos os triângulos da malha de origem original. |
| Porcentagem do Triângulo de Fallback | Define a porcentagem de triângulos que permanecem ao reduzir a malha de origem da Nanite. Isso se torna a representação grosseira (ou Malha de Fallback) usada quando os dados Nanite com todos os detalhes não podem acontecer, como plataformas que não são compatíveis com a renderização Nanite, ou quando é impraticável usar dados Nanite como com colisão complexa. |
| Erro Relativo a Fallback | Define a quantidade máxima de erro relativo que pode ser removido para a malha de fallback. Todos os detalhes na malha de fallback gerada com menos impacto visual do que essa quantidade de erro relativo é removida. O erro relativo não tem tamanho unitário e é relativo ao tamanho da malha. |
| Nome do Arquivo de Importação de Origem | O caminho do arquivo usado para importar uma malha de Alta Resolução para ser usada com a Nanite. A versão de alta resolução da malha é usada no lugar do LOD0 por sistemas que podem se beneficiar de geometria mais detalhada, com a Nanite e Modelagem de Geometria no Unreal Engine. |
Precisão do vértice
A Nanite quantifica as posições dos vértices da malha para maximizar a densidade da memória e minimizar o espaço ocupado pelo disco. O tamanho do passo de quantização é uma potência de dois que pode ser selecionada para corresponder aos requisitos de malhas individuais usando a propriedade Precisão da Posição. Por padrão, Automático escolhe a precisão apropriada com base no tamanho da malha e na densidade do triângulo. Você pode substituir manualmente selecionando um tamanho de precisão para melhorar a precisão ou otimizar a pegada do disco.
Qantinização é uma forma de compressão com perdas. A compactação com perdas é particularmente desafiadora ao trabalhar com peças de malha modular ou outras malhas que compartilham limites. Especialmente quando esses limites precisam se alinhar perfeitamente para não introduzir buracos ou rachaduras na geometria.
Para garantir a consistência, a quantização ocorre em coordenadas de objeto não normalizadas centralizadas em torno da origem da malha. Isso garante que a quantização nunca cause rachaduras quando a malha usar a mesma configuração de precisão e a translação entre o centro da malha seja um múltiplo dessa precisão.
Aparando dados
Há momentos em que você precisará reduzir a quantidade de dados que a Nanite armazena para otimizar o tamanho do disco. A Nanite inclui configurações que permitem aparar os dados detalhados de uma malha Nanite armazenada a qualquer momento durante a produção, o que significa que você pode ultrapassar com segurança a qualidade no início e ajustar de acordo posteriormente.
Para aparar os dados detalhados, você deve usar as propriedades Manter Porcentagem do Triângulo e Erro Relativo a Aparar. Você pode pensar neles como uma opção pré-decimada antes de serem armazenados como uma malha Nanite. No caso da Nanite, os detalhes não precisam ser uniformes em toda a malha. Ele remove os dados menos significativos primeiro e é mais semelhante à compactação com perdas.
Use Manter Porcentagem do Triângulo para definir a porcentagem de triângulos a serem mantidos na malha de origem.
Use Erro Relativo a Aparar para definir a quantidade máxima de erro relativo que é permitido ao aparar os dados da malha de origem. Qualquer triângulo que, se removido, incorreria em um erro relativo menor que se esse valor fosse removido. Ou outra maneira de pensar sobre isso é que todos os detalhes com menos impacto visual do que esse valor serão aparados. O erro relativo não tem tamanho unitário e é relativo ao tamanho da malha.
Os padrões para ambas as propriedades são tais que nada é aparado por padrão, e a Nanite armazena todos os triângulos da malha de origem original.
Aparar dados é importante para reduzir o tamanho do disco (em outras palavras, o tamanho do download), não para melhorar o desempenho. Consulte a seção Tamanho dos Dados abaixo para obter mais informações sobre este tópico.
Malha de Fallback
Muitas partes do Unreal Engine precisam acessar o buffer de vértice tradicional fornecido por malhas renderizadas tradicionalmente. Quando a Nanite está habilitada para uma malha estática, ela gera uma representação aproximada (chamada de Malha de Fallback) da malha altamente detalhada que é acessível e usada onde os dados Nanite não podem estar. A Malha de Fallback é a malha gerada usada quando a renderização Nanite não é compatível. Também é usado em situações em que não seria ideal usar a malha de detalhes completos, como quando é necessária uma colisão complexa, é necessário o uso de mapas de iluminação para iluminação incorporada e para reflexos de traçado de raios de hardware com Lumen.
A propriedade Porcentagem do Triângulo de Fallback representa a porcentagem de triângulos da malha de origem que são usados para gerar a malha de fallback. Você pode especificar a porcentagem de triângulos para manter entre 0 e 100 por cento, onde grandes porcentagens mantêm mais detalhes da malha original.
O Erro Relativo a Fallback define a quantidade máxima de erro relativo que é permitido ao remover detalhes da malha de origem. Quaisquer triângulos que, se removidos, incorreriam em um erro relativo menor que esse valor, são removidos com detalhes de menor impacto visual sendo os primeiros a serem removidos. O erro relativo não tem tamanho unitário e é relativo ao tamanho da malha.
Por exemplo, se você quiser que sua malha não tenha nenhuma decimação, você deve usar uma porcentagem do triângulo de fallback de 100 e um erro relativo a fallback de 0.
Na comparação abaixo, há a malha Nanite altamente detalhada criada a partir da malha de origem que é comparada com as configurações padrão de uma Malha de Fallback Nanite gerada.


Use Erro Relativo a Fallback para especificar quanto do detalhe original é retido da malha de origem original e Porcentagem de Fallback para definir quanto desse detalhe é usado.
Na comparação abaixo, a Malha de Fallback mantém 100 por cento da Porcentagem do Triângulo de Fallback, mas ajusta o Erro Relativo a Fallback para usar mais triângulos da malha de origem original. Ao ajustar esses valores, você pode usar os detalhes da Nanite para Triângulos Nanite na janela de janela de visualização como um indicador ao alterar seus valores.


Visualização de malha de fallback
No Editor de Malha Estática, você pode alternar entre a malha Nanite totalmente detalhada e a Malha de Fallback Nanite usando a opção Fallback Nanite das janelas de visualização no menu suspenso Exibir. Como alternativa, você pode usar a tecla de atalho Ctrl + N para alternar rapidamente entre as duas opções de visualização.
Usando LODs de malha de fallback personalizados para malhas habilitadas para a Nanite
A Malha de Fallback é usada para funcionalidades do Engine, como colisão complexa por polígonos, traçado de raios, incorporação de iluminação e assim por diante. Também é usada para plataformas que não são compatíveis com a Nanite. Ao gerar a Malha de Fallback, uma malha habilitada para a Nanite sempre usa o slot LOD0 da malha de origem para gerar automaticamente a malha de fallback. No entanto, há momentos em que é desejável usar uma malha de fallback especificada manualmente ou uma série de LODs tradicionais, em vez de uma gerada automaticamente.
Esse nível de controle permitiria que você usasse a Nanite em um projeto, mas também controlasse diretamente a geometria vista em reflexos rastreados por raios ou em plataformas incompatíveis com a Nanite.
Siga as etapas abaixo para especificar sua própria malha de fallback personalizada ou para usar uma série de LODs:
- Defina Porcentagem do Triângulo de Fallback como 0 para que a malha de fallback seja a menor possível, pois será ignorada ao usar essa abordagem.
- Adicione um ou mais LODs à malha usando este procedimento configuração tradicional de LOD.
- Use o menu suspenso Importação de LOD para Importar LOD Nível 1 na seção Configurações de LOD.
- Defina LoD mínimo como 1 na seção Configurações de LOD. Isso faz com que a Malha de Fallback gerada pela Nanite seja ignorada.
A Colisão Complexa apresenta um caso especial. Use a propriedade LOD para Colisão em Configurações Gerais para especificar qual LOD deve ser usado para colisão. Qualquer LOD pode ser usado para colisão, incluindo LOD0.
Essa abordagem específica pode não ser viável para tornar os projetos Nanite automaticamente compatíveis com plataformas não compatíveis com a Nanite e deve ser testada e avaliada para o seu projeto.
A Nanite lida com um número muito grande de instâncias com eficiência, mas se a Nanite estiver desabilitada, pode haver um número esmagador de draw calls para o pipeline de renderização tradicional. Você pode testar esse recurso em seu projeto para determinar viabilidade usando r.Nanite 0 para habilitar e desabilitar o suporte Nanite.
Consulte a seção Variáveis e Comandos do Console desta página para obter mais informações.
Trabalhando com conteúdo habilitado para a Nanite
Na maioria dos casos, a Nanite realiza um dimensionamento muito bom dentro da resolução da tela. Ele faz isso com base em duas técnicas: nível de detalhamento refinado e seleção de oclusão. Normalmente, isso significa que, independentemente da complexidade geométrica dos dados de origem na cena, o número de triângulos que a Nanite tenta realmente desenhar na tela é consistente e proporcional ao número de pixels.
A Nanite segue o princípio de design de que não adianta desenhar muito mais triângulos do que pixels.
No entanto, existem alguns casos de conteúdo que quebra as técnicas que a Nanite usa para realizar o dimensionamento, mas isso não significa que ele não deva ser usado para esse conteúdo ou que não será renderizado mais rapidamente do que o pipeline de renderização tradicional. Significa apenas que, para esse tipo de conteúdo, o dimensionamento com pixels — e não a complexidade da cena — não se aplica mais a eles. Use as funcionalidades Criação de Perfil fornecidas pelo Unreal Engine para monitorar esses tipos de situações quando elas ocorrerem.
Geometria Agregada
Geometria Agregada é a geometria que tem muitas partes desarticuladas que se tornam um volume à distância, como cabelo, folhas de árvores e grama. Esse tipo de geometria quebra o nível de detalhe e as técnicas de seleção de oclusão da Nanite.
A Nanite é inerentemente um nível hierárquico de estrutura de detalhes que depende da capacidade de simplificar pequenos triângulos em triângulos maiores e escolher o mais grosseiro quando determina que a diferença é menor do que pode ser percebida. Para superfícies contínuas, isso funciona bem, mas não para geometria agregada que, à distância, parece mais uma nuvem parcialmente opaca do que uma superfície sólida.
Como tal, é mais provável que a Nanite determine que não pode reduzir a geometria agregada quase tão agressivamente quanto faria com superfícies sólidas típicas, resultando assim em mais triângulos sendo desenhados para o mesmo número de pixels cobertos.
Outra otimização que quebra a geometria agregada é a Seleção de Oclusão. Embora seja refinado, a granularidade não é por pixel. A geometria que é preenchida com buracos — e pior ainda, camadas sobre camadas de geometria cheia de buracos — causa overdraw excessivo porque muitas camadas de profundidade precisam se acumular antes que aquela área na tela bloqueie qualquer coisa atrás dela. Uma maneira de pensar sobre isso é considerar uma região de 8x8 pixels na tela e quantas camadas de profundidade precisam ser desenhadas antes que cada pixel seja preenchido. O overdraw excessivo significa que, para o mesmo número de pixels cobertos, a Nanite tenta desenhar mais triângulos, tornando a renderização mais lenta.
A folhagem é o caso mais óbvio para causar problemas com seleção de oclusão, mas mesmo assim, isso não significa que a Nanite não deva ser usado em malhas do tipo folhagem. Consulte a seção Folhagem usando a Nanite abaixo para obter mais informações.
É bom experimentar diferentes casos de uso e ver o que funciona bem para seus projetos. Use ferramentas de perfil para confirmar o bom desempenho da Nanite com esses tipos de malhas.
Superfícies muito próximas
A seleção de oclusão com malhas tradicionais torna os fluxos de trabalho de kitbashing quase impossíveis em grande escala devido a limitações práticas. A natureza refinada da seleção de oclusão com a Nanite torna possível usar esses tipos de fluxos de trabalho durante o desenvolvimento com menos preocupação.
Conforme explicado na seção Geometria Agregada acima, o overdraw pode vir de superfícies ocultas muito próximas das superfícies visíveis abaixo delas. Se qualquer geometria estiver enterrada bem abaixo da superfície visível, a Nanite a detecta e a seleciona de forma bastante barata, de modo que pode ser considerada livre de custos. No entanto, quando há geometria empilhada que está próxima da superfície superior, a Nanite não consegue determinar qual está na parte superior ou inferior, fazendo com que ambas sejam desenhadas simultaneamente.
Esse problema específico com seleção é o pior cenário em que a Nanite não sabe qual superfície está no topo e apenas desenha todas as camadas. Imprecisões como essa são dimensionadas com o tamanho da tela e a distância, portanto, enquanto 10 centímetros podem separar as camadas e parecer bem quando próximas à superfície, distâncias maiores podem fazer com que a diferença de distância seja menor que um pixel, resultando em overdraw.


No exemplo abaixo, se a câmera for movida para olhar para baixo na área onde o personagem está, a visualização Overdraw da Nanite mostra como essas superfícies empilhadas estão sendo renderizadas. Áreas mais brilhantes indicam que mais overdraw está acontecendo nessas áreas do que em outras.
A visualização Overdraw é a maneira mais eficaz de encontrar problemas de overdraw. Embora alguma quantidade de overdraw deva ser esperada, quantidades excessivas resultam em custos de seleção e rasterização Nanite cada vez mais altos, e o dimensionamento Nanite independentemente da complexidade da cena se tornará menos eficaz no processo.
Normais facetadas e de borda dura
Um problema a ser considerado é ao importar malhas altamente detalhadas que possuem normais facetadas, o que significa que a normal entre dois polígonos diferentes não foi suavizada. Esse problema é comum e fácil de passar despercebido e deve-se tomar cuidado para evitar esse problema em particular, porque pequenas quantidades de compartilhamento de vértices em uma malha podem se tornar significativamente mais caras, tanto no desempenho da renderização quanto no tamanho dos dados.
Idealmente, o número de vértices de uma malha deve ser menor que o número de triângulos que ela possui. Se a proporção for 2:1 ou superior, provavelmente haverá um problema, especialmente se isso resultar em uma contagem alta de triângulos. Ter uma proporção de 3:1 significa que a malha é completamente facetada, onde cada triângulo tem seus próprios três vértices, nenhum dos quais é compartilhado com outro triângulo. Na maioria das vezes, isso é causado pelo fato de as normais não serem as mesmas porque não são suavizadas.
Com isso em mente, mais vértices significam mais dados para armazenar. Isso também significa mais trabalho de transformação de vértice e proporções maiores que 2:1 caem em alguns caminhos de renderização lentos. O uso intencional na modelagem de superfícies duras não deve causar problemas e não há motivo para não usá-las. No entanto, malhas muito densas de facetas acidentais de 100% são muito mais caras do que o pretendido. Outra coisa a se observar são as normais importadas em superfícies densas de tipo orgânico geradas em outros pacotes DCC que possuem limites normais rígidos que podem ser sensíveis em malhas de polígonos inferiores, mas podem adicionar despesas desnecessárias com a Nanite.
Por exemplo, nas duas malhas abaixo, a malha à esquerda tem normais facetadas, enquanto a da direita tem normais suavizadas. Ao compará-las usando a visualização Triângulos da Nanite, há diferenças perceptíveis no número de triângulos usados pela Nanite para desenhá-las. A facetada à esquerda desenha significativamente mais triângulos do que a suavizada à direita.
| Malhas habilitadas para a Nanite com normais facetadas (à esquerda) e suavizadas (à direita) | Visualização Triângulo da Nanite de malhas habilitadas para a Nanite com normais facetadas (à esquerda) e suavizadas (à direita) |
| Clique na imagem para ampliar. | Clique na imagem para ampliar. |
Folhagem usando a Nanite
A folhagem usando a Nanite é considerada Beta e está sendo ativamente pesquisada e desenvolvida. Esta seção fornece algumas orientações sobre como usar folhagem com a Nanite no Unreal Engine 5.1.
Para recursos como árvores com configurações Nanite padrão, você pode descobrir que as copas tendem a diminuir com a distância. Esses casos são uma forma particular de Geometria agregada em que cada parte disjunta (uma folha ou lâmina de grama) tem arestas abertas em seu limite. Habilitar Área de Preservação é útil para evitar esse afinamento quando a Nanite está habilitada. Quando a Nanite simplifica a geometria na distância reduzindo o número de triângulos, ela consequentemente precisa começar a remover completamente alguns desses elementos disjuntos. Sem a Nanite ter mais informações, o resultado parecerá afinado porque houve uma grande perda de área de superfície. A opção Área de Preservação redistribuirá essa área perdida para os triângulos restantes, dilatando as bordas dos limites abertos. A dilatação para formas simétricas como folhas tem o mesmo efeito que aumentá-las. Em casos não simétricos como fitas, por exemplo folhas de grama, tem o efeito de engrossá-las.
A opção Área de Preservação é recomendada para todas as malhas de folhagem, mas não para malhas que não sejam de folhagem.


A visualização Cluster da Nanite fornece uma visão mais clara de como Área de Preservação redistribui a área perdida.


Abaixo estão algumas recomendações ao usar e criar recursos de folhagem com a Nanite em mente. Ainda estamos experimentando e aprendendo quais são as melhores abordagens. Até agora, vimos que a folhagem usando a Nanite deve ser criada de forma diferente do que antes, mas se você aproveitar os pontos fortes anteriores, poderá obter resultados mais rápidos e de maior qualidade usando a Nanite.
- Use Área de Preservação (habilitada no Editor de Malha Estática).
- Use geometria em vez de cartões mascarados.
- Os materiais mascarados são bastante caros em comparação com os opacos. Os resultados mais rápidos provavelmente são obtidos por não usá-los.
- A abordagem de cartão tradicional (muitos elementos são representados com um único cartão) com a Nanite pode ser mais lenta do que não-Nanite. Não espere que habilitar a Nanite em folhagem baseada em cartão seja sempre uma melhoria de desempenho.
- Os pixels mascarados custam quase tanto quanto os pixels desenhados. O Overdraw já é um problema com agregados na Nanite. Se um material mascarado for usado, a visualização Overdraw da Nanite não contará toda a história em termos de custo. Overdraw é um conceito complexo neste caso, e a visualização mostra apenas um aspecto particular dele.
- A folhagem de geometria mostrou ser mais rápida com a Nanite do que com abordagens de cartas, tanto as cartas Nanite quanto as cartas não Nanite. Também tem melhor aparência.
- O Megascans: Grama no Unreal Engine Marketplace oferece bons exemplos para teste. O pacote oferece geometria mascarada e de alta contagem de polígonos, em que cada elemento é independente, e cartões mascarados com baixa contagem de polígonos, em que muitos elementos são representados por um único cartão.
- Ao usar Deslocamento da Posição de Mundo (WPO), mais vértices equivalem a um custo mais alto. A lógica do WPO deve ser limitada e monitorada.
- Os problemas explicados na seção Geometria agregada desta página ainda se aplicam. Florestas densas (como os exemplos acima) renderizarão muito mais lentamente do que a mesma cena com todas as malhas substituídas por formas sólidas da mesma contagem de triângulos.
Fluxos de trabalho híbridos de conteúdo Nanite e Não-Nanite.
As seções a seguir destacam os fluxos de trabalho que você pode usar em seus projetos habilitados para a Nanite, que também precisam oferecer suporte a funcionalidades e plataformas não Nanite sem duplicar recursos.
Importando uma malha de alta resolução para a Nanite
Você pode importar uma malha de alta resolução para ser sua representação Nanite para qualquer malha estática não Nanite existente por meio do Navegador de Conteúdo ou do Editor de Malha Estática.
No Navegador de Conteúdo, você pode usar o menu de contexto do botão direito em um recurso de malha estática para selecionar Nível de Detalhe > Alta Resolução > Importar Alta Resolução e navegar até o arquivo que deseja importar.
Como alternativa, você pode usar o Editor de Malha Estática para importar uma malha de alta resolução usando as configurações da Nanite no painel Detalhes. Clique em Importar e navegue até o arquivo que deseja importar.
Usando esse fluxo de trabalho, a malha estática pré-existente e sua cadeia de nível de detalhe (LOD) tornam-se a Malha de Fallback, em vez de o processo de importação gerar automaticamente uma malha de reserva a partir da geometria Nanite.
Este fluxo de trabalho respeita a configuração Desabilitar Nanite em Atores de Malha Estática em suas cenas e é explicado mais na seção Opções de Componente de Malha Estática abaixo.
Fluxos de trabalho de materiais
Há duas maneiras de melhorar seus fluxos de trabalho não Nanite e Nanite com materiais: usando um nó no gráfico de material para quebrar caminhos lógicos ou usando um material de substituição usado apenas para renderização com a Nanite.
Nó de interruptor de passagem Nanite
O nó de Interruptor de Passagem Nanite permite que você defina um comportamento especializado em um gráfico de material quando renderizado com a Nanite.
Use a entrada Padrão ao renderizar em passagens não Nanite, para lidar com o material como seria normalmente. Use a entrada Nanite para qualquer lógica de material que você deseja simplificar ou que seja especificamente renderizada para passagens Nanite. Por exemplo, nos casos em que um material usa uma funcionalidade não compatível com a Nanite, você pode manter a mesma lógica para a entrada Padrão e usar uma lógica mais amigável para a entrada Nanite.
Material de substituição Nanite
O slot do Material de Substituição Nanite está disponível em Materiais e Instâncias de MateriaL. Quando você define um material de substituição, qualquer malha habilitada para a Nanite que tenha o Material ou a Instância de Material atribuída usará o Material de Substituição Nanite referenciado. Isso significa que você pode criar materiais específicos para fluxos de trabalho Nanite em vez de gerenciar a lógica diretamente dentro do gráfico de material usando o nó do Interruptor de Passagem Nanite.
Em Instâncias de Material, o slot do material de substituição Nanite é forçosamente padronizado como Nenhum, de modo que definir a substituição em um Material pai não fará com que ele seja automaticamente herdado em qualquer uma das instâncias filhas desse material.
No exemplo abaixo, o Recurso de Malha Estática para a estátua tem a Nanite habilitada e tem uma Instância de Material aplicada. A Instância de Material tem o Material de Substituição Nanite definido com algumas mudanças de cor simples para fins de demonstração. O Ator de Malha Estática à esquerda exibe o Material de Substituição Nanite, pois a malha está sendo renderizada com Nanite. O Ator de Malha Estática à direita exibe o mesmo material até que Desabilitar Nanite seja definido no ator, desabilitando o Material de Substituição Nanite para mostrar o material de base não Nanite da Instância de Material.
Opção de componente de malha estática: Desabilitar Nanite
Você pode definir quando as malhas estáticas habilitadas para a Nanite devem usar a representação Nanite usando a configuração Desabilitar Nanite em atores de cena individuais. Isso significa que você pode ter uma mistura de atores Nanite e não Nanite que usam o mesmo Recurso de Malha Estática.
O exemplo abaixo mostra um único Recurso de Malha Estática habilitada para a Nanite, onde a esquerda é a representação da malha Nanite e a direita tem a opção Desabilitar Nanite habilitada.
Terreno de paisagem
Esta é uma funcionalidade experimental.
Para usar a Nanite com seu Terreno de Paisagem, selecione-o e use o painel Detalhes para marcar a caixa ao lado de Habilitar Nanite.
Existem duas maneiras de construir a representação da malha Nanite a partir dos dados da Paisagem:
- Clique no botão Reconstruir Dados no painel Detalhes de paisagem na seção Nanite.
- Use o menu Criar para selecionar Criar Apenas Nanite.
Dependendo do tamanho da paisagem, ou número de ladrilhos, pode demorar um pouco para gerar sua representação Nanite. Quando concluído, você pode conferir nos modos de visualização da Nanite.
As seguintes variáveis de console são úteis ao trabalhar com paisagens habilitadas para a Nanite:
Landscape.LiveRebuildNaniteOnModificationaciona uma reconstrução da representação Nanite imediatamente quando uma modificação é executada. (Padrão 0)Landscape.RenderNanitedefine se a paisagem deve renderizar usando a Nanite ou não. (Padrão 1)
Paisagens habilitadas para a Nanite têm as seguintes limitações:
- Ao usar a modificação ao vivo de Paisagens habilitadas para a Nanite (
Landscape.LiveRebuiltNaniteOnModification 1), torna a escultura de paisagem quase inutilizável porque reconstrói a representação Nanite de todos os atores de paisagem em cada quadro. - A resolução máxima da malha Nanite é a mesma que LOD0 para Paisagem. Nenhum aumento de resolução deve ser esperado usando a Nanite em uma paisagem normal. Em seu estado atual, isso é puramente uma otimização de tempo de execução.
- Salvar atores de paisagem com Nanite habilitada quando a malha Nanite não tiver sido atualizada é mais lento, pois as malhas Nanite precisam ser construídas antes de serem salvas.
Considerações técnicas:
- A Paisagens Nanite são atualmente transmitidas em cima do fluxo de dados de paisagem usual, porque os dados Nanite e não Nanite são necessários no tempo de execução, com o último necessário para texturas virtuais no tempo de execução, renderização de água e muito mais. Isso significa que o dobro dos dados deve ser transmitido — um conjunto de dados com transmissão da Nanite, e outro com transmissão de textura — e residir na memória quando a Nanite estiver habilitada.
- O desempenho do tempo de execução é aprimorado com a renderização Nanite, especialmente no que diz respeito às passagens de sombra, mas nenhuma melhoria visual (ou rebaixamento) deve ser esperada, pois os dados de origem são idênticos.
- Espera-se que o Nível de Detalhe hierárquico (HLOD)/transmissão se comporte de forma idêntica à paisagem não Nanite.
Ao editar Paisagens habilitadas para a Nanite, aconselhamos manter desligada a reconstrução ao vivo de malhas Nanite (Landscape.LiveRebuiltNaniteOnModification 0). A renderização de paisagem depende de paisagens não Nanite até que a malha Nanite seja reconstruída (ao salvar ou ao usar Criar Apenas Nanite/Criar Todas as Paisagens no menu Criar) e atualizada, caso em que usará essa versão para renderização. Uma vez que não deve existir nenhuma diferença visual importante entre paisagens Nanite e não Nanite, isso significa que o desempenho no editor enquanto a paisagem não Nanite estiver em uso não é representativa do desempenho de tempo de execução em seu projeto.
Desempenho de conteúdo típico
Para fins de comparação, os seguintes tempos de GPU foram retirados da demonstração técnica do Unreal Engine 5 Lumen na Terra Nanite em um PlayStation 5:
- Resolução média de renderização de 1400p com upsampling temporal para 4K.
- ~2,5 milissegundos (ms) para selecionar e rasterizar todas as malhas Nanite (o que foi quase tudo nesta demonstração)
- Quase toda a geometria usada foi uma malha Nanite
- Quase nenhum custo de CPU, pois é 100% baseado em GPU
- ~2 ms para avaliar materiais para todas as malhas Nanite
- Pequeno custo de CPU com 1 draw call por material presente na cena.
Ao considerar esses tempos de GPU juntos, são aproximadamente 4,5 ms combinados para o que seria equivalente à pré-passagem de profundidade do Unreal Engine 4 mais a passagem de base. Isso torna a Nanite adequada para projetos de jogos visando 60 FPS.
Números como esses devem ser esperados de conteúdo que não sofre com as armadilhas de desempenho mencionadas nas seções anteriores. Contagens de instâncias muito altas e um grande número de materiais exclusivos também podem causar aumento de custos e é uma área de desenvolvimento da Nanite que está sendo trabalhada ativamente.
Tamanho dos dados
Devido ao microdetalhe que a Nanite é capaz de alcançar, pode-se supor que isso signifique um grande aumento nos dados de geometria, resultando em tamanhos de pacotes de jogos maiores e downloads para os jogadores. No entanto, a realidade não é tão terrível. Na verdade, o formato de malha Nanite é significativamente menor do que o formato Malha Estática padrão devido à codificação de malha especializada Nanite.
Por exemplo, usando o exemplo Valley of the Ancients do Unreal Engine 5, as malhas Nanite têm uma média de 14,4 bytes por triângulo de entrada. Isso significa que uma malha Nanite triangular média de um milhão terá aproximadamente 13,8 megabytes (MB) no disco.
Comparando uma tradicional malha com baixa contagem de polígonos mais o mapa Normal com uma malha Nanite de alta contagem de polígonos, você veria algo como:
Malha com baixa contagem de polígonos
Tamanho compactado da malha estática: 1,34 MB |
Malha Nanite
Tamanho do pacote compactado de malha estática: 19,64 MB |


O tamanho do pacote compactado não é o tamanho total do recurso. Existem também texturas únicas usadas apenas por esta malha que devem ser consideradas. Muitos dos materiais usados pelas malhas têm as próprias texturas únicas compostas de diferentes texturas Normal, BaseColor, Metálico, Especular, Rugosidade e Máscara.
Este recurso específico usa apenas duas texturas (BaseColor e Normal) e, portanto, não é tão caro em espaço em disco quanto um com muitas outras texturas exclusivas. Por exemplo, observe que o tamanho da malha Nanite com aproximadamente 1,5 milhão de triângulos é menor (em 19,64 MB) do que uma textura de mapa normal de 4k.
| Tipo de textura | Tamanho da textura | Tamanho no disco |
|---|---|---|
| BaseColor | 4k x 4k | 8,2 MB |
| Normal | 4k x 4k | 21,85 MB |
O tamanho total do pacote compactado para esta malha e suas texturas é:
- Malha com baixa contagem de polígonos: 31,04 MB
- Malha com alta contagem de polígonos: 49,69 MB
Como a malha Nanite já é muito detalhada, podemos tentar substituir o mapa normal exclusivo por um detalhe de mosaico normal que é compartilhado com outros recursos. Embora isso resulte em alguma perda de qualidade neste caso, é bastante pequena e certamente muito menor do que a diferença de qualidade entre a versão com alta contagem e a com baixa contagem. Portanto, uma malha Nanite triangular de 1,5 M pode parecer melhor e ser menor do que uma malha com baixa contagem de polígonos com mapa normal de 4k.
Tamanho total do pacote compactado para a malha e texturas habilitadas para a Nanite: 27,83 MB


Há muitos experimentos que podem ser feitos com resolução de textura e detalhamento de mapas normais, mas essa comparação específica é para demonstrar que os tamanhos dos dados das malhas Nanite não são muito diferentes dos dados com os quais os artistas já estão familiarizados.
Por último, podemos comparar a compressão Nanite com o formato Malha Estática padrão usando a alta contagem de polígonos, onde ambos são idênticos em LOD0.
Malha estática com alta contagem de polígonos
Tamanho compactado da malha estática: 148,95 MB |
Malha Nanite
Tamanho do pacote compactado de malha estática: 19,64 MB |
A comparação da compactação Nanite anterior com um tamanho de 19,64 MB é 7,6x menor que a compactação Malha Estática padrão com 4 LODs.
A compactação Nanite e os tamanhos de dados são uma área chave que será aprimorada em versões futuras do Unreal Engine.
Recomendações gerais sobre o tamanho de dados
Os sistemas Nanite e [Textura Virtual] (designing-visuals-rendering-and-graphics\rendering-optimization\virtual-textures), juntamente com SSDs rápidos, diminuíram a preocupação com orçamentos de tempo de execução de geometria e texturas. O maior gargalo agora é como entregar esses dados ao usuário.
O tamanho dos dados no disco é um fator importante ao considerar como o conteúdo é entregue –— em mídia física ou baixado pela Internet —, e a tecnologia de compactação não pode fazer muito. A largura de banda média da Internet do usuário final, os tamanhos de mídia óptica e os tamanhos de disco rígido não foram dimensionados na mesma taxa que a largura de banda do disco rígido e a latência de acesso, o poder de computação da GPU e a tecnologia de software como a Nanite. Enviar esses dados aos usuários está se mostrando um desafio.
A renderização eficiente de malhas altamente detalhadas é menos preocupante com a Nanite, mas o armazenamento dos dados em disco é agora a área principal que deve ser mantida sob controle.
Modos de visualização
A Nanite inclui vários modos de visualização para inspecionar seus dados na cena atual.
Na janela de exibição Nível, no menu suspenso Modos de Visualização, passe o mouse sobre Visualização Nanite e escolha na seleção.
A visualização Visão Geral exibe a cena renderizada no centro da imagem com visualizações Nanite selecionadas ao redor da tela para referência.
Os seguintes modos de visualização da Nanite estão disponíveis para escolha:
| Visualização Nanite | Descrição |
|---|---|
| Máscara | Visualização que marca a geometria Nanite (verde) e Não-Nanite (vermelha). |
| Triângulos | Exibe todos os triângulos das malhas Nanite na cena atual. |
| Clusters | Exibe representações coloridas de todos os agrupamentos de triângulos sendo renderizados na visualização da cena atual. |
| Primitivos | Visualização que colore todos os componentes da mesma cor para todas as instâncias em uma Malha Estática de Instância (ISM). |
| Instâncias | Visualização que aplica uma cor diferente para cada instância da cena. |
| Overdraw | Exibe a quantidade de overdraw acontecendo para a geometria da cena. Objetos menores empilhados juntos criam mais overdraw do que os maiores. |
| ID do material | Exibe cores separadas para cada ID de material de malhas Nanite individuais. |
| UV de mapa de iluminação | Visualização que exibe as coordenadas UV das superfícies de malha Nanite. |
| Avaliar WPO | Colore geometria habilitada para a Nanite que está usando deslocamento de posição mundial (verde) versus aquelas que não estão (vermelho). |
A Nanite inclui um modo de visualização Avançado que permite opções de visualização adicionais no menu Visualização Nanite. Essas visualizações são úteis para programadores que estão depurando ou criando perfis de vários aspectos de baixo nível da Nanite.
Habilite este modo de visualização avançada com a variável de console r.Nanite.Visualize.Advanced 1.
Variáveis e comandos do console
As seguintes estatísticas e variáveis de console estão disponíveis para uso na depuração e configuração da Nanite.
A renderização Nanite pode ser habilitada e desabilitada globalmente em tempo de execução usando a variável de console r.Nanite 0. Desabilitar Nanite é uma boa maneira de emular plataformas nas quais não há suporte.
Modos de renderização de fallback Nanite
A Nanite fornece modos de renderização de malha de fallback para quando a Nanite está desabilitada ou não é compatível com uma plataforma. Você pode controlar qual modo é usado com a variável do console r.Nanite.ProxyRenderMode.
- 0 é o modo padrão e volta a renderizar malhas de fallback ou LODs baseados em espaço de tela, se definido. Isso inclui o reconhecimento de LOD mín nas propriedades do Editor de Malha Estática (descrito na seção Malha de Fallback acima).
- 1 desabilita toda a renderização de malhas habilitadas para a Nanite.
- 2 funciona de forma semelhante ao modo 1, mas permite que a visualização Exibir > Fallback Nanite no Editor de Malha Estática renderize um Fallback Nanite.
Os modos de renderização Fallback 1 e 2 são úteis para cenas que têm muito mais instâncias do que poderiam ser suportadas sem a Nanite. Eles permitem que a cena seja aberta no editor em plataformas não compatíveis com a Nanite.
Por exemplo, no projeto de exemplo Valley of the Ancients do Unreal Engine 5, desabilitar a Nanite faria com que dezenas de milhares de draw calls regulares ocorressem, dificultando a abertura do mapa em uma plataforma sem suporte.
Comando de estatísticas da Nanite
O comando Nanitestats adiciona uma sobreposição de estatísticas de seleção da Nanite no canto superior direito da janela de visualização.
Os argumentos de comando são usados para especificar quais estatísticas a Nanite exibe na tela. Quando nenhum argumento é fornecido, a exibição principal é usada.
Use Nanitestats List para mostrar todas as visualizações disponíveis na saída de depuração:
- Principal
- VirtualShadowMaps
Você também pode ver outras estatísticas disponíveis para ShadowAtlas e CubemapShadows quando disponíveis. Selecione uma visualização inserindo o comando seguido pelo nome da lista de estatísticas que deseja visualizar. Por exemplo, poderia ser inserido NaniteStats VirtualShadowMaps.
Para exibições que usam seleção de oclusão de duas passagens, as estatísticas são divididas em compartimentos separados para passagem principal e posterior.
Controlando o tamanho do pool de transmissão da Nanite
Controle a quantidade de memória dedicada a armazenar dados de transmissão da Nanite com a variável do console r.Nanite.Streaming.StreamingPoolSize. O uso de pools maiores reduz o trabalho de E/S e descompactação ao se mover pela cena, mas ao custo de um consumo de memória maior.
Se o pool não for grande o suficiente para caber em todos os dados necessários para uma visualização, poderá ocorrer debulha de cache onde a transmissão nunca se acomoda, mesmo para uma visualização estática.
Essa variável de console não pode ser alterada no tempo de execução e deve ser especificada em um arquivo de configuração (.ini).
Definindo o máximo de clusters em uma única passagem
Você pode especificar o número máximo de candidatos e clusters visíveis usados em uma única passagem com a variável de console r.Nanite.MaxCandidateClusters e r.Nanite.MaxVisibleClusters. Os valores deles são usados para dimensionar buffers intermediários e os valores padrão foram escolhidos para funcionar em cenários de renderização comuns.
Não há nenhum mecanismo para redimensionar dinamicamente qualquer um desses buffers ou reduzir automaticamente a qualidade no excesso, o que pode resultar na renderização de artefatos muito pequenos para a complexidade da cena e, normalmente, manifestando-se como geometria ausente ou intermitente. Quando esses tipos de artefatos ocorrem, use Nanitestats para determinar limites conservadores para candidatos e clusters visíveis. Mais especificamente, observe as estatísticas de ClustersSW e ClustersHW. O custo de memória de um cluster candidato é atualmente de 12 bytes e um cluster visível é de 16 bytes.
Essa variável de console não pode ser alterada no tempo de execução e deve ser especificada em um arquivo de configuração (.ini).