ステレオレンダリングの効率化

自分で計算しようかと思ってましたが、すでに考え付いてた人がおりましたので、ただの紹介です。

When there's no need to render twice | Stereoscopic 3D | Oculus VR Forums

 平均的なIPDの場合、52m以上離れると差が1ピクセル未満になるようですので、左目は普通にレンダリング、右目はFarクリップを52m以上にして、それより遠い部分は左目のレンダリング結果から持ってくればよいって感じです。
(レースゲームとかだと、遠くはただの写真だったりしますよね。あれは距離が遠いとカメラが移動しても視差が発生しないため問題なく見えるのです。ビルボードや平行光源とかと同じ考え方…かな?)

利点は、52m以上のオブジェクトをレンダリングしなくなることによる

1.DrawCallの削減
2.頂点処理の削減
3.GBuffer生成、ライティングなどのピクセル処理の削減
4.シャドウマップに関わるレンダリングの削減
5.Skyboxとかの背景も削減(Depthのクリアだけでよい?)

と、パフォーマンス的にいいことだらけです。

欠点といえば…
Zバッファの精度が変わるので、深度を使うイメージエフェクトが多少影響を受ける、くらいでしょうか?(想像)


 現実世界において、近距離では視差による立体感が得られますが、遠距離ではその代わりに大気散乱による遠近感が得られるはずです。
(しかし大気散乱の効果が目に見えるにはかなり離れる必要があるので、100-200mくらいのところは実は立体感がほとんどないのかも…)