0

half Hという変数に 20 個のフラグメント数学演算を書きました。次に、 half4 XYZHに対して 5 つの同様の数学命令を実行しました.... 2 番目のシェーダーは非常に低速でした!!! 私は完全に驚きました.4倍以上遅いようです!!! 私は GTX 470 を使用しています。H はプロシージャル テクスチャの高さマップで、XYZ はテクスチャの各ポイントの法線であり、テクスチャを非常に詳細に照らします。

half4 での一連の計算は、half よりも正確に 4 倍遅いですか?

このコードは予想よりもかなり遅く実行されています。見逃したものはありますか?

        half4 sel ( half s, float x){       
            if(s<=0) {half sins=tri(x*2.2); return half4(1-abs(sins),abs(sins),0,sins);} //XYZH     
            //else if(s==1){return tri(x);}
        }

        half4 frag (v2f i) : COLOR
        {
            float3 pos = mul (_Object2World, i.uv).xyz;
            float3 posb = mul (_Object2World, i.uv).xyz;

            half4 ht = (sel(0,pos.x));
            half4 g1 =(HSVtoRGB(float3(.2+ht.w,.43*c3/2,.476322+ht.w*c1)))*(2*i.color); 
            return g1;
        }
4

1 に答える 1

0

はい。算数は 4 回行われます。

また、half 操作と float 操作を混在させると、half を使用することで得られるパフォーマンス上の利点が失われる可能性があります。

于 2013-11-12T14:07:45.463 に答える