ライトの向きだの位置をビュー座標系でuniform変数に入れようとしたんですよ。
しかしライト設定時点ではカメラの設定が拾ってこれないことに気付いてこまったな。
拾ってこれるようにするのはできなくもないが、設計としてはいつのタイミングで拾えるようにするのがいいんだろうなぁ。
てなことを考えてたら飽きてきた。そもそも描画部分から自前で作るとかバカジャネーノという気分。
結局シーングラフ式ではもっといい実装がいくらもあって、自分で書いところでそれをただ再発明してるだけで最終的には同じ所に辿りつきそうな気がする。 じゃあOpenSceneGraphなりなんなりのRubyラッパーでも作った方が早いし速いんじゃないかと思えるんだよね。 描画パスなんてここしばらくはそう変わらんだろうし。
いやまあそんなことはどうでもいいんだ。もとより習作のつもりなんだからあんまり気にしないでいこう。
しかしどういう設計にするかは考えないとな。
OpenSceneGraphを見たらよくわからんかった。C++よみづらい。
NVSGも似た感じだったはずだが、これのドキュメントは分かりやすい。
基本的にはプラットフォーム中立っぽいデータで構築して、実際の処理はトラバーサがやるのね。シーングラフ辿り(トラバース)自体はトラバーサを変えて何度も行なわれる。アプリ固有のトラバーサ、カリング用のトラバーサ、レンダリングトラバーサ、いっとアニメーション処理なんかもトラバーサがあるんだろう。
なるほどなるほど。しかしこれの柔軟性はどうなってんじゃろ。トラバーサは自分が知らないノードがあったらどうすんのかと。シカトですか。問題無さそうですね。
こういう形にすかどうかはともかく、もうちょっとどこでどの程度抽象化するかなんてことはちゃんと考えたいね。
ところでライトをビュー座標系で設定したいってのは最適化なんですよね。本当は実際にライティング計算する時までワールド座標系まで問題ないわけで。それで抽象化どうのこうの言うのも変な話なんだが、これを気にしない程速くないからぁ。
…いや、速いかも。どうせ贅沢なモデル表示とかできない*1のであんまり速度とかな気にしいほうがいいかもー。
まあそうでなくてもな描画時にカメラ座標とか欲しいのは確かなんだが。
*1 そんなモデル作れねーよ的な意味で