2016-05-06 10 views
0

私のシャドーマップの実装では、私はfboにカラーアタッチメントを付けていますが、奥行きのあるアタッチメントはありません。私は、そのFBOに描画するための深度テストを有効にしています。この実装では、正しくシャドウを取得します。私はそれがどのように深さの添付ファイルなしで動作するのだろうか。誰かが私にこれを説明できますか? 私はこれは私が今まで見てきた何の深さアタッチメント(私はあなたがその場所に色の添付ファイルを使用しようとしている実感が)似ていないシャドーマッピングで奥行きのないフレームバッファー

color = vec4(gl_FragCoord.z,gl_FragCoord.z,gl_FragCoord.z,1.0); 
+0

まあ、_itはありません。しかし、詳細はなく、正確に何が起こっているのかを説明することは不可能です。 – derhass

+0

「これは機能します」を定義します。 –

+0

@NicolBolas更新された質問。 – debonair

答えて

0

としての私の深さの値を保存するために、色の添付ファイルを使用します。 4つのコンポーネントを必要とするものに分割しています。そこに彼らが存在しないにもかかわらず、深さアタッチメントのコンポーネント番目の2回目、3 RDと4 から読み込みを行うための動作を定義し、それらへの書き込みは事実上無意味です。

あなたはそれが高い単一成分の精度を持っていることを確認した後、深さテクスチャとして機能するようにカラーテクスチャを使用する(例えばGL_R32Fのようなものを試してください)と2 NDとストレージを無駄にしない場合は、3 rおよび4 thコンポーネント。別の方法として、32ビット、24ビット、または16ビットの固定小数点値の一部を複数のコンポーネントにパックして後で解凍することもできます。これは現代的なものではあまり正統的ではありません。


私はそれが深さアタッチメントなしでどのように機能するか疑問に思って。

一般的には動作しません。

あなたは深さの添付ファイルはありませんが、深さテストは有効になっているとお伝えしました...達成する予定は何ですか?

何らかの理由でデプステクスチャに描画したくないかもしれませんが、実際にテストするためにフレームバッファに何かが存在するためには、少なくともレンダバッファ深度添付が必要です。

関連する問題