TODO:PetraDSFがWindows XPで登録できないのを調べる。
まずXPのインストールから始めないといけないのがめんどいね。
Mac版のSteamがついに来た!Portalが無料らしいのであとで入れて遊んでみよう。Portalは既にLiveArcade版やったんだけどさ。Macのゲームは少ない&探すのがめんどうだったのでこれでいくらか解消されて盛り上がるといいですね。
まあAppleは今Macなんかやる気ねーんだろうけど。
ひっそりとGLSLパーサを作りはじめました。C系の言語はプリプロセッサの処理がめんどすぎる。
SilverlightではShaderEffectクラスを継承していじることでエフェクトを自分で作れるようになっています。
しかしドキュメントを見てもShaderEffectはピクセルシェーダをfxcでコンパイルして設定すれば使えるよ!的なことしか書かれていないので一体なのをどうしたらいいのやらさっぱりです。
さてどうしましょう。
まあ、WPFにも同じShaderEffectクラスがあってそっちのドキュメントにはもっとちゃんとサンプルが書かれているのでそれを参考に、っつーかほぼそのままで動きます。
あとfxcでコンパイルしろとしか書かれてなくてプロファイルは一体どれを選べばさっぱりなんですが、ps_2_0にコンパイルすればとにかく動くようです。
そんなわけで乗算色と加算色を指定すると掛けたり足したりしてくれるエフェクトが完成。シェーダはほぼ1行。そんなもんよね。
シェーダにはfloat値を渡せますってしか書いて無かったんだが、WPFのサンプルを見たらそのままColorを渡してたのでそれもそのままやったら渡せたよ。やっぱりそのくらい出来ますよね。
依存プロパティってのを作るのがちょっとめんどいんですが、まあコピペで作れるしそんなにめんどくもない。依存プロパティはExpression BlendのUIから設定できるようになるので便利。アニメーションのターゲットにも出来る。
しかしせっかく作ったのはいいが、弾をいちいちこれ適用して描くわけにはいかんからキャッシュしないといけないんだよね…。GPU実行してくれるといいんだけど。シェーダがGPU使ってくれたとしてもWriteableBitmapをターゲットにしてるとハードウェアアクセラレーション効かないから無理か。
それ以前にMacではハードウェアアクセラレーションは全く効かないらしいのでどうでもいい。Windowsでアクセラレーション前提で書いちゃうと大変なことになりますね。その前にCPUが大変なことになるか。