問題タブ [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.

0 投票する
1 に答える
692 参照

c++ - OpenGL マルチサンプリングされた 2D テクスチャを使用して深度バッファをフレームバッファにアタッチするにはどうすればよいですか?

GL_TEXTURE_2D_MULTISAMPLE を使用する場合、フレームバッファ オブジェクトに深度バッファをアタッチするにはどうすればよいですか。glCheckFramebufferStatus(msaa_fbo)以下のコードからは 0 を返します。ドキュメントから、これは msaa_fba がフレームバッファではなく、から作成されていることを意味しているようですglGenFramebuffers(1, &msaa_fbo);

また、エラーが発生した場合はゼロが返されます。GL_INVALID_ENUM は、ターゲットが GL_DRAW_FRAMEBUFFER、GL_READ_FRAMEBUFFER、または GL_FRAMEBUFFER でない場合に生成されます。

エラーは 1280 で、これは GL_INVALID_ENUM を意味すると思います。

深度バッファーの添付ファイルを削除すると、プログラムが実行されてレンダリングされます (ただし、深度テストはありません)。その後、実行してもエラーは引き続き発生します。深度アタッチメントが含まれていると、フレームごとにエラー (1286) が発生します。これは INVALID_FRAMEBUFFER です。ここから先の続きがわかりません。私が見たいくつかの例は、多少同じですが、うまくいくようです。

ほとんどのコードはthisからのものです。

編集

ステータスチェックが間違っていましたGLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);。深さを含めなくてもエラーは発生しません。深さを含めると、次のエラーが表示されます: GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE.

編集2

ドキュメントによると、これは GL_TEXTURE_SAMPLES と GL_RENDERBUFFER:SAMPLES が一致しない場合に発生します。

GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE は、GL_RENDERBUFFER_SAMPLES の値がアタッチされたすべてのレンダーバッファーで同じでない場合に返されます。GL_TEXTURE_SAMPLES の値がすべてのアタッチされたテクスチャで同じでない場合; または、添付された画像がレンダーバッファとテクスチャの混合である場合、GL_RENDERBUFFER_SAMPLES の値は GL_TEXTURE_SAMPLES の値と一致しません。

しかし、彼らはそうします!

私は次のようにそれらをテストしました:

出力は次のとおりです。

編集3

次のように、テクスチャとレンダバッファの代わりに 2 つのテクスチャを使用することで、この問題を回避しました。

私はまだ元の実装の何が問題だったのかに興味があるので、質問はまだ残っています.

0 投票する
1 に答える
488 参照

opengl - MSAA の奇妙な結果

OpenGL を使用した MSAA。

「glutSolidSphere」を使用して白い球を描き、シルエットの「dot(Normal, CameraVec) < threshold」を黒で塗りつぶしました。
そして、内側の白い円の輪郭に奇妙な結果が見つかりました。MSAA が機能していないようです。
ちなみに、黒丸の輪郭(一番外側)ではうまくいきました。

サンプル数を増やせば、内側の白丸の輪郭でもうまくいきます。
サンプルの解決はフラグメントシェーダーの後に発生するため、サンプルの数に関係なくうまく機能するはずです。

これは正しい結果ですか?はいの場合、なぜですか?

以下は、4 サンプル (左) と 32 サンプル (右) の結果です。

MSAA×4 MSAA x32

0 投票する
1 に答える
1228 参照

python - クリック後にPythonでGUIオブジェクトの名前と値を取得する方法

Windows アプリケーションのユーザー シナリオを記録したいと考えています。このために、画面キャプチャとマウス位置の横にあるオブジェクトをマウスでクリックした後、GUI オブジェクトのオブジェクト タイプ、オブジェクト名、およびオブジェクト値を取得/ログに記録したいと考えています。

私はハウツーを見つけることに行き詰まっています。助けてください。

次のPythonコードがあります。

0 投票する
0 に答える
1040 参照

c++ - D3D11 Render to Texture Transparency/MSAA の問題

私はこれを Gamedev に投稿しましたが、それから数日経ちましたが、何の被害もありませんでした。私が見逃したものを誰かが知っているかどうかを見たかった.

通常、私はこれらを 2 つの質問として投稿しますが、それらが絡み合っていると感じています。要するに、透明な表面に表示するスプライトのデータを生成するパーティクル システムがあります。次にジオメトリ シェーダーに送信され (パス スルー頂点シェーダーを介して)、1 つの頂点をクワッドに押し出し、最後にピクセル シェーダーに送信されます (以下のコード)。

