Udostępnij za pośrednictwem


Renderowanie powłoki

Stan powłoki składnika przesłonięcia stanu hierarchicznego jest efektem przezroczystości. W przeciwieństwie do renderowania przezroczystego , widoczna jest tylko najbardziej z przodu warstwa obiektów, czyli renderowanie nieprzezroczyste. Ponadto normalny wygląd obiektu można zmienić podczas renderowania jako powłoki. Efekt jest przeznaczony dla przypadków użycia, w których użytkownik powinien być wizualnie odsunął się od nieistotnych części, zachowując jednocześnie świadomość przestrzenną dla całej sceny.

Wygląd obiektów renderowanych w powłoce można skonfigurować za pośrednictwem stanu globalnego ShellRenderingSettings . Wszystkie obiekty korzystające z renderowania powłoki będą używać tego samego ustawienia. Nie ma żadnych parametrów dla obiektu.

Uwaga

Nie można zastosować efektu renderowania powłoki do chmur punktowych.

Parametry shellRendering Ustawienia

Klasa ShellRenderingSettings przechowuje ustawienia związane z globalnymi właściwościami renderowania powłoki:

Parametr Type Opis
Desaturation liczba zmiennoprzecinkowa Ilość desytowania, która ma być stosowana do zwykłego końcowego koloru obiektu, w zakresie 0 (bez nasycenia) do 1 (pełne nasycenie)
Opacity liczba zmiennoprzecinkowa Nieprzezroczystość obiektów renderowanych w powłoce w zakresie 0 (niewidocznym) do 1 (w pełni nieprzezroczyste)

Zobacz również poniższą tabelę, aby zapoznać się z przykładami efektów parametrów w przypadku zastosowania do całej sceny:

0 0.25 0.5 0.75 1.0
Desaturacji Desaturation-0.0 Desaturation-0.25 Desaturation-0.5 Desaturation-0.75 Desaturation-1.0
Krycie Opacity-0.0 Opacity-0.25 Opacity-0.5 Opacity-0.75 Opacity-1.0

Efekt powłoki jest stosowany na ostatnim nieprzezroczystym kolorze sceny będzie renderowany w inny sposób. Obejmuje to przesłonięcia stanu hierarchicznego odcienia.

Przykład

Poniższy kod przedstawia przykładowe użycie ShellRenderingSettings stanu za pośrednictwem interfejsu 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);
}

Wydajność

Funkcja renderowania powłoki ma niewielkie stałe obciążenie w porównaniu ze standardowym renderowaniem nieprzezroczystym. Jest ona znacznie szybsza niż używanie przezroczystych materiałów na obiektach lub renderowanie przezroczyste . Wydajność może znacznie obniżyć wydajność, jeśli tylko części sceny zostaną przełączone do renderowania powłoki. Taka degradacja może wystąpić z powodu dodatkowych ujawnionych obiektów wymagających renderowania. W tym względzie wydajność zachowuje się podobnie jak w przypadku funkcji samolotów Cut.

Następne kroki