GLSLで効率的なシェーダーを作成するためのガイドラインはありますか?コンパイラはほとんどの最適化を処理しますか?
8536 次
2 に答える
21
いくつかのヒントがここにあります:GLSLの一般的な間違い
また、可能な限り分岐を避けてください。つまり、if
ステートメントwhile
、およびfor
変数との比較があるステートメント。たとえば、次のようになります。
for (int i=0; i<n; i++) {}
遅くなります。でも、
for (int i=0; i<10; i++) {}
ほとんどの場合、ループが展開され、すべてのシェーディングユニットが同時に同じコードを実行しているわけではないため、パフォーマンスが低下することはありません。
分岐する代わりに、プリプロセッサを使用した条件付きコンパイルを使用してみてください。
#pragma
また、効率を微調整するために、nVidiaおよびATI固有のものを確認してください。
于 2010-04-12T14:15:47.687 に答える
2
多くの従来のc最適化はglslで機能しますが、GLSLにはいくつかの特定の最適化が存在します。シェーダープログラミングに不慣れな場合は、optmにあまりお金をかけないでください。コンパイラーは、非常に効率的なジョブを実行できます。グラフィックプログラミングを深く掘り下げていくと、他の高度なoptmテクニックを集めることができます。幸運を。
于 2010-04-13T04:17:48.640 に答える