Shader Study

ゲーム会社で働くことになったので利用されている技術は知っておくべきだと思い、プログラマブルシェーダを勉強してみることにしました。はじめの目標として簡単なモデルビューワを作ってみるつもりです。開発環境はDirectX9を使うことに(最新の10はちょっと微妙な感じ)。モデルは就職活動時にLightwave3Dで作った戦車や装甲車を使ってみました。ちなみにXファイル形式。

model_tiger_20090608

model_sdkfz222_20090613

model_stug_20090718

シェーダーでのライティングは固定パイプラインのように自動的に描かれるのではなく、ライトの座標やポリゴンの法線などのベクトルから自分で計算式を書いて表現することができるという自由度の高い仕様。まずは基本的なランバートライトを書いてみました。光源ベクトルとポリゴンの法線の内積の値をそのまま明るさに割り当てるという非常に単純な計算。

shader_study_20091106
幾度ものエラーを乗り越え、シェーダーが通った後の画面。ポリゴンが表示されるまでは不安の連続だけれど、描かれてしまえば峠を越えた感じ。

こうして書いてみると3DCGツールのビューポートのライティングはこんな風に計算されていたんだと納得。いままでPCに描いてもらっていた感のあったCGも、自分が描いている実感に変わってきました。

 

参考資料

「DirectXシェーダプログラミング 仕組みからわかるゲームエフェクトテクニック」
http://www.amazon.co.jp/gp/product/4797344962

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中