Share via


Single-sided 渲染

大部分轉譯器都會使用 後臉撲殺 來改善效能。 不過,當網格以 切割平面 切割時,使用者通常會查看三角形的背面。 如果這些三角形被撲殺,結果看起來並不令人信服。

可靠地防止此問題的方法,是轉譯三角形 雙面 。 由於不使用後臉撲殺具有效能影響,根據預設,Azure 遠端轉譯只會針對與切割平面交集的網格切換成雙面轉譯。

single-sided 譯 設定可讓您自訂此行為。

警告

轉 single-sided 譯設定是實驗性功能。 未來可能會再次移除。 請勿變更預設設定,除非它確實解決了應用程式中的一個重要問題。

必要條件

轉 single-sided 譯設定只會對已將 選項設定為 SingleSidedopaqueMaterialDefaultSidedness 網格 產生效果。 根據預設,此選項會設定為 DoubleSided

Single-sided 轉譯設定

有三種不同的模式:

一般: 在此模式中,網格一律會在轉換時轉譯。 這表示使用 opaqueMaterialDefaultSidedness set 轉換成 SingleSided 的網格一律會隨著啟用後臉撲殺而轉譯,即使它們與切割平面交集也一樣。

DynamicDoubleSiding: 在此模式中,當切割平面與網格交集時,會自動切換為雙面轉譯。 此模式是預設模式。

AlwaysDoubleSided: 強制所有單邊幾何隨時呈現雙面。 此模式大部分都會公開,因此您可以輕鬆地比較和 double-sided 轉譯之間的 single-sided 效能影響。

您可以變更轉 single-sided 譯設定,如下所示:

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 文件

下一步