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

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

opengl - SSAO をグローバル ライトおよびローカル ライトと組み合わせる

最近、エンジンに SSAO を実装しました (ディファード シェーディング) が、SSAO とグローバル ライトおよびローカル ライト (ポイント ライト) をどのように組み合わせるかについて非常に不安です。

私はこれを行う必要があります:

またはこれ:

0 投票する
3 に答える
3052 参照

javascript - ND バッファーと G バッファーの違いは何ですか?

私は WebGL の初心者です。ND-Buffers と G-Buffers が WebGL 開発の戦略的な選択であるかのように、いくつかの投稿を読みました。

ND バッファーと G バッファーはパイプラインのレンダリングにどのように関連していますか? ND バッファーはフォワード レンダリングでのみ使用され、G バッファーは遅延レンダリングでのみ使用されますか?

両方を実装する JavaScript コード例は、違いを理解するのに役立ちます。

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

opengl - 単一オブジェクトのガウスぼかし

シンプルなガウスぼかしを実装し、遅延シェーディングと組み合わせましたが、うまくいきました。シーンに別のオブジェクトを追加しようとすると、オブジェクトもぼかしの影響を受けますが、これは私が探しているものではありません。ぼかしをターゲット オブジェクトの画像のみに影響させることは可能ですか、それともシーン全体に影響を与えることになっていますか?

ぼかしには 2 つの頂点シェーダーを使用しています。1 つは水平方向のテクスチャ座標を計算し、もう 1 つは垂直方向のテクスチャ座標を計算します。両方の頂点シェーダーは同じフラグメント シェーダーを使用しており、これらの事前に計算されたテクスチャ座標でテクセルの色のガウス加重平均を計算するだけです。

ぼかしオブジェクトのフラグメント シェーダー:

この場合gColorSpecは、ディファード シェーディングのカラー サンプル (イメージ) です。

ディファード シェーディングのライトニング パスでは、1 番目と 2 番目の頂点シェーダーをアクティブにしています。

すでに試しました:遅延シェーディングを使用しているため、ジオメトリをレンダリングする別のフレーム バッファーを作成しようとしました。これは、ぼかし画像オブジェクトにのみ使用されます。シーン全体のジオメトリを追加するフレームバッファが 1 つしか必要ないように見えるため、これは機能しません。また、他の画像オブジェクトgColorSpecとの接続があるかどうかを確認するために、を置き換える別の添付ファイルを追加しようとしました。gColorSpec

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

opengl - コンピューティング シェーダーを使用しないタイル張りの遅延シェーディング

私はディファード レンダラーを構築しています。シーンで大量のライトをサポートしたいので、タイル張りのディファード シェーディングを調べました。

問題は、OpenGL 3.3 ハードウェアをターゲットにする必要があり、GLSL 計算シェーダーをサポートしていないことです。

通常のシェーダーでタイル遅延シェーディングを実装する可能性はありますか?

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

glsl - マルチサンプリング、「一意の」テクセルを読み戻す方法

ディファード ライティング レンダラーでアンチエイリアシングを実装する方法を検討しています。つまり、ジオメトリ パス、ライティング アキュムレーション パス、シェーディング用の 2 番目のジオメトリ パスの 3 つのパスです。

通常のマルチサンプリング (MSAA) では、目標はポリゴン エッジのピクセルのみをマルチサンプリングすることです。そして、三角形ごとに、フラグメントシェーダーの結果をそれがカバーするサブピクセルにのみ書き込みます。しかしもちろん、ディファード ライティングではこれが少し問題になることは既知の問題です。

目標は、基本的にスーパーサンプリングになるため、2 番目と 3 番目のパスですべてのサブピクセルを評価しないようにすることです。それを達成するための別の(より良い/可能性のある)方法を誰かが知っているなら、私はそれを聞きたいです. しかし、ここに私の考えがあります:

最初のパスでフラグメントシェーダーを作成できる場合は、三角形がカバーする最初のサブピクセルにのみ書き込みます。これにより、ライティング パスで書き込まれていないテクセルを無視できます。そして最後に、2 番目のジオメトリ パスで、三角形が一致する最初のサブピクセルのみを何らかの方法で読み取ります。これは、最初に書き込んでからライティングを行ったサブピクセルです (そして、カバーされたすべてのテクセルに通常どおりに書き込むので、結果は解決できます)。このようにして、「一意の」テクセルのみが 2 番目と 3 番目のパスで評価されます。

glslでこれを行う方法を誰かが言うことができますか(またはそれが不可能であることを確認してください)? これが理論的に不可能な理由はわかりませんが、gsl でそれを行う方法もわかりません。

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

deferred-rendering - OSG.JS 遅延レンダリング WebGL

OSG.JS で遅延レンダリングを行うことは可能ですか?

この例は THREE.JS を使用して実行しているのを見つけましたが、OSG.JS の例を 1 つ見つけることができません。

http://alteredqualia.com/three/examples/webgl_lights_deferred_pointlights.html

RTT を実行している SDK の例を見たことはありますが、遅延レンダリングの例が Web 上にないのはなぜですか (またはどこにあるのでしょうか)。

ありがとう