私はゲームで作業していますOpenGL ES 2.0
if-elseブランチなしでこの関数を実装する方法は? (GLSL)
可能であれば、フラグメントシェーダーのブランチを削除したいと思います。しかし、私は改善することができない機能があり、:それはこのような状況で役立ちます場合
float HS(in float p, in float c) {
float ap = abs(p);
if(ap > (c*1.5)) {
return ap - c ;
} else {
return mod(ap+0.5*c,c)-0.5*c;
}
}
はc
は、ほとんどの場合で一定です。私は次のようにこの関数を使用します:
vec3 op = sign(p1)*vec3(
HS(p1.x, cc),
HS(p1.y, cc),
HS(p1.z, cc)
);
このコードのパフォーマンスを向上させたい、または条件を削除しますか?それらは2つの異なるものですから。 –
if-elseブランチを先に削除することで、このコードのパフォーマンスを向上させたいと考えています。 –
それがここでパフォーマンスを改善する最も効果的な方法ではない場合、どうすればよいでしょうか? –