Performance CG float4数学比float数学慢4倍?
我在一个名为half H的变量上写了20个分段数学运算。然后我对half 4 XYZH运行了5条类似的数学指令。。。。第二个着色器非常慢!!!我完全惊讶,它似乎慢了4倍多!!!我在GTX 470上。H是程序纹理高度贴图,XYZ将是纹理每个点的法线,用于超详细照明纹理 一堆数学题在半身上比在半身上慢4倍吗 这段代码的运行速度比我预期的要慢很多,我是否遗漏了什么Performance CG float4数学比float数学慢4倍?,performance,opengl,shader,hlsl,cg,Performance,Opengl,Shader,Hlsl,Cg,我在一个名为half H的变量上写了20个分段数学运算。然后我对half 4 XYZH运行了5条类似的数学指令。。。。第二个着色器非常慢!!!我完全惊讶,它似乎慢了4倍多!!!我在GTX 470上。H是程序纹理高度贴图,XYZ将是纹理每个点的法线,用于超详细照明纹理 一堆数学题在半身上比在半身上慢4倍吗 这段代码的运行速度比我预期的要慢很多,我是否遗漏了什么 half4 sel ( half s, float x){ if(s<=0)
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;
}
half4选择(半s,浮点x){
如果(s是的,你的算术会做四次
此外,混合使用半运算和浮点运算可能会删除使用半运算所获得的任何性能优势。nVidia GPU,因为GeForce8系列有标量ALU。ATI/AMD GPU一直都是标量的。当为标量ALU提供4倍的工作时,除了花费4倍的时间之外,您还希望发生什么?PowerVR也在系列6中使用标量。Iad将单个浮点数r、g、b、a封装到浮点数4 rgba中更有效,我认为浮点数4上的相同数学运算可能比多个离散浮点数更有效,因为管道可以并行处理它们,而不是发送到多个管道。我想它在并发处理rgba时可能比在段落中更快好的,谢谢!