私は、高速グラフィックスレンダリングのためにOpenGLを使用しています。私は、SVGの 'path'要素で定義できるシェイプとほぼ同じ種類の曲線を描くことができるようにしたいと思います。GLSLは任意の長さのバッファを扱うことができますか?
私のパスをCPU上のポリゴンにテッセレーションするのではなく、バッファ内の値の配列をマイカーブを定義するシェーダに渡してから、イン/アウトテストを使ってピクセルは実際に内部にありました。言い換えれば、私は、私のパスの各セグメントを記述する潜在的に大きなデータ配列を繰り返しています。
何年も前にシェーダプログラミングを学んだ覚えていることから、GPUは両方のブランチを評価し、使用されなかったブランチを投げ捨ててif文を処理します。これは、事実上、バッファの一部だけを使用しても、バッファ全体を静かに実行することを意味します(つまり、バッファには1024の曲線セグメントを処理する能力がありますが、描画する単純な長方形には最初の4つ)。
この変数データを処理するコードはどのように記述しますか?現代GPUはこのような条件付きコードを扱うことができますか?
現代のGPUは、通常、 'if'を正しく扱います。しかし、モバイルGPUはしばしば両方のブランチを実行せず実行します。 –