GPUプログラミングでは、ドライバーが非常に急速に変化することは誰もが知っています。
あなたの状態がかなり均等にバランスが取れている場合、おそらく決定的な正解または不正解はありません. これは、ハードウェア、ドライバーのバージョン、およびカード自体が並列バッチを作成するために使用する可能性のある将来のメカニズムによって異なります。
条件が一方的なものである場合は、1 つのシェーダーで if 条件を使用するか、2 つのシェーダーを使用して切り替えを行うと、実際の利点が得られる可能性があります。実際のデータを処理している間にグラフィックス カードの負荷をテストすることが、これに実際に答える唯一の方法です。
これがボトルネック ポイントであり、時間をかける価値がある場合は、おそらく両方を含めて、実行時に選択します。ただし、コードを最適化してもシェーダーが高速にならなければ意味がありません。コードが要求されたすべての視覚的機能を提供し、それでもプロセッサに依存している場合、仕事は完了です。
フェッチにバインドされている場合、if ステートメントを同様に最適化しても意味がありません。したがって、できるだけ多くの視覚的機能に到達するまですべての最適化を続けてから、最適化を行います。これにより、もう 1 つの機能が得られる可能性があります。その後、再度最適化します。