先日のmqoでの曲面のこともあり、DX11世代ではテセレーションによる曲面分割のこともありとで、ちょっとCatmull-Clarkのサブディビジョンを計算するようなコードを書いてみました。詳しい理論はさておき以下のように実装できました。
なめらかな曲面が出来てくるのでなかなか楽しいです。最初はテセレーションの部分ってほとんど興味が無かったのですが、今回のようにうまくいくと、これがシェーダーで出来るのか、と思うとますますDirectX11でやってみたいなと思うようになりました。
今回苦労した点は、データの持ち方と計算方法でしょうか。
リアルタイムレンダリングという書籍の計算式ではちょっとわかりにくくて、ネット上の他の参考情報を使わせて貰いました。
参考にしたページ
- http://www.i-berry.ne.jp/~teratera/catmullclark.html
- http://d.hatena.ne.jp/u_1roh/20060627/1151390713
とくに後者の式を簡単にしたほうを実装してみました。