くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | プログラム | | 模型]

2010-05-31

_ 日記

FireworksCS5がでたー。

アップグレードのダウンロード版を買ったが途中から全然落ちてこない。まあゆっくり落としてください。

うん、入れたけどCS4と何が違うのかわからんね!うわ失敗したか?まあ微妙に軽いと言われればそうかもしれないけど…。

_ RubyでGLSLパーサ

Treetopって入力は文字列しかだめじゃね?

プリプロセス済みのトークン列を入力にするのは使えないか。

プリプロセス済みのコードは元のソースと行数とかかわっちゃうから、そのままパースするとエラーが出ても元ソースでの位置がわからなくなるんだよね。

プリプロセッサ→パーサの2パスは必須。パーサの入力は元ソースの位置情報付きトークン列にしておけば、エラー表示もエラー起こしたトークンの位置を吐けばいいだけなので安心。

しかしパーサの入力が文字列しか受け付けないとしたら、トークン毎の元ソースでの位置をパーサに渡す術が無いわけで!

どうしようかなぁ。困ったなぁ。

あ、Treetopのソースながめてたらちょっといじれば分割後のトークン入力もいけそうな気がした。

それよりパーサのテストをどんどん追加していったらだいぶ重くなってしまった。テスト毎にパーサ生成してるからだろうなぁ。前もって生成ではテストがめんどくなるので仕方ないんだが。

_ [Silverlight] 加算合成がしたいにゃー(しかしあきらめた)

Silverlightでは標準では描画合成は普通のアルファブレントしかありません。

どういう式かは調べてないけどたぶんSrcA*SrcRGB+(1.0-SrcA)*DstRGB的な普通のアルファブレンドです。

でも加算合成したいんだよねぇ。弾とかパーティクルは加算にした方が綺麗なものが結構あるんだよね。

そこでWriteableBitmapExてなライブラリを発見。 WriteableBitmapにメソッドを追加するライブラリで加算などの合成をしたり線描いたりできる模様。

Silverlight4用に自分でビルドして使ってみた。

ところでこれ、C#では拡張メソッド(?)とかいう機能でWriteableBitmapのメソッド追加されるように使えるけど、IronRubyからはただのWriteableBitmapExtensionsのstaticメソッドに見えるので注意。

で、使おうとしたら、加算合成はblitメソッドでできるが、blitはソースとしてWriteableBitmapしか受け付けず、矩形から矩形への転送およびついでに合成しかサポートしていない。

画像回転しながら描画したかったんだけど無理かこれ。一回WriteableBitmapに回転した画像を描いてそれをBlitすればいけるけどめんどくせぇし速度がめっちゃ不安。

とりあえずその方法でやってみたんだが、一旦描画する先を手抜きで640x480と巨大なものにしたらものすごい時間かかって実用にならず…。まあ予想通りか。

WriteableBitmapExのソース見ればわかるけど普通にCPUで合成処理してるからでかいビットマップは重いよね。さらに弾をrenderで描いてblitして一旦描いた先をクリアして別の弾描いて…なので普通に無理だろなこれ。

とりあえずは加算合成あきらめるしかないか…。シェーダで合成しようにも描画先に合成って難しいからなぁ。

Silverlight5には加算減算乗算くらい入らないだろうか。機能リクエストってどこに投げればいいんだろう。日本語で。


ページのトップへ | トップ «前の日記(2010-05-26) 最新 次の日記(2010-06-07)» | 編集 | kumaryu.net by kumaryu