Partilhar via


Single-sided Renderização

A maioria dos renderizadores usa o abate de back-face para melhorar o desempenho. No entanto, quando as malhas são cortadas com planos cortados, os usuários muitas vezes olham para o lado de trás dos triângulos. Se esses triângulos forem eliminados, o resultado não parece convincente.

A maneira de evitar esse problema de forma confiável é renderizar triângulos de dupla face. Como não usar o abate de back-face tem implicações de desempenho, por padrão, a Renderização Remota do Azure só alterna para renderização de dupla face para malhas que estão se cruzando com um plano de corte.

A single-sided configuração de renderização permite personalizar esse comportamento.

Atenção

A single-sided configuração de renderização é um recurso experimental. Ele pode ser removido novamente no futuro. Não altere a configuração padrão, a menos que ela realmente resolva um problema crítico em seu aplicativo.

Pré-requisitos

A single-sided configuração de renderização só tem um efeito para malhas que foram convertidas com a opaqueMaterialDefaultSidedness opção definida como SingleSided. Por padrão, essa opção é definida como DoubleSided.

Single-sided configuração de renderização

Existem três modos diferentes:

Normal: Neste modo, as malhas são sempre renderizadas à medida que são convertidas. Isso significa que malhas convertidas com set to SingleSided sempre serão renderizadas com opaqueMaterialDefaultSidedness o abate de back-face habilitado, mesmo quando cruzam um plano cortado.

DynamicDoubleSiding: Neste modo, quando um plano de corte cruza uma malha, ele é automaticamente alternado para renderização de dupla face. Este modo é o modo padrão.

AlwaysDoubleSided: Força toda a geometria de um lado a ser processada de dupla face em todos os momentos. Esse modo é exposto principalmente para que você possa comparar facilmente o impacto no desempenho entre single-sided e double-sided renderização.

A alteração das configurações de renderização pode ser feita da single-sided seguinte maneira:

void ChangeSingleSidedRendering(RenderingSession session)
{
    SingleSidedSettings settings = session.Connection.SingleSidedSettings;

    // Single-sided geometry is rendered as is
    settings.Mode = SingleSidedMode.Normal;

    // Single-sided geometry is always rendered double-sided
    settings.Mode = SingleSidedMode.AlwaysDoubleSided;
}
void ChangeSingleSidedRendering(ApiHandle<RenderingSession> session)
{
    ApiHandle<SingleSidedSettings> settings = session->Connection()->GetSingleSidedSettings();

    // Single-sided geometry is rendered as is
    settings->SetMode(SingleSidedMode::Normal);

    // Single-sided geometry is always rendered double-sided
    settings->SetMode(SingleSidedMode::AlwaysDoubleSided);
}

Documentação da API

Próximos passos