ピクセルの色は、テクスチャ アトラス (64x64 サーフェス) として使用されている 32 ビット DDS (透明度を示すためにアルファ チャネルを使用) からサンプリングされます。

2 つの問題は次のとおりです: 1 つのスプライトはその透明度を適切に尊重しますが、そのスプライトが別のスプライトを通過すると、四角形の 1 つが透明な四角形で他の四角形を上書きします (添付の画像を見ることができます: 最初の画像はそれらは重なっており、2 番目は 1 つが少し離れた後です)。私は一生、MSAAに協力してもらうことはできません. output->ResolveSubresource->output_msaa->CopyResource->final_output を実行するためにトリプル Texture2D システムをセットアップしましたが、レンダリングされますが、まだエイリアスが付けられています。

デバイス、テクスチャ、およびサンプラーの状態のコードは次のとおりです。

以下は、コピーのために output_texture から output_temp テクスチャに変換するコードです。

これは、次のように使用されます。

描画用に別の場所に少しずつコピーしました。

現在のピクセル シェーダーは次のとおりです。

最後に、透明なクリッピングを示す画像が添付されます (問題のスプライトは画面の中央にあります)。

みなさん、よろしくお願いします!

通常のスプライト 通常のスプライト

スプライトのクリッピング スプライトのクリッピング

更新: クリッピングの問題は、実際にはグラフィック アーティストと私との間の誤解が原因でした。テクスチャは、従来のアルファではなく、透明の指標として黒を使用していました。これを考慮して (ピクセル シェーダーで純粋な黒を float4(0,0,0,1) に変更することにより)、クリッピングを解決しました。MSAA の問題は残ります。

0 投票する
1 に答える
1012 参照

c++ - ヒープメモリが不足しているのはなぜですか?

そこで、Jetbrains Clion IDE を使用して C++ でレイトレーサーを作成しています。マルチサンプリング アンチエイリアシングを有効にして 600 * 600 のイメージを作成しようとすると、メモリが不足します。次のエラーが表示されます。

'std::bad_alloc'
what(): std::bad_allocのインスタンスをスローした後に呼ばれる終了

このアプリケーションは、異常な方法で終了するようランタイムに要求しました。詳細については、アプリケーションのサポート チームにお問い合わせください。

私のレンダリング機能のコード:

幅: 600 高さ: 600 numberOfSamples: 80

C++初心者なので、よろしくお願いします。Microsoft Visual Studio の C# でも同じことを試みましたが、メモリ使用量は 200MB を超えませんでした。私は何か間違ったことをしているような気がします。ご協力いただける場合は、詳細をお知らせいたします。

0 投票する
1 に答える
601 参照

hlsl - OIT のピクセルシェーダー内の MSAA サンプル番号を取得する

Order Independent Transparency を自分で実装しようとしています。何もなく終わったようなものです... 下の図でわかるように、MSAA を使用した OIT は何らかの問題があります。サンプルのせいだと思います。各三角形のエッジには 4 つのサンプルがあるためです (三角形のエッジのみ)。

MSAA あり/なしのアルファブレンディングと OIT

MSAA あり/なしのアルファブレンディングと OIT

ここにも HLSL のシェーダー コードがあります。

リストを作成する

リストを並べ替える

完成した画像をレンダリングする

私の考えは、リスト内にサンプル番号を書き込むことです。最後にエンドピクチャをレンダリングするときに、リストノードを比較し、それらが接近している場合は、サンプル番号を確認して平均色を計算したいと考えています。しかし、実際のサンプル番号を取得する方法がわかりません...

ところで:このバグを修正するためのより良いアイデアを持っている人はいますか?高速な計算である必要はありません。リアルタイムでレンダリングしません。

0 投票する
1 に答える
1535 参照

c++ - MSAA を使用したスワップ チェーンの作成が失敗する

MSAA をサポートするスワップ チェーンをセットアップしようとすると、DXGI_ERROR_INVALID_CALLエラーが発生します。スワップ チェーンを作成するコードは次のとおりです。

利用可能な最適な MSAA 設定を見つける方法は次のようになります。

すべてが完璧に機能するのrsd.enableMSAAはいつですか。false

私のデバイスは次のように作成されます (ハードウェア サポートがないため、ワープ アダプターを使用しています)。

私のログは言う: