Partilhar via


Composição de shell

O estado do shell do componente Substituição de estado hierárquico é um efeito de transparência. Em contraste com a renderização transparente , apenas a camada mais frontal de 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 longe de partes não importantes, mantendo a consciência espacial para toda a cena.

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

Nota

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

Parâmetros ShellRenderingSettings

Class ShellRenderingSettings contém as configurações relacionadas às propriedades de renderização de shell global:

Parâmetro Tipo Descrição
Desaturation flutuante A quantidade de dessaturação a aplicar à cor habitual do objeto final, no intervalo 0 (sem dessaturação) a 1 (dessaturação completa)
Opacity flutuante A opacidade dos objetos renderizados pelo shell, no intervalo de 0 (invisível) a 1 (totalmente opaco)

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

0 0.25 0.5 0,75 1.0
Dessaturaçã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 shell é aplicado na cor opaca final com a qual a cena seria renderizada. Isso inclui a substituição do estado hierárquico de tonalidade.

Exemplo

O código a seguir mostra um exemplo de uso do ShellRenderingSettings estado 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 de shell carrega 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 renderização transparente . O desempenho pode se degradar mais fortemente se apenas partes da cena forem alternadas para renderização de shell. Esta degradação pode ocorrer devido a objetos revelados adicionalmente que requerem renderização. Nesse sentido, o desempenho se comporta de forma semelhante ao recurso de planos Cut.

Próximos passos