Dela via


Single-sided Rendering

De flesta renderare använder back-face culling för att förbättra prestandan. Men när nät skärs upp med klippta plan tittar användarna ofta på baksidan av trianglar. Om dessa trianglar gallras bort ser resultatet inte övertygande ut.

Sättet att på ett tillförlitligt sätt förhindra det här problemet är att återge trianglar dubbelsidiga. Eftersom det inte innebär prestandakonsekvenser att inte använda backen face culling växlar Azure Remote Rendering som standard endast till dubbelsidig återgivning för nät som korsar ett klippt plan.

Med renderingsinställningen single-sided kan du anpassa det här beteendet.

Varning

Renderingsinställningen single-sided är en experimentell funktion. Det kan tas bort igen i framtiden. Ändra inte standardinställningen såvida den inte löser ett kritiskt problem i programmet.

Förutsättningar

Renderingsinställningen single-sided har bara en effekt för nät som har konverterats med opaqueMaterialDefaultSidedness alternativet inställt på SingleSided. Som standard är det här alternativet inställt på DoubleSided.

Single-sided renderingsinställning

Det finns tre olika lägen:

Normal: I det här läget återges nät alltid när de konverteras. Det innebär att nät som konverteras med opaqueMaterialDefaultSidedness inställd på SingleSided alltid återges med bakåtvänd utgallring aktiverat, även när de korsar ett klippt plan.

DynamicDoubleSiding: I det här läget, när ett klippt plan korsar ett nät, växlas det automatiskt till dubbelsidig återgivning. Det här läget är standardläget.

AlwaysDoubleSided: Tvingar all enkelsidig geometri att återges dubbelsidig hela tiden. Det här läget är mest exponerat så att du enkelt kan jämföra prestandapåverkan mellan single-sided och double-sided återgivning.

Du kan ändra återgivningsinställningarna single-sided på följande sätt:

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-dokumentation

Nästa steg