問題タブ [multisampling]
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.
qt - QGLWidget の透明なシェーダーは透明な背景につながります (シースルー)
私は QGLWidget を持っています:
アンチエイリアシングのために、私は憤慨して実装しましたSamplebuffer
。
いくつかの透明なメッシュでは、GL_BLEND
次の関数を使用しました。
私のウィジェットには、関数で描かれた背景もありpainGL()
ます:
私が抱えている問題は、透明なメッシュがレンダリングされる場所でウィンドウが透明になることです。
BLEND
描いた色付きの背景に を適用したい。
描画する前に透明な白のないウィジェットをクリアしようとしましたが、これは役に立ちませんでした。
詳細については、この図を参照してください: http://i.stack.imgur.com/AZx3f.png
SampleBuffers を実装する前は、この問題は発生しませんでした。
opengl - OpenGL: 後処理 + マルチサンプリング =?
私は OpenGL にかなり慣れていないので、シーン レンダリングに後処理ステージを追加する方法を見つけようとしています。私がこれまでに知っていることは、FBO を作成し、それにシーンをレンダリングした後、後処理シェーダーを使用して FBO からのテクスチャを入力としてバック バッファーにレンダリングできるということです。
しかし、これが私の知識を超えているのは、マルチサンプリングが投入されたときです。FBO はマルチサンプリングする必要があります。1. ポストプロセス シェーダーがサブサンプルを 1:1 で操作して、最終的なマルチサンプリングされた画面出力を生成するか、または 2. シェーダーが複数のサンプルを解決し、各画面ピクセルに対して 1 つの画面フラグメントを出力する必要があります。これらはどのように行うことができますか?
c++ - OpenGL の複数のレンダー ターゲットとマルチサンプリング
OpenGL で複数のレンダリング ターゲットを使用する場合、明示的なマルチサンプリングを使用すると問題が発生します。
最初のジオメトリ パス中にレンダリングされる 4 つのレンダー ターゲット (位置、拡散 + 不透明度、法線、鏡面反射 + 指数) があります。
これらはすべて、フレームバッファ オブジェクトにアタッチされた非マルチサンプリング テクスチャであり、glDrawBuffers() を使用してレンダー ターゲットとして設定されます。これは問題なく動作し、後でこれらのテクスチャをサンプリングして、ライティングの計算に必要な情報を取得できます。素晴らしい。
取得しているエイリアシングの一部を削除したいので、マルチサンプル テクスチャを使用して明示的な MSAA の実装を開始しました。ただし、代わりにマルチサンプル テクスチャをレンダー ターゲットとして使用すると、最初のレンダー ターゲットのみが描画され、残りは空白のままになります。
シェーダーでのテクスチャのセットアップ、バインド、読み取りの方法を変更する以外は、他のコードは変更していません。
マルチサンプリングされたテクスチャは、次のコードを使用してフレーム バッファ オブジェクトにアタッチされます。
マルチサンプリングされた深度/ステンシル テクスチャも添付されます。
次に、フレームバッファがバインドされ、描画バッファが設定されます
次に、通常どおりジオメトリを描画します。ただし、apitrace で検査すると、最初の色のアタッチメントだけが引き込まれていることが明らかです。これは、通常の (マルチサンプリングされていない) テクスチャを使用する場合には当てはまりません。
ただし、4 つの描画バッファはすべて、まだ確実に設定されています。
opengl - カバレッジへのアルファの働き
カバレッジに対するアルファの働きについて質問があります。カバレッジ値は、ピクセルのどのサンプルがプリミティブによってカバーされるかを指定します。カバレッジにアルファを使用すると、アルファ値とピクセルのカバレッジ値の AND を取り、最終的なカバレッジを決定します。Superbible は、「ピクセルの 66% がプリミティブによってカバーされ、アルファ値が 40% の場合、最終的なカバー率の値は 60 x 40%、つまり 25% になり、8 サンプル バッファーの場合、2 つのサンプルがカバーされる」と指定します。しかし、サンプルレベルではどのように機能しますか? また、8 つのサンプルのうちどのサンプルをカバーするかをどのように決定するのでしょうか?
カバレッジが各サンプルのビット フィールドである場合、AND 演算は各サンプルに対してどのように実行されますか?
opengl - OpenGL は、ピクセル形式が整数ベースのマルチサンプリングされた FBO に接続されたカラー バッファをどのように解決しますか?
renderbuffer
次のようにフォーマットするとします。
そして、それを FBO にアタッチし、何かを描画し、それをマルチサンプリングされていない FBO にブリットしてマルチサンプリングを解決し、最後に glReadPixels を呼び出して、結果の画像から符号なし整数 (ピクセルごとに 1 つ) を取得するとします。
どのような整数が得られますか?
それらのいくつかは複数のサンプルのブレンドである可能性がありますか、それともこの場合はピクセルごとに 1 つのサンプルのみが選択されているのでしょうか (おそらく、このコンテキストでは整数ベースの形式はブレンド可能とは見なされないため)、他のサンプルは破棄されますか? それとも何か他のことが起こりますか?