kumaryu日記
2008-09-09 そうだった
_ 荷物コネー
弟から荷物が来ていたので午前中に受け取ろうと再配達申し込んだら12時までに来なかったので諦めて出社。
しかし配送所が近くにあるので直接受け取りに行った方が早いことに今さら気付いたぜ。
名刺を刷って貰ったんだがカラー100枚で2000円って安いよな…。イラストレータのデータで納品したんで多少楽とはいえ、適当にいじってもらったらしいし。
どんな出来か楽しみなんだが、俺が作った元のデザイン自体が裏CEDECで渡すには非常に恥ずかしい気もするぞ…。
…配送所で受け取り指定してるのに受け取り14時以降ってどういうことだよ。最近忙しいから9時までに帰るの無理だし、11日朝に受けとるしかないかー。
_ [OpenGL] OpenGLで使えるシェーダって
Rikoでシェーダ前提にしちゃうのはいいとして、何で書いたらいいのか悩んでた。
選択肢は三つ。
- GLSL。対応してないグラボもまだまだあるよ。
- Cg。ライセンスが怪しいランタイムが必要だよ。
- アセンブリシェーダ。…手書きすんの?
将来的にはGLSLがどこでも使えるようになれば、特にランタイムいらないしこれがいい。まあコンパイラのできがまちまちという問題もあるんだが。
Cgはarbvp1/arbfp1を吐けるのはいいんだがビルドにCgToolkitが必要だし、実行時にランタイムも必要だ。しかも困ったことにランタイムの再配布ライセンスがよくわからない。
まあそれは許容するとしても、GeForce以外のハードでの将来性には疑問がある。一応GLSLをターゲットにはできるけど、これがまともに動いたためしがない。
アセンブリシェーダも将来性はないが、動くハードは多いしランタイムいらず。でも今時これをいちから手で書くやつはそう居ないだろう。
まあアセンブリを直接書くことはないとして、GLSLかCgなんだが、どっちで書くべきか。両方書くってのはめんどいのでパス。
と思ってたら、CgでGLSLのコンパイルができるのを思い出した。
「CgからGLSLへのコンパイル」は非常に怪しいんだが「GLSLからターゲットへのコンパイル」が怪しいとは思えん。GeForceのドライバだって同じようなコードで動いてるはずだっ!
で、cgcに-oglslつけたらまああっさりとGLSLからアセンブリにコンパイルしてくれた。
出てきたアセンブリもCgをコンパイルしたものと遜色ないし、Cgランタイム経由でも普通にGLSL使えそうだわ。
これならCgのランタイムは必要にせよ、GLSL使えないグラボでも機能制限かかるけどGLSL使えるし、将来Cg捨てたくなる時が来てもシェーダ自体はそのままでいいなぁ。
あと欲を言うと、cgcが吐いたアセンブリシェーダ解析して、CgとかGLSLと同じインターフェースで使えるようにしておくと、Cgランタイム無くても動いちゃったりなんだり。
Rubyからだとcgcの結果解析とかでもそんなにめんどくないもんね。
とりあえずシェーダはGLSLで書いて、気が向いたらcgcの結果から適当にそれっぽいクラスを生成出来るようにしようかね。
ん、もしかして、CgってGLSLからHLSL吐いたりできるんじゃね?いや、べつに、使い途があるとは思えんけど。