トップ 最新

kumaryu日記

2010-08-09

_ 日記

Rubyゲーム会議のるびま用紹介を書いて出した。すっごい悩んだ挙句至って普通になったが。

セッション募集は現在俺含めて3人なんだけどそんなにショートセッションばっかりあっても面白くないのでこんなもんかなぁと。4人目が来るなら来るで嬉しいけど来ないとまずい程でもない。

それよりデモが不安なのでみんななんでもいいから持ってきてね。ちょっとしたもので大丈夫だって。俺のもどうせしょぼいから。

当日配信はありますかと聞かれたが、さすがに俺一人で仕切りと発表と配信は不可能なので、誰か配信係の人が来てくれない限りはない。配信したいところではあるんだけどね。カメラは持って行って設置するつもりなので失敗しなければ録画は上がるかも…?

発表内容も考えたけど、あんまり話すことないかと思ったが結構あるね。絞らないと15分はあっという間に突破するわ。

あと開会の挨拶なんかもしないとダメかね。こっちは話すことあんまり思いつかんな。長々と喋る必要もないしいいんだが。

_ [OpenGL] GLSLこわい

GLSLの文字セットはASCIIのサブセットなのでコメントにも日本語書けないんですよ。こわい!

GLSLの文字セットにはバックスラッシュ入ってないからコメントにもバックスラッシュ書けないんですよ。まじか。

仕様書見るとコメント内は何書いてもいいよとか言われてないのでクォーテーション、バッククォーテーション、ダブルクォーテーション、アットマーク、ドルサイン全部ダメなんだろうなぁ。まあそこまで厳密なコンパイラがあるのか疑問だが、通らなくても泣かない。

バックスラッシュが入ってないのはあらためて仕様を見て気付いたんだけど、改行をバックスラッシュで打ち消すのもないんだよね。

マクロ定義なんかでは良くやると思うんだけど、

##highlight c
#define FOO(bar) \
  HOGE(bar)

この例では改行してる意味ないけど、とにかくこんな感じで行末にバックスラッシュ置いて行を継続させるやつがGLSLでは使えない。 おいせっかく対応したのに無駄じゃねーか。

長いマクロとかすごく書きづらいね。とは思ったがcgcで試した限りではちゃんと処理してくれるようだ。AMDとかIntelは知らないが。

しかしGLSLって実装的になんでもかんでもインライン展開されるので、確かに長いマクロを使う理由が無いと言えば無い。使ってない変数もどうせコンパイルされないし、条件分岐もコンパイル時定数は当然展開されるし。

自作のパーサとしてはどうするか悩むところだ。非標準だけどこのくらい対応してるだろ普通というような機能を入れておくかどうか。入れないと、あれこれ通らないのかよ手元のGLSLコンパイラでは通るのに、ってなるけど、入れると、これパース出来るのにこっちのコンパイラで通らないよ、になっちゃう。

実装はできちゃってるので正直どっちでもいいんだが、選べるようにするのは勘弁な。めんどい。mesa3dとか見てどうなってるか確認して考えるか。

丁度手元にあったANGLE Projectのパーサを確認したらバックスラッシュで行継続入ってねーわー。あとNVIDIAのCopyright入ってるわー。古いcgcのコードがベースなのかね。