Adaptive Software Tessellation with Concurrent Binary Trees
数年前に実装したものですが検索性が良くないのでこちらにも
一般メッシュに適用可能なGPU駆動ソフトウェアテッセレーションの手法を試してみました。
論文の主要処理はすべてComputeShaderになります。
GitHub - nagakagachi/sample_project · GitHub
今回の手法の論文はこちら
Concurrent Binary Trees for Large-Scale Game Components
ANIS BENYOUB, Intel Corporation, France
JONATHAN DUPUY, Intel Corporation, France
https://dl.acm.org/doi/10.1145/3675371

著者の以前のTessellation論文にもConcurrentBinaryTree(CBT)を使ったものがありますが、
そちらは二等辺直角三角形に限定して、分割三角形の親子構造をCBTにマッピングする手法です。
Concurrent Binary Trees (with application to longest edge bisection)
JONATHAN DUPUY, Unity Technologies
https://dl.acm.org/doi/10.1145/3406186
一方で今回の論文は任意のメッシュに対して実行可能で、CBTを分割三角形の高速なメモリアロケーションのために利用しています。
CBT(並行二分木)を利用する仕組み上、メモリ確保が二の冪乗に制限されるなど少し取り回しが悪い点などがありますが、
一般メッシュに適用できてリアルタイムに動かせそうなソフトウェアテッセレーション手法としてよい感じかと思います。
コードはディレクトリにまとまっています。
実行はmain.cppの NGL_TEST_SWTESSELLATION_ENABLE を 1 にしてビルドするとシーンにテスト用のオブジェクトが表示されます。