Sdílet prostřednictvím


Single-sided Vykreslování

Většina rendererů ke zlepšení výkonu používá k odvrácení tváře. Pokud jsou však oka otevřená s rovinami řezů, uživatelé se často dívají na zadní stranu trojúhelníků. Pokud jsou tyto trojúhelníky odsunuty, výsledek nevypadá přesvědčivě.

Způsob, jak tento problém spolehlivě zabránit, je vykreslit trojúhelníky oboustranně. Vzhledem k tomu, že použití zpětného odkulování má vliv na výkon, azure Remote Rendering ve výchozím nastavení přepne pouze na oboustranné vykreslování pro sítě, které se protínají s rovinou řezu.

Nastavení single-sided vykreslování umožňuje přizpůsobit toto chování.

Upozornění

Nastavení single-sided vykreslování je experimentální funkce. V budoucnu se může znovu odebrat. Výchozí nastavení prosím neměňte, pokud ve skutečnosti nevyřeší kritický problém ve vaší aplikaci.

Předpoklady

Nastavení single-sided vykreslování má efekt pouze pro sítě, které byly převedeny s možností nastavenou opaqueMaterialDefaultSidedness na SingleSided. Ve výchozím nastavení je tato možnost nastavena na DoubleSided.

Single-sided nastavení vykreslování

Existují tři různé režimy:

Normální: V tomto režimu se sítě při převodu vždy vykreslují. To znamená, že sítě převedené se opaqueMaterialDefaultSidedness sadou se SingleSided vždy vykreslují s povoleným odvrácením tváře, i když protínají rovinu řezu.

DynamicDoubleSiding: V tomto režimu, když rovina řezu protíná síť, automaticky se přepne na oboustranné vykreslování. Tento režim je výchozím režimem.

AlwaysDoubleSided: Vynutí, aby se všechny jednostranné geometrie vykreslovaly oboustranně. Tento režim je většinou vystavený, takže můžete snadno porovnat dopad na výkon mezi single-sided a double-sided vykreslováním.

single-sided Změnu nastavení vykreslování můžete provést následujícím způsobem:

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);
}

Dokumentace k rozhraní API

Další kroky