我听说应该在着色器中避免if语句,因为语句的两个部分都将被执行,并且错误的语句将被丢弃(这会损害性能)。
在DirectX 10中仍然存在问题吗?有人告诉我,只有正确的分支才能执行。
对于该示例,我有以下代码:
float y1 = 5; float y2 = 6; float b1 = 2; float b2 = 3;
if(x>0.5){
x = 10 * y1 + b1;
}else{
x = 10 * y2 + b2;
}
还有其他方法可以使其更快吗?
如果是这样,该怎么办?
两个分支看起来都相似,唯一的区别是“常量”的值(y1, y2, b1, b2
对于Pixel Shader中的所有像素都是相同的)。