2013年01月14日

OpenCLの使い方について その4

OpenCLとOpenGLの連携ができるようになりましたので、少し色々なレンダリングを試してみたいと思います。
今回は以前も少しやっていましたが、異方性反射です。

異方性反射を実現するためには、法線ベクトルだけではなく、接線、従接線ベクトルが必要になります。
この接線、従接線ベクトルの計算は、テクスチャのUV座標を使用する方法や、適当に指定した軸と法線ベクトルの外積を利用して計算する方法などがあるようです[1][2]。
今回は、上方向ベクトルと外積を使って適当に計算してみました。

後は異方性を考慮したレンダリング方法ということで、[3]を参考にAshikhminモデルを試してみました。
OpenCL側では、FBOでレンダリングした結果にガウスフィルタを掛けたりして最終的な画像を生成しているのですが、引数で渡したFBOの画像は必ず参照しないとエラーがでてしまうようです。
(文法的に間違っていないのにコンパイルエラーで-30が返ってきて無駄に詰まりました。)

実行結果

前回と同様にあぴミクさんを使用させていただいております。
[4]でいうところのnuとnvという2つのパラメータを変化させることで結果が変わります。
(見えにくいですがタイトルバーに数値を表示しています)
最初は10-10で広く浅く、100-100ぐらいでフォンシェーディングのような効果、10-2000や2000-10で縦方向もしくは横方向に伸びた光沢が得られています。



本当は部位毎に接線ベクトル方向やこのパラメータを変更した方がいいのだとは思います。

[1] http://marupeke296.com/DXPS_No12_CalcTangentVectorSpace.html
[2] http://lucille.sourceforge.net/blog/archives/000013.html
[3] http://asura.iaigiri.com/XNA_GS/xna19.html
[4] http://www.cs.utah.edu/~shirley/papers/jgtbrdf.pdf
posted by シンドラー at 03:00 | Comment(0) | TrackBack(0) | OpenCL | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック