GLSLで分岐の原因とそうでないものを正確に把握しようとしています。
私はシェーダーでこれをたくさんやっています:
float(a==b)
条件分岐なしでifステートメントをシミュレートするために使用していますが、効果的ですか?現在、プログラムのどこにもif文はなく、ループもありません。
編集:明確にするために、私は私のコードでこのようなことをします:
float isTint = float((renderflags & GK_TINT) > uint(0)); // 1 if true, 0 if false
    float isNotTint = 1-isTint;//swaps with the other value
    float isDarken = float((renderflags & GK_DARKEN) > uint(0));
    float isNotDarken = 1-isDarken;
    float isAverage = float((renderflags & GK_AVERAGE) > uint(0));
    float isNotAverage = 1-isAverage;
    //it is none of those if:
    //* More than one of them is true
    //* All of them are false
    float isNoneofThose = isTint * isDarken * isAverage + isNotTint * isAverage * isDarken + isTint * isNotAverage * isDarken + isTint * isAverage * isNotDarken + isNotTint * isNotAverage * isNotDarken;
    float isNotNoneofThose = 1-isNoneofThose;
    //Calc finalcolor;
    finalcolor = (primary_color + secondary_color) * isTint * isNotNoneofThose + (primary_color - secondary_color) * isDarken * isNotNoneofThose + vec3((primary_color.x + secondary_color.x)/2.0,(primary_color.y + secondary_color.y)/2.0,(primary_color.z + secondary_color.z)/2.0) * isAverage * isNotNoneofThose + primary_color * isNoneofThose;
編集:私は分岐したくない理由を知っています。分岐とは何かを知っています。分岐について子供たちに教えてくれてうれしいですが、ブール演算子については自分自身を知りたいと思います(そしてビット単位の操作ですが、私はそれらがうまくいくと確信しています)