NPAR'08の論文集が出てた。また印刷してこよう。
ゲームの描画をある程度直して、真っ白になってたのを適当に調整。
本当は適当じゃなくてちゃんとトーンマップなりなんなりしたいけど、それはまた今度ね。
あと輪郭線を歪ませて複数重ねてみた。
…止め絵だとそれなりに見えるけど、動くと気持ち悪いな。
歪ませるのがスクリーンスペースで処理してるから、カメラが動いても歪み自体は固定なんだよね。
それはまあいいんだけど、物の輪郭線が歪んでたらそれはそういう物と認識されるわけで。
それが移動した瞬間に歪みかたが変わったら線が動いたようにしか見えんよなぁ。 しかし実体は動いてないと。
慣れれば気にならないからまあいっかー、とか本末転倒なことを考えてみたが、スクリーン座標に依存しなきゃいいだけか…。
歪みのシードとしてスクリーン座標を使ってるだけだからなんとか別のシードをあたえればいいのね。
オブジェクトのローカル座標か何かでいいのかな。ポストエフェクトで歪ませてるから座標もいったん描画しないといけないけど、線の描画ではアルファだけあれば十分だから、rgbは自由に使えるしな。
ブロックみたいな固定物はそれでいいけど、キャラクターはどうだろう。動いたときに線の歪みも変わった方が良いような。
モーションのフレーム数もいれてシードにしてやるか。
座標とかいれて描画してみたらアンチエイリアスにやられてへんな値になったよ。
斜めの線とかががたがた。
アンチエイリアス切ったら、まあたぶん正しくサンプリングできてるんだろうけど、結局斜めの線とかはあれなのであれ。つまり当然の如くがたがた。
こういうときってどうすればいいのかと思ったが、結局遅延シェーディングで普通にアンチエイリアスかけられないのと同じだから、無理なんだろうな。
スクリーン座標と深度値とカメラ位置からワールド座標を計算するというのもなんとなく考えてみたが、なんか大変そうだったのでいったんやめ。
遅延シェーディングなぜか大好きなので、そのうち実装しようと思う。そのときにAAについて調べておくか。
線を歪ませるだけならGeometryShaderという方法も思い付いたけど実行可能な環境と速度が読めないのがあれなのであれ。