私が取得しようとしていますこのシェーダを本当に古いのiDevice上で実行するだけでなく、最終的にはアンドロイド。
コードをフラグメントごとに2つの正弦関数に下げても、シェーダーは約20 fpsで実行されます。
私は古いシェーディングテクニックの本から一枚の葉を取り、事前定義されたTrig値の束を保持する配列を作成し、どういうわけかそれらを使用してシェーダーを近似することを検討しました。
上でリンクしたシェーダーでは、trig関数に送られる値を丸めることにより、マウスを左に動かすと(ダウンしている間)、シェーダーの品質が低下することをすでにシミュレートしています。左側に非常に近く、完全に異なるかなりクールなシェーダーのように見えるため、実際にはかなりクールです。
とにかく、私には2つのジレンマがあります。
- GLSLシェーダーで定数などの360値の配列を含む最も効率的な方法は何か、わからないのですか?
0から360までの角度が必要な場合、通常のように数値を範囲内に配置する方法を理解できません(はい、GPUがラジアンを使用していることがわかっています)。
func range(float angle) { float temp = angle while (temp > 360) {temp -= 360;} while (temp < 0) {temp += 360;} return temp; }
ただし、GLSLでは、whileループまたは再帰関数を使用できません。