やる気っつーか体調がおかしい気がしてきた。いつまでもだるい。気温変化がはげしいせいだろうか。
今回のイベントに出す物は時間的にもルール的にも無理だと気付いたので、前回の物をちょこっとだけいじってまた設置することに。それにしたって間に合うだろうか……。
OpenGL4.0シェーディング言語という本を読んだ。電子書籍版があったので。ボーンデジタルもちょっぴりながら電子書籍があるようだ。技術書ではおなじみのメアド埋め込み形式DRM無しPDFなのがうれしい。
タイトル的には使い方の本だと思ってたんだが、それは最初だけで中盤以降はいろんなシェーダの紹介と実装例が載ってる本だった。原題はOpenGL 4.0 Shading Language Cookbook。日本語になる時にCookbookがどっか消えたようだけど、それがないとだいぶ印象変わるでしょうよ。まあサブタイトルに「実例で覚えるGLSLプログラミング」ってあるのでそこにつっこんだのか。
OpenGL4.0はどんな機能があってどう使うかってのはなんとなく知ってはいたが、使ってはなかったのであらためて見るとそういやそんなのあったなーとかそうやって使うんだーとか参考になる。
特にサブルーチンを使いまくりあたりはちょっとびっくりした。2パス必要な効果なんかでもシェーダプログラム一つにパス1とパス2の両方を含んでいて、パスによってサブルーチンを切り替えていた。シェーダ切り替えが重いのはそうなので、サブルーチン切り替えの方が速いんだろうか。まあ確かに遅くなる理由もあんまり思い付かないし、積極的に使った方がいいのかな。
テッセレータはさっぱりわかってなかったので、実例を見れてよかった。ただ使いどころがあるのかどうか……。そう簡単には使えなさそうだが。
ジオメトリシェーダはポイントスプライトだとか輪郭線を描くだとかやってるけど、どちらも知ってる物だし(というかジオメトロシェーダに限らず紹介されてる効果はほとんど知ってる物だったが)輪郭線はつかいどころは微妙。最後のパーティクルの章では結局普通の(ジオメトリシェーダ使わない)ポイントスプライト使ってるし、ジオメトリシェーダちゃんはやっぱりいらない子なのだろうか。GLES3にも入ってないしな。
ポイントスプライトってGL4のコアプロファイルに居るんだっけか?と思ったが、GL3で一旦コアから外れてその後復活したんだっけか。あると便利だしね。
最後にパーティクルをシェーダで実行する章もあった。GL4.3ならコンピュートシェーダ使うところかもしれないが(いや、べつに使わなくてもいいか?)、GL4.0レベルなので頂点シェーダで計算してTransform Feedbackだ。
紹介されてる効果はどれも目新しい物ではないし、比較的簡単な物ばかりなので物足りないが、もっといい方法はこれを見ろ的な参考文献がいちいち挙げられてるので安心だ。ただ、いろいろやり方ある中で、そのやり方をしちるのは何故なのかといった辺りの説明があんまりないのが残念。サブルーチン使いまくるのはどうなのかとかね。まあCookbookなので詳しいところまでは説明しないんだろうけど。 普通に最近のOpenGLの使い方に関する詳しい本が欲しいなぁ。
明らかに最初に読む本ではないが、OpenGLの使い方がなんとなくわかったけどここからどうしたらいいかわからん、という人にはおすすめな本じゃないでしょうか。たぶんこの本だけでは足りないので、あとはこの本に挙がっている参考文献を辿るとかするといいでしょう。
俺もGL4でプログラム書かないとなぁ。最近だとAtomでもGL4.0まで使えるようになってるし使いやすいよね。
そろそろリリースしないとRTMP配信が不安定でみんな困んべと新しい開発版をリリースした。
RTMP配信のチャンネルがYPから消えないことがあるという報告もあったので直したらリリースしようと調べてみるがもう直っていたのであった。
視聴時にCPU使用率がやたらと上がることがあるという報告があるものの、すぐには再現できなかったので後回しにしてリリースしたら簡単な再現方法を教えてもらってすぐ再現できた。しかも原因もすぐわかった。送信すべき動画データがない状態で視聴接続が切れると、接続エラーのチェックはしないまま動画データ来ないかなーと待ち続け、接続エラーなので何か処理しないとということでスレッドは起き続けるという状態になっていた。接続エラー処理はデータを送受信をしようとした時のみやってたけどそれじゃまずいか。明示的にエラー処理を追加して直った。 直りはしたけど、クライアントが何か送信してきたときに受信する処理入ってないので同じことになりそうだな。そのうち直そう。
重大なバグが直ったけど、さっきリリースしたばっかりだ。いやでもこれはリリースしないとめんどくさいだろうということで30分で再度リリースに。まあこれでとりあえずよく発生してやばそうなバグは取れたんじゃないだろうか。
RTMP配信が出来るようになって、まあまあ大きな変更入ったので、あとはこれが落ち着いたようだったら安定版に入れて1.8にしちゃいたい。 すると開発版は1.9になるけど何入れようかね。 ちょっとくらい不親切でもいいかと思ってたUI周りだけど、心境の変化により初心者でも簡単に使えるような物にしたいと思ってきたのでUIの見直しをしていきたい気がする。 機能的には要望もあったし(FLV配信の)RTMP視聴もできるようにしたいね。