問題タブ [ssao]

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 投票する
3 に答える
502 参照

opengl - スケーラブル アンビエント オブスキュランスのレンダリングの問題

この SAO アルゴリズムを実装しようとしています。

次の結果が得られます。

結果

鼻が壁の上にある理由がわかりません。Z バッファの問題のようです。

ここに私の入力値があります:

深度バッファーのミップマップの使用を無効にすることを除いて、元のシェーダーを変更せずに使用しています。

私の深度バッファ(別のシーンで、申し訳ありません):

深さ

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

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

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

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

またはこれ:

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

xna - ワールド空間の代わりに通常のビュー空間を計算する

これについてお役に立てれば幸いです。私は現在遅延レンダラーを使用しており、SSAO を実装しようとしていますが、それにはビュー空間法線が必要であり、現在ワールド空間法線を持っています。それらを変換する方法を見つけようとしていますが、スタックし続けています。

これは私の頂点シェーダーの主要部分であり、instanceTransformインスタンス化されたモデルにも同じコードが使用されるため、ワールド マトリックスまたはインスタンス マトリックスの転置のいずれかです。

ピクセル シェーダーでの通常の計算は次のとおりです。

助けていただけますか?

0 投票する
2 に答える
1088 参照

glsl - Vulkan を使用したフラグメント シェーダーでのテクスチャ フェッチが遅い

カーネル サイズ 64 の SSAO シェーダーを実行しています。

SSAO フラグメント シェーダー:

samplerposition テクスチャには の形式VK_FORMAT_R16G16B16A16_SFLOATがあり、フラグを付けてアップロードされVK_MEMORY_PROPERTY_DEVICE_LOCAL_BITます。

nvidia K1100Mグラフィックカードを搭載したラップトップを使用しています。コードを renderdoc で実行すると、このシェーダーには114 ミリ秒かかります。を 1に変更すると、 1 mskernelSizeかかります。

このテクスチャのフェッチ時間は正常ですか? それとも、どこかで何か間違った設定をしている可能性がありますか?

レイアウト遷移がうまくいかなかったようで、VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL代わりにテクスチャが入っていVK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMALます。

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

c++ - SSAO シェーディングがカメラで奇妙に動く (gbuffer の計算が間違っている)

このバージョンの ssao をこのチュートリアルで実装しようとしています:

http://www.learnopengl.com/#!Advanced-Lighting/SSAO

レンダー テクスチャの最終的な結果は次のとおりです。

ここに画像の説明を入力

カメラを動かすと影がついてくる

ここに画像の説明を入力

カメラである種の行列乗算が欠けているようです。

コード

gBuffer頂点

gBuffer フラグメント

SSAO頂点

SSAOフラグメント

私は周りを読んで、誰かが同様の問題を抱えていて、ビューマトリックスをssaoシェーダーに渡し、sampleDepthを掛けたのを見ました:

しかし、それは事態を悪化させるだけのようです。

影がカメラと共に移動するのを見ることができる上からの別のビューを次に示します。

ここに画像の説明を入力

カメラを特定の方法で配置すると、物事が整列します

ここに画像の説明を入力

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

c++ - OpenGL Computing Normals and TBN Matrix from Depth Buffer (SSAO 実装)

このチュートリアルに従って、OpenGL で SSAO を実装しています: Jhon Chapman SSAO

基本的に、説明されている手法では、フラグメントの法線に沿った向きの Hemispheric カーネルを使用します。次に、サンプルのビュー スペースの z 位置が、そのスクリーン スペースの深度バッファー値と比較されます。深度バッファの値が大きい場合は、サンプルがジオメトリで終了したことを意味するため、このフラグメントを遮る必要があります。

この手法の目的は、オブジェクトの平面がグレー表示される従来の実装アーティファクトを取り除くことです。

私は2つの小さな違いがある同じ実装を持っています

  • カーネルを回転させるためにノイズ テクスチャを使用していないので、バンディング アーティファクトがありますが、今のところ問題ありません。
  • ピクセル単位の法線を含むバッファーにアクセスできないため、深度バッファーのみを使用して法線と TBN マトリックスを計算する必要があります。

アルゴリズムは正常に機能しているようです。フラグメントがオクルードされているのがわかりますが、まだ顔がグレー表示されています... IMO TBN マトリックスを計算する方法から来ています。法線は問題ないように見えますが、カーネルが適切に位置合わせされていないようで、サンプルが顔で終わるため、何かが間違っているに違いありません。

スクリーンショットは、8 サンプルのカーネルと半径 .1 のものです。1 つ目は SSAO パスの結果のみで、2 つ目は生成された法線のデバッグ レンダーです。

これは、Normal および TBN Matrix を計算する関数のコードです。

そしてSSAOシェーダー

深度バッファから計算された法線 SSAOパス

更新 1

TBN 計算関数のこのバリエーションでは、同じ結果が得られます