Compartilhar via


Mitigação de Z-fighting

Quando duas superfícies triangulares se sobrepõem, não fica claro qual delas deve ser renderizada sobre a outra. O resultado ainda varia por pixel, resultando em artefatos dependentes da visualização da câmera. Quando a câmera ou a malha se move, esses padrões se deslocam visivelmente. Esse artefato é chamado Z-fighting. No caso de aplicativos de realidade aumentada e de realidade virtual, o problema é intensificado porque os dispositivos de usar na cabeça naturalmente sempre se movem. Para evitar desconforto do visualizador, o Azure Remote Rendering oferece a funcionalidade de mitigação de conflito z.

Observação

As configurações de mitigação de conflito z não têm efeito na renderização de nuvem de ponto.

Modos de mitigação de Z-fighting

Situação Resultado
Z-fighting regular Screenshot shows no deterministic precedence between red and green quads.
Mitigação de Z-fighting habilitada Screenshot displays the red quad precedence with a solid red rectangle.
Realce de padrão quadriculado habilitado Screenshot shows red and green quad toggle preference with a checkerboard pattern rectangle.

O código a seguir habilita a mitigação do Z-fighting:

void EnableZFightingMitigation(RenderingSession session, bool highlight)
{
    ZFightingMitigationSettings settings = session.Connection.ZFightingMitigationSettings;

    // enabling z-fighting mitigation
    settings.Enabled = true;

    // enabling checkerboard highlighting of z-fighting potential
    settings.Highlighting = highlight;
}
void EnableZFightingMitigation(ApiHandle<RenderingSession> session, bool highlight)
{
    ApiHandle<ZFightingMitigationSettings> settings = session->Connection()->GetZFightingMitigationSettings();

    // enabling z-fighting mitigation
    settings->SetEnabled(true);

    // enabling checkerboard highlighting of z-fighting potential
    settings->SetHighlighting(highlight);
}

Observação

A mitigação do Z-fighting é uma configuração global que afeta todas as malhas renderizadas.

Motivos para Z-fighting

O Z-fighting ocorre principalmente por dois motivos:

  • Quando as superfícies estão longe da câmera, a precisão dos valores de profundidade diminui e os valores ficam indistintos
  • Quando as superfícies em uma malha se sobrepõem fisicamente

O primeiro problema sempre pode acontecer e é difícil de eliminar. Se isso acontecer em seu aplicativo, verifique se a proporção da distância do próximo plano com relação à distância do plano distante é a mais baixa possível. Por exemplo, um plano próximo à distância de 0,01 e um plano distante à distância de 1000 criarão esse problema muito antes do que com o plano próximo à 0,1 e o plano distante à 20 de distância.

O segundo problema é um indicador de conteúdo criado incorretamente. No mundo real, dois objetos não podem estar no mesmo local ao mesmo tempo. Dependendo do aplicativo, os usuários talvez queiram saber se existem superfícies sobrepostas e onde elas estão. Por exemplo, uma cena do CAD de um edifício que é a base para uma construção do mundo real não deve conter interseções de superfície fisicamente impossíveis. Para permitir a inspeção visual, o modo de realce está disponível, que exibe o Z-fighting potencial como um padrão quadriculado animado.

Limitações

A mitigação de Z-fighting apresentada é um melhor esforço. Não há qualquer garantia de que o conflito z será eliminado por completo. Além disso, a mitigação prioriza uma superfície em detrimento da outra. Assim, quando temos superfícies muito próximas entre si, a superfície "errada" pode acabar por cima. Um caso de problema comum é quando o texto e outros decals são aplicados a uma superfície. Com a mitigação do conflito z habilitada, esses detalhes podem simplesmente desaparecer.

Considerações sobre o desempenho

  • A habilitação da mitigação das sobreposições de texto gera pouca ou nenhuma sobrecarga de desempenho.
  • Além disso, a habilitação da sobreposição do Z-fighting provoca uma sobrecarga de desempenho não trivial, embora possa variar dependendo da cena.

Documentação da API

Próximas etapas