主に答えは次のようになります:それは異なります。
エフェクトフレームワークには、Pass-> Applyを使用してパイプライン全体を一度に設定できるという大きな利点があります。これにより、作業が非常に簡単になりますが、適切に使用しないとコードがかなり遅くなる可能性があります。これが、Microsoftが廃止することを決定した理由です。 、しかし、複数のシェーダーを使用して、同じように、またはさらに悪いことを行うことができます。directxtkは、実際にはそのかなり良い例です(電話の開発でのみ問題ありません)。
ほとんどの場合、エフェクトフレームワークでは、個別のシェーダーの使用を回避できるいくつかの追加のAPI呼び出しが発生します(描画呼び出しバウンドが重要になる可能性がある場合は同意しますが、カリング/インスタンス化手法を使用してその部分を最適化することを検討する必要があります)。個別のシェーダーを使用すると、すべての状態/定数バッファー管理を自分で処理する必要があります。自分が何をしているのかがわかっている場合は、おそらくより効率的な方法で処理する必要があります。
fxフレームワークについて私が本当に気に入っているのは、非常に優れた反射と、設計段階で非常に役立つセマンティクスの使用です(たとえば、float4x4 tP:PROJECTIONを実行すると、エンジンはカメラの投影をシェーダーに自動的にバインドできます)。
また、シェーダーステージ間のコンパイル時のレイアウト検証は、オーサリングに非常に便利です(fxフレームワーク)。
個別のシェーダーの大きな利点の1つは、必要なステージのみを簡単に交換できるため、パイプラインの残りの部分に触れることなく、適切な量の順列を節約できることです。