Compartilhar via


Renderização do shell

O estado do shell do componente de substituição do estado hierárquico é um efeito de transparência. Ao contrário da renderização ver-através, somente a camada mais à frente dos objetos é visível, semelhante à renderização opaca. Além disso, a aparência normal dos objetos pode ser alterada quando renderizados como shells. O efeito destina-se a casos de uso em que o usuário deve ser guiado visualmente para fora de partes não importantes, enquanto ainda mantém a consciência espacial de toda a cena.

Você pode configurar a aparência dos objetos renderizados por shell por meio do estado global ShellRenderingSettings. Todos os objetos que usam a renderização do shell usarão a mesma configuração. Não há parâmetros por objeto.

Observação

O efeito de renderização do shell não pode ser aplicado a nuvens de pontos.

Parâmetros ShellRenderingSettings

A classe ShellRenderingSettings contém as configurações relacionadas às propriedades globais de renderização do shell:

Parâmetro Tipo Descrição
Desaturation float A quantidade de desaturação a ser aplicada à cor normal do objeto final, no intervalo de 0 (sem desaturação) a 1 (desaturação completa)
Opacity float A opacidade dos objetos renderizados em shell, no intervalo de 0 (invisível) a 1 (totalmente opaco)

Consulte também a tabela a seguir para ver exemplos dos efeitos dos parâmetros quando aplicados a uma cena inteira:

0 0.25 0.5 0,75 1.0
Desaturação Desaturation-0.0 Desaturation-0.25 Desaturation-0.5 Desaturation-0.75 Desaturation-1.0
Opacidade Opacity-0.0 Opacity-0.25 Opacity-0.5 Opacity-0.75 Opacity-1.0

O efeito do Shell é aplicado na cor opaca final que a cena seria renderizada com o contrário. Isso inclui a substituição do estado hierárquico da tonalidade.

Exemplo

O código a seguir mostra um exemplo de uso do estado ShellRenderingSettings por meio da API:

void SetShellSettings(RenderingSession session)
{
    ShellRenderingSettings shellRenderingSettings = session.Connection.ShellRenderingSettings;
    shellRenderingSettings.Desaturation = 0.5f;
    shellRenderingSettings.Opacity = 0.1f;
}
void SetShellSettings(ApiHandle<RenderingSession> session)
{
    ApiHandle<ShellRenderingSettings> shellRenderingSettings = session->Connection()->GetShellRenderingSettings();
    shellRenderingSettings->SetDesaturation(0.5f);
    shellRenderingSettings->SetOpacity(0.1f);
}

Desempenho

O recurso de renderização do shell traz uma pequena sobrecarga constante em comparação com a renderização opaca padrão. É significativamente mais rápido do que usar materiais transparentes em objetos ou a renderização ver-através. O desempenho pode degradar mais significativamente se apenas partes da cena forem alternadas para a renderização do Shell. Essa degradação pode ocorrer devido a objetos adicionais revelados que exigem renderização. Nesse aspecto, o desempenho se comporta de forma semelhante ao recurso de Planos de corte.

Próximas etapas