1

シェーダーのイン/アウト変数の順序やサイズによって、メモリの使用やパフォーマンスに違いはありますか? たとえば、これらは次のとおりです。

// vert example:
out vec4 colorRadius;

// tess control example:
out vec4 colorRadius[];

// frag example:
in smooth vec4 colorRadius;

これらと同等:

// vert example:
out vec3 color;
out float radius;

// tess control example:
out vec3 color[];
out float radius[];

// frag example:
in smooth vec3 color;
in smooth float radius;

2 番目の形式に追加のコストはかかりますか、それともコンパイラはそれらをメモリにまとめてまったく同じように扱いますか?

4

1 に答える 1

4

コンパイラは、これらのものを一緒にパックできます。しかし、そうする必要はなく、コンパイラが一般的にこれを行うという証拠はほとんどありません。したがって、最上位バージョンは少なくとも最下位バージョンよりも遅くはありません。

同時に、これはマイクロ最適化に近いものです。したがって、これがボトルネックであることがわかっていない限り、放っておいてください。問題になるかどうかわからないまま最適化するよりも、明確でわかりやすいコードを書き、問題がどこにあるかがわかったときに最適化することをお勧めします。

于 2012-05-08T18:24:31.197 に答える