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 | |||||
Krycie |
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.