Single-sided レンダリング

ほとんどのレンダラーでは、パフォーマンスを向上させるためにバックフェイス カリングを使用します。 ただし、切断面を使用してメッシュが切り開かれると、多くの場合、三角形の裏面が見えるようになります。 それらの三角形がカリングされている場合、表示される結果は納得のいくものではありません。

この問題を確実に回避する方法は、三角形の 両面 をレンダリングすることです。 バックフェイス カリングを使用しないとパフォーマンスに影響があるため、既定では、Azure Remote Rendering でのみ、切断面と交差しているメッシュについて両面レンダリングに切り替わります。

この動作は、 single-sided レンダリング の設定を使用してカスタマイズできます。

注意事項

single-sided レンダリングの設定は試験的な機能です。 将来、再度削除される可能性があります。 アプリケーション内の重大な問題を実際に解決する場合を除き、既定の設定は変更しないでください。

前提条件

single-sided レンダリングの設定は、opaqueMaterialDefaultSidedness オプションを SingleSided に設定して変換されたメッシュにのみ効果があります。 既定では、このオプションは DoubleSided に設定されています。

Single-sided レンダリング設定

3 種類のモードがあります。

Normal: このモードでは、メッシュは変換されるときに常にレンダリングされます。 つまり、opaqueMaterialDefaultSidednessSingleSided に設定して変換されたメッシュは、切断面と交差している場合でも、常にバックフェイス カリングが有効な状態でレンダリングされます。

DynamicDoubleSiding: このモードでは、切断面がメッシュと交差すると、両面レンダリングに自動的に切り替わります。 これは既定のモードです。

AlwaysDoubleSided: すべての片面ジオメトリが常に強制的に両面レンダリングされるようにします。 このモードは大部分が公開されているので、single-sided レンダリングと double-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 のドキュメント

次のステップ