問題タブ [msaa]
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.
directx-11 - msaa x4 を有効にするときに SRV をサンプリングする方法?DirectX11
Introduction_to_3D_Game_Programming_with_Directx_11 から dx11 を学んでいます。msaa がなくても大丈夫です。有効にすると、.fx および C++ コードがうまく機能しなくなります。誰かがそれを経験し、この状況に対処する方法はありますか?
コードの前:
msaa で作成したテクスチャを texture2D にバインドできないため、msaa を常に ON にしています。
コードの後:
しかし、texColor は私が望む正しいピクセルではありません。msaa で SRV をサンプリングするにはどうすればよいですか? msaa のない UAV を msaa のある SRV に変換する方法は?
また、対応する hlsl コードを使用して C++ ゲーム コードで msaa を有効または無効にする方法を教えてください。互いに異なる hlsl を保持する必要がありますか?
opengl-es - 非マルチサンプル FBO をマルチサンプル FBO にコピーする
私は、GLES 3 を使用するアプリケーションでレンダリングからテクスチャへのアプローチを実装しようとしてきましたが、動作しましたが、フレーム レートの低下に少しがっかりしています。
これまでのところ、EGL_SAMPLES=8 を使用して作成されたマルチサンプリング FBO であるメイン FBO に直接レンダリングしてきました。
私が基本的に望んでいるのは、まだ描画している間に、既に描画されているピクセルを保持できるようにすることです。だから私はテクスチャへのレンダリングアプローチがそれを行うべきだと考えました。次に、必要なときにオフスクリーン FBO のテクスチャのセクションを読み取り、レンダリングが完了したら、すべてをメイン FBO にブリットします。
これを掘り下げると、マルチサンプル FBO と、マルチサンプル FBO を解決しなければならない非マルチサンプル テクスチャ FBO を備えたシステムを実装する必要があることがわかりました。次に、解決済みをメインの FBO にブリットします。
これはすべて機能しますが、問題は、上記のシステムとマルチサンプリングされていないメイン FBO (EGL_SAMPLES=0) を使用すると、EGL_SAMPLES= でメイン FBO のみを使用した場合に得られるフレーム レートと比較して、フレーム レートが大幅に低下することです。 8.
これをもう少し掘り下げると、オンラインで報告している人々と、マルチサンプリングへの最速のアプローチは EGL_SAMPLES を使用することであると書かれているhttps://community.arm.com/thread/6925の投稿を見つけました。実際、ターゲット ボードである jetson tk1 でも同じように見えます。
これが最終的に私を質問に導き、長い紹介をお詫びします:
EGL_SAMPLES を使用するメインのマルチサンプル FBO に最終的にブリットされるすべてのレンダリングに非マルチサンプルのオフスクリーン fbo を使用するように設計できる方法はありますか?
opengl - CPU での個々の MSAA サンプルの後処理
コンピュータ ビジョン タスクのために、メッシュのエッジ シルエットの周りで OpenGL レンダリングをサブピクセル サンプリングすることに興味があります。MSAAを使って効率的にやろうと思っています(ただし、アプリケーションはアンチエイリアス用ではありません)。マルチサンプリングで私が見つけた問題は、GPU からサンプルを読み取るために、フレームバッファを非マルチサンプリングにしかブリットできないため、個々のサンプル情報を復元できないことです。私の質問は次のとおりです。
- サンプルごとの (GL_SAMPLE_SHADING) 計算の結果を格納するフラグメント シェーダーを実装して、それらのサンプルを CPU に読み込めるようにする方法はありますか? glSampleID を使用して出力を別の出力バッファーにインデックス付けすることを考えましたが、それが可能かどうかはまったくわかりません。おそらく、OIT に使用されるリンク リスト構造のような方法 (つまり、http://on-demand.gputechconf.com/gtc/2014/presentations/S4385-order-independent-transparency-opengl.pdf )? ただし、GPU ですべての計算が実行されるため、リンクされたリスト データを CPU から何らかの方法で読み取ることができるかどうかはわかりません。
おそらくMSAAは間違ったアプローチであり、そうする他の方法があります. 私の最後の手段は、レンダリングを x 回スーパーサンプリングして、個々のサンプルを復元することだと思いますが、それは非常に非効率的な解決策のようです。