トップページ > 記事閲覧
プログラマブルシェーダーを利用した深度バッファの作成
名前:教えてくん 日時: 2015/08/26 21:22

ピクセルシェーダーを利用して画面の奥行きを画像に記録する際、値を0〜1に丸めるにはどうしたらよいでしょうか? 何も考えずに頂点シェーダーから渡された射影座標のz値をそのまま出力したら画面が真っ白になってしまいました。 そこで射影座標について調べ、z/wにするとよいという情報を得たのでさっそく試してみたのですが、望ましい結果にはなりませんでした。 (見た目は真っ白な画面なのですが白飛びしているわけではなく結果がすべて1になっているようです) 試しに出力をz/1000.fにしてみたところ、ちゃんと奥行きに応じた色が出力されたのですが、適当に設定した係数で正確に1〜0になっているか怪しいのであまり使いたくないです。 (カメラ設定に依存しているものと思ったのですが、nearfarを変えて試しても結果は変化しませんでした。不気味です) また値が線形(奥行きに比例している)なのか、手前や奥のどちらかに偏って出力されているのかも定かでないのも気に入りません。 浮動小数点の画像を使っているのでデータが損なわれることはない(と思う)のですが、 エフェクトをかける時に調節しづらいため、できれば0〜1で統一したいと思っています。 どうしたらよいのでしょう?
メンテ

Page: 1 |

Re: プログラマブルシェーダーを利用した深度バッファの作成 ( No.1 )
名前:管理人 日時:2015/08/27 00:06

頂点シェーダーからピクセルシェーダーに渡す座標は射影座標ではなくビュー座標( カメラ座標 )にして、 ピクセルシェーダーでは頂点シェーダーから渡されたビュー座標の z の値からカメラの near の値を引いた後、 カメラの near から far までの距離の値( far - near )で割ってあげたものを色として出力すると 良い感じに 0〜1 になると思いますので、よろしければ試してみてください
メンテ
Re: プログラマブルシェーダーを利用した深度バッファの作成 ( No.2 )
名前:教えてくん(解決) 日時:2015/08/27 00:56

やはり定数を渡して解決するしかないのですね 返信ありがとうございました
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存