問題タブ [multipass]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opengl - GLSLの「コヒーレント」メモリ修飾子は、マルチパスレンダリング用のGPUドライバーによってどの程度正確に解釈されますか?
GLSL仕様では、「コヒーレント」メモリ修飾子について、「読み取りと書き込みが他のシェーダー呼び出しからの読み取りと書き込みとコヒーレントであるメモリ変数」と規定されています。
実際には、複数のレンダリングパスに関して、これが現代のGPUドライバーによってどのように解釈されるかはわかりません。GLSL仕様に「その他のシェーダー呼び出し」と記載されている場合、それは現在のパスでのみ実行されるシェーダー呼び出し、または過去または将来のパスで実行される可能性のあるシェーダー呼び出しを指しますか?私の目的では、パスを「glBindFramebuffer-glViewPort-glUseProgram-glDrawABC-glDrawXYZ-glDraw123」サイクルとして定義します。ここで、私は現在、「レンダリングループの反復」ごとに2つのそのようなパスを実行していますが、後で反復ごとにさらに多くのパスがある可能性があります。
c++ - render-to-texture を使用したマルチパス シェーディング
OpenSceneGraph を使用してマルチパス レンダリング メソッドを実装しようとしています。ただし、私の問題が理論的なものなのか、OSG の応用知識が不足しているためなのか、完全にはわかりません。これまでのところ、正射影を使用してテクスチャにレンダリングすることでマルチパス シェーディングをうまく実装できましたが、透視投影を機能させることはできないようです。
マルチパス シェーディングの実装方法がよくわかっていない可能性があります。もちろん、マルチパス シェーダーを使用してシーン全体をテクスチャにプリレンダリングしてから、最終レンダリングでそのテクスチャを使用する必要があります。ただし、シーン内のオブジェクトごとに個別のテクスチャを作成することについて話しているのではなく、事前にレンダリングされたシーン全体のスクリーンショットを効果的にキャプチャすることについて話しているのではありません。次に、そのテクスチャだけから、レンダリングされた効果を個々のジオメトリに適用します。
これは、頂点シェーダーのジオメトリごとに頂点座標の追加の変換を行う必要があることを意味すると思います。つまり、計算後:
頂点を正しくマッピングするには、さらに一歩進んで頂点のスクリーン座標を計算する必要があります (テクスチャがシーンのスクリーン ショット全体で構成されている場合)。
私が正しければ、直交ビューではなく、最終レンダリングで使用されるビューと同じパース ビューでシーンを事前レンダリングできるはずです。これは私が問題を抱えているところです。直交ビューを希望どおりに作成できますが、透視ビューは作成できません。
私のアプローチは正しいですか?私が想像できる唯一の他のアプローチは、すべてを画面いっぱいのクワッドにレンダリングすることです(実際には、画面座標に変換するのと同じことです)が、それはプリレンダリング段階で透視投影を使用する必要性を軽減しません.
考え?リンク??
編集:成功した試みでは、フラグメントシェーダーのみを使用したことも指摘する必要があります。透視投影は機能しましたが、もちろん、私が使用していた画面に合わせたクワッドは、中央ではなくオフセットされていました。パススルー頂点シェーダーを追加したところ、すべてが空白になりました。
opengl - OpenGL: フレーム バッファ オブジェクトを使用したマルチパス レンダリング
小さな 2D エンジンを開発しているときに、残念ながら私の知識レベルではあなたの助けなしには解決できない小さな設計上の問題に出くわしました。
説明させてください: 私が 2D エンジンを開発しているゲームには複雑な効果が含まれている必要があり、複数のレンダー パスが必要になる可能性があります。問題は、マルチパス レンダリングの概念を正しく理解しているかどうかわからないことです。
このレベルの知識では、次のように実装します。
- 最初に、フレーム バッファ オブジェクトを作成、セットアップ (テクスチャにアタッチするなど) し、バインドします。
- 次に、FBO のアタッチされたテクスチャにエフェクトを適用する必要があるものをレンダリングします
- 最初のパスにシェーダーを使用して、そのテクスチャを同じ FBO にレンダリングします。
- FBO のバインドを解除し、最後のパスのシェーダーを使用して、添付されたテクスチャを標準の FBO にレンダリングします。
問題は、これが私の問題を解決する最も効率的な方法であるかどうか、またはこれを行うためのより良い方法があるかどうかです。
ios - OpenGLで複数のパスを使用してライトを追加するにはどうすればよいですか?
結果を結合したい 2 つの関数があります。
それらはそれぞれ個別にうまく機能し、アンビエント ライトのみ、またはディレクショナル ライトのみでシーンを描画します。アンビエント ライトとディレクショナル ライトの両方を表示したいのですが、少し問題があります。私はこれを試します:
しかし、最初の結果しか表示されませんdraw
。両方のドローコールのセットについて、同じ方法で深さを計算します。テクスチャにレンダリングしてテクスチャをブレンドすることはいつでもできますが、それは冗長に思えます。デフォルトのフレームバッファにレンダリングするときに照明を一緒に追加する方法はありますか?
c++ - boost::spirit::multi_passからベースイテレータを取得するには?
イテレータが使用している基になるイテレータにアクセスするにはどうすればよいmulti_pass
ですか?
c++ - FFmpeg ライブラリを使用した 2 パス (またはマルチパス) エンコーディング
FFmpeg ライブラリを使用して 2 パス エンコーディングを実行したいと考えています。ドキュメントとして提供されるサンプル コードは、エンコード/デコード、多重化/逆多重化などを示していますが、エンコード プロセスはシングル パスです。2 パス エンコーディングを実行/実験したい。他の場所で提供されている例/サンプルはありますか?
前もって感謝します!
xna - オブジェクトごとのランタイム ライトマップ
XNA でゲームを作成していますが、この質問はほとんどの 3D フレームワークに当てはまります。
シーンに複数のポイント ライトが含まれています。各ライトには、位置、強度、色、および半径があります。また、ポイント ライトで照らすことができるいくつかのオブジェクトも含まれています。
私は単純なフォワード レンダラーを使用して、一度に最大 8 つのポイント ライトでオブジェクトを照らすことに成功しました。
ただし、フレームごとに光がゆっくりと消えていく、照らされたオブジェクトなど、他の効果も試してみたいと思います。
マルチパスアプローチを使用したい:
- 照らされた各オブジェクトには、テクスチャとライトマップ (レンダーテクスチャ) があります。
次に、各フレームと各オブジェクトについて:
- ライトマップをクリア (またはフェード)
- フォールオフなどを使用して、各ライトをライトマップに描画します。
- ピクセル シェーダーで texture * lightmap を使用してオブジェクトをレンダリングする
私の問題はテクスチャ座標に関連しています。ライトマップはテクスチャ マップと同じ UV マッピングを使用する必要があるため、オブジェクトを描画すると、色は次のようになります。
別の言い方をすれば、各ライトまでの距離を計算するために、ライトマップ ピクセル シェーダーでライトマップの各ピクセルのワールド位置を計算する必要があります。
これを達成するために必要な座標変換は何ですか?