Diretório de artigos
Descrição do Requisito
Objetos em um determinado nível são sempre renderizados na frente de outro nível
A primeira idéia é definitivamente usar o shader do material. Se os objetos nesses dois níveis usarem materiais diferentes, você poderá ajustar a fila de renderização do material.
Além disso, outra forma de manter o material inalterado é aumentar as características de renderização ajustando o RenderPipelineAsset e ajustando-o de acordo com o nível.
O nível aqui se refere à camada do objeto
Especifique o modelo de escrita de camada
Usando Urp, abra UniversalRenderPipelineAsset_Renderer, Adicionar recurso
Desative a renderização padrão para o nível especificado e use o recurso
Suponha que precisamos que o PlayerBack esteja atrás do Player, renderize a camada PlayerBack primeiro,
A fila é consistente com a fila de renderização de material da camada anunciada.
A máscara de camada seleciona a camada alvo a ser renderizada.
Não escreva a profundidade, mas escreva o modelo.
A camada de destino realiza testes de modelo após escrever a camada.
A camada de destino executa o teste de estêncil após gravar a camada e só será renderizada na camada de destino (porque somente a camada de gravação pode passar no teste de estêncil)
O teste de profundidade aqui sempre passa, e a profundidade é escrita ao mesmo tempo. O objetivo é passar no teste de profundidade da camada comum (se aparecer preto é porque a camada comum precisa ser renderizada novamente)
Camada normal
A camada comum é renderizada normalmente. Como a profundidade foi escrita antes, ela pode ser renderizada na camada especificada e, como apenas a camada especificada é gravada no modelo, ela não interferirá em outros níveis de renderização (o princípio de destacar o especificado camada também é o teste do modelo de aplicativo)
Efeito
Jogador vermelho, PlayerBack branco, PlayerBack está sempre atrás do Player