« ひさしぶりに… | トップページ | いよいよあさって! »

2008年6月 2日 (月)

マテリアルの送り方。

Image1

XNA!XNA!C#!C#!と周りに叫んでいるのですが,最近はちょっとプログラムを組んでいませんでした。

…というのも,自分で書いたエフェクトファイルを使って,シェーダの方に色を渡すやりかたがわからなかったんですよ。

単色とかテクスチャを使ってしまえば,プログラムの方で読み込んで送れば済む話なのですが,テクスチャ作るの面倒なのですよ。できればファイルに格納されているマテリアルを自分で書いたシェーダに渡す方法がわからなくてずっとなやんでいたのですが,「ひにけにXNA」あたりに書いてあるんじゃないかと思い,記事をあさっていたらありました。

http://blogs.msdn.com/ito/archive/2007/12/21/rendering-a-model-with-a-custom-effect.aspx

カスタムエフェクトを使うってやつです。Creators Club OnlineにあるXNAのサンプルを早速ダウンロードしていじってみました。

あとついでにアンチエイリアス(4xAA)もかけてみたのですが,劇的に違いますね。

ポリゴンのジャギーが全然気にならないですよ!

で,マテリアルの送り方なのですが

// ここで任意のエフェクトパラメーターの設定もできる
    
myMaterial.OpaqueData.Add("Shininess", basicMaterial.SpecularPower * 10);

ということろで,

   myMaterial.OpaqueData.Add("ModelDiffuse", basicMaterial.DiffuseColor);

   myMaterial.OpaqueData.Add("ModelSpecular", basicMaterial.SpecularColor);

という風にシェーダに送りたいパラメータを追加してやればよいみたいです。

サンプルなんかでは,エフェクトファイルを直接指定したりしているんですが,使い回すことが多い場合,いちいちcsファイルを立ち上げて変更するのは面倒です。

そんなわけで,プロパティの項目からエフェクトファイルを指定したりできるようにしてみたりしました。

Image2

何も知らない状態だと「XNAって面倒だな~」という風に思うのですが,知っている状態だと「意外と便利!」と思えます。

日本ではXNA GSについての本がやたらと少ない(DirectX 10もそうだけど…)ので,誰か現役のゲームプログラマーさんが書いてくれないかな~なんておもっているんですけどね。ホントだれか書いてくれないですかね?書いてくれたら即買いするんですけど。

« ひさしぶりに… | トップページ | いよいよあさって! »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: マテリアルの送り方。:

« ひさしぶりに… | トップページ | いよいよあさって! »