1

頂点シェーダーでは、ユニフォームのみを使用してベクトルを計算します。したがって、この計算の結果は、頂点シェーダーのすべてのインスタンス化で同じになります。これはCPUで計算してユニフォームとしてアップロードすればいいのでしょうか?そのような計算が 10 個ある場合はどうなりますか? この方法で多くのユニフォームをアップロードすると、CPU-GPU 通信が非常に遅くなり、頂点シェーダーでそのような値を再計算する方が実際に高速になることはありますか?

4

1 に答える 1

1

私は実際にはユニフォーム/頂点数の比率に依存しています。頂点がユニフォーム変数よりも多い場合、最も頻繁なシナリオである CPU でユニフォームを計算する方がよいでしょう。

ユニフォームの値が多く、その計算が複雑な場合 (つまり、逆行列)、頂点の数が少ない場合は、CPU の負荷を軽減して GPU で計算を実行する方がよい場合があります。

多くの要因がシェーダーの実行に影響を与えるため、比率のしきい値を決定するのは困難です。通常は、ほとんどのユニフォームを CPU で計算して、シェーダーの実行をオフロードする方が適切です。

注: 均一な変数を設定すると、シェーダー プログラムは再度リンクされるまでその値を保持します。

于 2010-04-13T05:35:41.763 に答える