問題タブ [deferred-rendering]
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 - タイルベースのカリングを使用した遅延レンダリングの概念の問題
編集: OpenCL または計算シェーダーの使用に関するヘルプをまだ探しています。OGL 3.3 を使用し続け、OGL 4.3 と OpenCL 1.2 の不適切なドライバー サポートに対処する必要がないようにしたいのですが、2 つのうちの 1 つを使用せずにこのタイプのシェーディングを行うことは考えられません (ライトとタイル)。GPGPU を使用せずにタイルベースのカリングを実装することは可能ですか?
OpenGL 3.3 で遅延レンダリングを作成しました。現在、ライト パスのカリングは行っていません (すべてのライトに対してフル スクリーン クワッドをレンダリングするだけです)。これには(明らかに)大量のオーバードローがあります。(場合によっては ~100% になることもあります)。このため、ライト パス中のパフォーマンスを改善する方法を検討してきました。(ほぼ) 誰もが考える最善の方法は、スクリーン スペース タイルを使用してシーンを選別することです。これは Frostbite 2 で使用された方法でした。SIGGRAPH 2010 での Andrew Lauritzen のプレゼンテーションを読みました ( http://download-software.intel.com/sites/default/files/m/d/4/1/d/8 /lauritzen_deferred_shading_siggraph_2010.pdf ) であり、その概念を完全に理解しているかどうかはわかりません。(そして、それが他の何よりも優れている理由、そしてそれが私にとって優れているかどうか)
プレゼンテーションで、Laurtizen は、シーンをカリングするためのライト ボリューム、クワッド、およびタイルを使用したディファード シェーディングについて説明します。彼のデータによると、タイル ベースの遅延レンダラーが (群を抜いて) 最速でした。なぜなのかはわかりませんが。タイルごとにすべてのライトがまとめられているという事実と関係があると思います。プレゼンテーションでは、G バッファを 1 回読み取ってからライティングを計算するように指示されていますが、これは私には意味がありません。私の考えでは、これを次のように実装します。
これには、G-Buffer を大量にサンプリングする必要があります。それを行うと、すべてのライトに対して画面に合わせたクワッドをレンダリングするのと同じ(悪くはないにしても)パフォーマンスが得られると思います。言葉遣いからすると、次のようなことが起こっているように思われます。
しかし、一部の GPU でフラグメント シェーダーの命令制限を超えずにこれを行う方法がわかりません。誰でもこれで私を助けることができますか?また、ほとんどすべてのタイル ベースの遅延レンダラーが計算シェーダーまたは OpenCL (ライトをバッチ処理するため) を使用しているように見えますが、これはなぜですか?これらを使用しなかった場合はどうなりますか?
opengl - 深さから再構成された世界の位置が間違っている
ディファード シェーディング/ライティングを実装しようとしています。使用するバッファーの数/サイズを減らすために、深度テクスチャを使用して、後で世界の位置を再構築したいと考えました。
これを行うには、ピクセルの座標に射影行列の逆数とカメラ行列の逆数を掛けます。この種の作品ですが、位置が少しずれています。サンプリングされたワールド ポジション テクスチャとの絶対的な違いは次のとおりです。
参考までに、これは私が 2 番目のパス フラグメント シェーダーで使用するコードです。
worldPosition /= 1.85 のコメントを外すと、(私のジオメトリ/深度値の範囲で) 位置がより良く再構築されます。出力を本来あるべきもの (3 番目のテクスチャに格納されている) と比較した後、いじってこの値を取得しました。
私は近くに 0.1、遠くに 100.0 を使用しており、ジオメトリは最大で約 15 離れています。精度の誤差があるかもしれないことはわかっていますが、これはカメラに近すぎる誤差が少し大きすぎるようです。ここで何か見逃しましたか?
java - 遅延シェーディングは LWJGL でどのように機能しますか?
GLSL、Java、openGl を使用してディファード シェーディング プロジェクトを開始したい
1. 遅延レンダリング パイプラインはどのように機能しますか? 各画像のシーンをレンダリングしますか? たとえば、スペキュラ、ブラー、シャドウ テクスチャを作成する場合、これらのテクスチャごとにシーンをレンダリングする必要がありますか。
いくつかのコード スニペットを見たことがありますが、複数のレンダリング ループはありません。
2. ジオメトリ バッファとは何ですか? また、その機能は何ですか? 再レンダリングせずにテクスチャに描画できるシーン データのストレージのようなものですか?
javascript - バックボーン モデルバインダー コンバーター ajax リクエスト
ajax リクエストが完了するまで modelbinder のコンバーターを待機させる方法を知っている人はいますか? ビューでバックボーンのモデルバインダーを使用しようとしていますが、レンダリング前に ajax 呼び出しが完了するのを待っていないため、コンバーターが失敗しています。
opengl - カメラアングルで劇的に変化するSSAO
私はOpenGLでSSAOに取り組んできました。このチュートリアルのSSAO をOpenGL で遅延レンダラーに実装することにしました。残念ながら、私はそれをうまく機能させることができませんでした。SSAOで暗くなる部分は、カメラの位置によって大きく変化します。カメラが動いたときに SSAO の出力に多少の変動があることは理解していますが、これは SSAO の他の実装で観察したよりもはるかに大きいです。
これがフラグメントシェーダーコードです
positionFromDepth()
機能:
そしてocclude()
機能:
positionFromDepth()
完全に機能するレンダラーの照明ステージに同じコードを使用することを除いて、関数に問題がある可能性があると感じています(私は思います)。私はこのコードを何千回も調べましたが、間違っていると思われるものは何も見つかりませんでした。bias
、radius
、intenisty
、のさまざまな値を試しましたscale
が、問題はないようです。法線または位置が間違っているのではないかと心配しているので、それらのスクリーン ショットをいくつか示します。
再構築された位置:
通常のバッファ:
私はオクルージョン バッファの画像を含めますが、問題はカメラが動いている場合にのみ明らかになり、画像は表示に役立ちません。
ここで何が問題なのか誰にもわかりませんか?