Share via


Single-sided rendering

De meeste renderers maken gebruik van het ruimen van back-faces om de prestaties te verbeteren. Wanneer meshes echter open worden gesneden met snijvlakken, kijken gebruikers vaak naar de achterkant van driehoeken. Als deze driehoeken worden weggeruimd, ziet het resultaat er niet overtuigend uit.

De manier om dit probleem betrouwbaar te voorkomen, is door driehoeken dubbelzijdig weer te geven. Omdat het niet gebruiken van back-face-selectie gevolgen heeft voor de prestaties, schakelt Azure Remote Rendering standaard alleen over naar dubbelzijdige rendering voor meshes die met een snijvlak snijden.

Met de single-sided renderinginstelling kunt u dit gedrag aanpassen.

Let op

De single-sided renderinginstelling is een experimentele functie. Het kan in de toekomst weer worden verwijderd. Wijzig de standaardinstelling niet, tenzij het een kritiek probleem in uw toepassing echt oplost.

Vereisten

De single-sided renderinginstelling heeft alleen een effect voor meshes die zijn geconverteerd met de opaqueMaterialDefaultSidedness optie ingesteld op SingleSided. Deze optie is standaard ingesteld op DoubleSided.

Single-sided renderinginstelling

Er zijn drie verschillende modi:

Normaal: In deze modus worden meshes altijd weergegeven terwijl ze worden geconverteerd. Dat betekent dat meshes die met opaqueMaterialDefaultSidedness set zijn SingleSided geconverteerd, altijd worden gerenderd met achterzichtafruiming ingeschakeld, zelfs wanneer ze een snijvlak snijden.

DynamicDoubleSiding: In deze modus, wanneer een knipvlak een mesh snijdt, wordt deze automatisch overgeschakeld naar dubbelzijdige rendering. Deze modus is de standaardmodus.

AlwaysDoubleSided: Dwingt alle enkelzijdige geometrie te allen tijde dubbelzijdig weergegeven. Deze modus wordt meestal weergegeven, zodat u eenvoudig de invloed van de prestaties tussen single-sided en double-sided rendering kunt vergelijken.

U kunt de single-sided renderinginstellingen als volgt wijzigen:

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

API-documentatie

Volgende stappen