エフェクトとシェーダー
Stride はプログラム可能なシェーディングパイプラインを使用しています。カスタムシェーダーを書いて Effect を作成し、描画に使用することができます。EffectSystem クラスは、エフェクトをロードする簡単な方法を提供します。
エフェクトをロードする
次の通りです。
var myEffect = EffectSystem.LoadEffect("MyEffect").WaitForResult();
その後、エフェクトをパイプライン ステートとしてバインドすることができます。
また、たいていのエフェクトにはいくつかのパラメーターが定義されています。これらのパラメーターを設定するには、描画の前にリソース バインディングを行う必要があります。
シェーダー
シェーダーは、HLSL
を拡張した Stride シェーディング言語で記述します。
継承、シェーダーのミックスイン、シェーダー入出力の自動取り込みなどによる、モジュール式シェーダーの真のコンポジションが提供されます。
エフェクト
Stride のエフェクトは、C# のような構文を使って、シェーダーをさらに組み合わせることができます。シェーダーの条件付きコンポジションを使ってエフェクトの順列を生成することができます。
すべてのプラットフォームが実行時にシェーダーをコンパイルできるわけではないため(iOS や Androidなど)、エフェクト順列ファイル(.sdeffectlog
)を使って事前にすべての序列を列挙します。
すべてをターゲットにする
Stride シェーダーは、Direct3D ではプレーン HLSL
、OpenGL では GLSL
、Vulkan では SPIR-V
といったように、ターゲットのグラフィックスプラットフォームに合わせて自動的に変換されます。
モバイルプラットフォームでは、GLSL オプティマイザーによってシェーダーが最適化され、パフォーマンスが向上します。