相当长的一段时间里,我一直避免在我的着色器代码中使用分支结构,而是通过将
float invert_value(in float value)
{
if(value == 0.0)
return 0.0;
else
return 1.0 / value;
}
写出像这样的“聪明”代码
float invert_value_ifless(in float value)
{
float sign_value = sign(value);
float sign_value_squared = sign_value*sign_value;
return sign_value_squared / ( value + sign_value_squared - 1.0);
}
这个函数与第一个函数完全相同,没有分支,因此速度更快。
但是,真的是这样吗?我在这里跟幽灵打架了吗?
如何对图形着色器进行速度分析?我最感兴趣的是最近的移动平台(Android),但任何关于图形分析的建议都受欢迎!