2

GLE Tubing and Extrusion Library ( http://www.linas.org/gle/ ) を使用すると、OpenGL を使用して 2D 輪郭を 3D オブジェクトに押し出すことができます。ライブラリはすべての作業を CPU で行い、OpenGL 即時モードを使用します。

GPU で Geometry Shaders を使用して押し出しを行うと、特に多くのジオメトリをレンダリングする場合に高速になると思います。私はまだ OpenGL でジオメトリ シェーダーを使用した経験がないので、それが可能かどうか、何に注意する必要があるかを知りたいです。これらの計算を GPU に移行することは良い考えであり、パフォーマンスが向上すると思いますか? おそらく「Render to VBO」を使用して、レンダリングされたジオメトリを GPU から CPU に戻すことも可能です。

4

1 に答える 1

1

ジオメトリが実際にフレームごとに変更される場合は、GPU で変更する必要があります。
即時モードに依存しない他のすべてのソリューションは、現在のソリューションよりも高速になることに注意してください。GPU 上で行う必要さえないかもしれません。

しかし、場合によってはより効率的なシャドウ マッピングを代わりに使用したい場合もあります。また、草のようなアルファ テスト済みのオブジェクトの影をレンダリングすることも可能になります。しかし、結果として得られるシャドウ ジオメトリが本当に必要なようです。そのため、それがオプションであるかどうかはわかりません。

シャドウ ボリュームに戻ります。
ジオメトリ シェーダーを使用してメッシュから影のシルエットを抽出するのは、かなり複雑なプロセスです。しかし、インターネット上には十分な情報があります。

このプロセスを詳細に説明している Nvidia の記事は次のとおりです:
Efficient and Robust Shadow Volumes Using Hierarchical Occlusion Culling and Geometry Shaders

ジオメトリ シェーダーさえも必要としない別のアプローチ (2003 年以降) を次に示します。これは、ローエンドのハードウェアで興味深いものになる可能性があります

最も効率的なソリューション (シャドウ シルエットを使用) が必要ない場合は、メッシュのすべての三角形を単独で抽出することもできます。これは、ジオメトリ シェーダーを使用すると非常に簡単です。GPU でシルエット抽出を実装する前に、まずそれを試してみます。

質問の「VBO にレンダリング」の部分について:
私が知る限り、ジオメトリ シェーダーの出力を CPU に戻す方法はありません。これについて私を引用しないでください。しかし、これを行う方法について聞いたことがありません。

于 2013-10-11T08:36:07.300 に答える