Single-sided Renderowania
Większość modułów renderujących używa funkcji uścisku twarzy zaplecza w celu zwiększenia wydajności. Jednak gdy siatki są wycinane z płaszczyzn cięcia, użytkownicy często patrzą na tylnej stronie trójkątów. Jeśli te trójkąty są uściśnięte, wynik nie wygląda przekonująco.
Sposobem niezawodnego zapobiegania temu problemowi jest renderowanie trójkątów z podwójną stroną. Ponieważ nieużywanie z tyłu twarzy ma wpływ na wydajność, domyślnie usługa Azure Remote Rendering przełącza się tylko na renderowanie dwustronne dla siatk, które przecinają się z płaszczyzną wycinania.
Ustawienie renderowania single-sided umożliwia dostosowanie tego zachowania.
Uwaga
Ustawienie renderowania single-sided jest funkcją eksperymentalną. Może zostać ponownie usunięty w przyszłości. Nie zmieniaj ustawienia domyślnego, chyba że naprawdę rozwiąże krytyczny problem w aplikacji.
Wymagania wstępne
Ustawienie renderowania single-sided ma wpływ tylko na siatki, które zostały przekonwertowane z opcją ustawioną opaqueMaterialDefaultSidedness
na SingleSided
wartość . Domyślnie ta opcja jest ustawiona na DoubleSided
wartość .
Single-sided ustawienie renderowania
Istnieją trzy różne tryby:
Normalny: w tym trybie siatki są zawsze renderowane w miarę ich konwersji. Oznacza to, że siatki przekonwertowane z opaqueMaterialDefaultSidedness
zestawem SingleSided
na zawsze będą renderowane z włączonym ubojem z tyłu twarzy, nawet gdy przecinają płaszczyznę wycięcia.
DynamicDoubleSiding: w tym trybie, gdy płaszczyzna wycinania przecina siatkę, jest automatycznie przełączana na renderowanie dwustronne. Ten tryb jest trybem domyślnym.
AlwaysDoubleSided: Wymusza renderowanie całej geometrii jednostronnej przez cały czas. Ten tryb jest głównie uwidoczniony, dzięki czemu można łatwo porównać wpływ wydajności między single-sided i double-sided renderowania.
Zmianę ustawień renderowania single-sided można wykonać w następujący sposób:
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);
}
Dokumentacja interfejsu API
- Renderowanie w języku C#Połączenie ion. Właściwość SingleSided Ustawienia
- Renderowanie języka C++Połączenie ion::SingleSided Ustawienia()