Condividi tramite


Single-sided Rendering

Per migliorare le prestazioni, la maggior parte dei renderer usa il back-face culling, ossia l'eliminazione delle facce posteriori. Tuttavia, quando le mesh vengono aperte con piani di taglio, gli utenti spesso osservano il lato posteriore dei triangoli. Se questi triangoli non vengono raffigurati, il risultato non è convincente.

Per evitare in modo affidabile questo problema, è necessario eseguire il rendering di entrambi i lati dei triangoli. Poiché non usare il back-face culling ha implicazioni sulle prestazioni, per impostazione predefinita Rendering remoto di Azure passa al rendering di entrambi i lati solo per le mesh che intersecano un piano di taglio.

L'impostazione single-sided di rendering consente di personalizzare questo comportamento.

Attenzione

L'impostazione di single-sided rendering è una funzionalità sperimentale. Potrebbe essere rimossa in futuro. Non modificare l'impostazione predefinita, a meno che non risolva un problema critico nell'applicazione.

Prerequisiti

L'impostazione single-sided di rendering ha solo un effetto per le mesh convertitecon l'opzione opaqueMaterialDefaultSidedness impostata su SingleSided. Per impostazione predefinita, questa opzione è impostata su DoubleSided.

Single-sided impostazione di rendering

Esistono tre modalità diverse:

Normale: in questa modalità, il rendering delle mesh viene sempre eseguito durante la conversione. In altre parole, il rendering delle mesh convertite con opaqueMaterialDefaultSidedness impostato su SingleSided viene sempre eseguito con il back-face culling abilitato, anche se intersecano un piano di taglio.

DynamicDoubleSiding: in questa modalità, quando un piano di taglio interseca una mesh, viene automaticamente impostato sul rendering a doppio lato. Questa è la modalità predefinita.

AlwaysDoubleSided: forza il rendering di tutte le geometrie a lato singolo in qualsiasi momento. Questa modalità è prevalentemente esposta in modo da poter confrontare facilmente l'impatto sulle prestazioni tra single-sided e double-sided il rendering.

La modifica delle impostazioni di single-sided rendering può essere eseguita nel modo seguente:

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

Documentazione sull'API

Passaggi successivi