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
픽셀 셰이더의 모든 픽셀에서 동일 함).