描いた線に光る効果を追加するにはどうすればよいですか? Linux用のOpenGLを使用しています。
4 に答える
Nehe Lesson 36で説明されている放射状のぼかし効果を実装できます。主なアイデアは、描画をテクスチャにレンダリングし、描画をフレームバッファにコピーする準備ができるまで、レンダリングごとに小さなオフセットで N 回実行することです。
Qt と OpenGLを使用する小さなデモを作成しました。元の図面(ぼかしなし) を以下に示します。
次の画像は、ぼかし効果がオンになっている図面を示しています。
大したことではないことはわかっていますが、それは始まりです。
私もかつてこれに対する非常に簡単な解決策があることを望んでいましたが、残念ながら、少なくとも初心者にとっては少し複雑です.
現在、API (D3D、OpenGL) に関係なく光る効果を実装する方法は、ピクセル/フラグメント シェーダーを使用することです。通常、シーンをレンダリングする複数のレンダー パスが必要です。次に、「光るオブジェクト」のみが表示されるパスをレンダリングし、ブルーム ピクセルシェーダーを適用してそれらを合成します。
詳細については、@Valmond が提供するリンクを参照してください。
編集:
これは、法線、位置、および「グロー フラグ」などのその他の情報がテクスチャにレンダリングされる、つまりテクスチャのさまざまなコンポーネントに格納される遅延レンダリングで実現できることを付け加えておく必要があります。次に、必要なすべてのデータがそのレンダリングされたテクスチャから利用できるため、シェーダーはテクスチャから読み取り、稲妻の計算と後処理エフェクトを 1 回のパスで実行します。
これをチェックしてください:http://developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch21.html
グロー効果の作り方を簡単に説明します。
シェーダーを使用せずに、テクスチャにレンダリングして放射状のブラーを実行することもできます。出発点として、NeHe-Tutorialsをチェックしてください。