6

OpenGL で 8 つを超えるライトを実装するにはどうすればよいですか?

無制限の量のライトを効率的にレンダリングしたいと考えています。

それで、これを行うための好ましい方法は何ですか?

4

2 に答える 2

15

遅延シェーディング。

簡単に言えば、ライトなしでシーンをレンダリングします。代わりに、法線とワールド位置をテクスチャ ピクセルとともに複数のフレーム バッファ (いわゆるレンダー ターゲット) に格納します。複数のレンダー ターゲット拡張機能を使用している場合は、これを 1 回のパスで行うこともできます。

バッファーの準備ができたら、法線と位置を読み取り、1 つまたは複数の光源の光を計算するピクセル シェーダー プログラムを使用して、多数のフルスクリーン クワッドのレンダリングを開始します。

光は加法的であるため、必要なだけフルスクリーンの四角形をレンダリングし、必要なだけ光源の光を蓄積できます。

最後のステップでは、ライトとライティングされていないテクスチャ フレーム バッファの間で合成を行います。

それは多かれ少なかれ最先端の方法です。ただし、このようなシステムでフォグと透明度を機能させるのは困難です。

于 2010-01-03T00:24:55.477 に答える
7

OpenGL ライトは単純化されたシステムであり、私の知る限り、既に非推奨リストに含まれています。シェーダーを作成してライトを自分で処理する必要があります。ここを見てください。

于 2010-01-03T00:20:16.513 に答える