私はGLSLフラグメントシェーダに次のコードがある場合:それはコンパイラは、これらの三角関数を評価する代わりに、彼らはすべてのフラグメントの実行中に評価されていることを正気仮定GLSL:コンパイラは定数引数を持つ関数を評価しますか?
float r = 0.386;
float a = 26.6;
float xd = r*cos(0.0174532924*(a+0));
float yd = r*sin(0.0174532924*(a+0));
float xe = r*cos(0.0174532924*(a+90));
float ye = r*sin(0.0174532924*(a+90));
ですが?
など、シェーダモデルをフォン用のシーンライトを渡して、オブジェクト全体の値、IEアルファ値に使用されている最適化レベルとコンパイラに依存しますが、アセンブリを見てみました? – Vladp
一度だけ計算する必要がある場合は、計算してユニフォーム変数またはUBOに送信してください。 – WearyWanderer
私は実際には計算機で計算し、xd、yd、xe、yeの値を直接取り出すことができますが、私がコンパイラに頼ることができるのであれば、自己文書化の目的でこの状態にしておきたいと思います。 – user1282931