2009-05-21 9 views
1

私のエンジンでは、頂点/ピクセルシェーダファイルのペアからCgシェーダを読み込みます。シェーダを積み重ねて(照明+素材など)それらを組み合わせることができるようにしたいと思います。シェーダを分割して別々の関数に分割し、それらのシェーダスクリプトの文字列を1つ作成するのではなく、Cgで異なるシェーダを積み重ねる方法について知っていますか?Cgシェーダをスタッキングする

答えて

2

DirectX 11のダイナミックシェーダリンケージ機能に似ていますか? Cgのインターフェイス機能を使用すると、同じようなことを実現できます。シェーダを再設定して、照明が計算される方法を変更する、またはマテリアルタイプを変更するなどの作業を簡単かつきれいに行うことができます。

たとえば、シェーダを書きたいが、照明の計算方法を変更する必要があるとします。何らかの形で光を計算する関数を持つLightインターフェースを定義することができます。他の場所では、たとえば、CoolLightとUberLightのようにLightインターフェイスを実装します。実行時に、他のパラメータを指定するのとほぼ同じ方法で、Lightインターフェイスの実装を使用するかどうかを指定できます。

Cgユーザーマニュアル(http://developer.download.nvidia.com/cg/Cg_2.2/CgUsersManual.pdf)をご覧になることをお勧めします。 「共有パラメータとインタフェース」を検索すると、小さな例があります。

関連する問題