私は現在、OpenGL レンダリング エンジンのアップグレードと再構築に取り組んでいます。このエンジンは、建築データの大規模なシーン (インテリアのある建物) を視覚化するために使用され、オブジェクトの量がかなり大きくなる可能性があります。どの建物でもそうであるように、壁の中に遮られたオブジェクトがたくさんあり、同じ部屋にあるオブジェクト、または外にいる場合は外にあるオブジェクトしか見えません。これにより、オクルージョン カリングとフラスタム カリングによってオクルードされるべき多数のオブジェクトが残ります。
同時に、レンダーバッチでバッチ処理できる反復ジオメトリが多数あり、インスタンス化されたレンダリングでレンダリングできるオブジェクトも多数あります。
私の見方では、レンダーバッチ処理とカリングを最適な方法で組み合わせるのは難しい場合があります。同じ VBO であまりにも多くのオブジェクトをバッチ処理すると、そのバッチのレンダリングをスキップするために CPU 上のオブジェクトを選別することが難しくなります。同時に、CPU でのカリングをスキップすると、多くのオブジェクトが見えない間に GPU によって処理されます。CPU をより簡単に選別するためにバッチ処理を完全にスキップすると、不要な大量のレンダー コールが発生します。
これらの問題が現代のグラフィックスでどのように解決されるかについて、既存の技術と理論についていくつかの調査を行いましたが、具体的な解決策を見つけることができませんでした。同僚と私が思いついたアイデアは、バッチを互いに比較的近いオブジェクトに制限することでした。たとえば、部屋内または半径 n 人以内のすべての椅子です。これは、oct-tree を使用することで簡素化および最適化できます。
最先端のグラフィックエンジンでシーン管理、カリング、バッチ処理などに使用される手法へのポインターはありますか?