Single-sided 渲染
大部分轉譯器都會使用 後臉撲殺 來改善效能。 不過,當網格以 切割平面 切割時,使用者通常會查看三角形的背面。 如果這些三角形被撲殺,結果看起來並不令人信服。
可靠地防止此問題的方法,是轉譯三角形 雙面 。 由於不使用後臉撲殺具有效能影響,根據預設,Azure 遠端轉譯只會針對與切割平面交集的網格切換成雙面轉譯。
轉 single-sided 譯 設定可讓您自訂此行為。
警告
轉 single-sided 譯設定是實驗性功能。 未來可能會再次移除。 請勿變更預設設定,除非它確實解決了應用程式中的一個重要問題。
必要條件
轉 single-sided 譯設定只會對已將 選項設定為 SingleSided
的 opaqueMaterialDefaultSidedness
網格 產生效果。 根據預設,此選項會設定為 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);
}