クローズド ソースの 3D アプリケーションである Maya 内で実行されるプラグインの一部として GLSL プログラムを作成しています。私のプラグインは、カスタム ジオメトリを、アプリケーションがレンダリングするデフォルトのポリゴン ジオメトリと同じイメージ バッファにレンダリングします。アプリケーションはライティングとシェーディングに OpenGL 固定パイプラインを使用しますが、私は GLSL を使用してカスタム ジオメトリとマテリアルをレンダリングしています。
私の問題は、シェーダーで固定パイプライン ライトの動作を模倣したいということです。アプリケーションは均一にライトを定義しgl_LightSource
ます。アプリケーションのデフォルトのポリゴン ジオメトリに割り当てられたときと同じカスタム ジオメトリに割り当てられたときに、同じ方向、強度などを持つようにします。
フィールドは明確に文書化されgl_LightSource
ていますが、固定パイプラインがそれらのフィールドをどのように解釈するかについての決定的な文書は見つかりません。GLSL でポイント/ディレクショナル/スポット ライトをコーディングする方法の例は多数ありますが、固定パイプラインを正確に模倣しているようには見えません。たとえば、アプリケーションがそれらの組み合わせを定義している場合、ライトがポイント ライト、ディレクショナル ライト、スポット ライトのいずれであるかをどのように判断しますか? シェーダーに過度の分岐を導入することなく、ライト タイプの混合を処理できますか?
要するに、固定関数パイプラインがどのように評価されるかについての決定的なドキュメントまたは例はありますgl_LightSource
か?