셰이더는 if(x>a && x<b)
을 허용하지만 내 이해는 논리적 테스트가 느립니다. 그것은 더 많은 코드를 보이지만 CPU의 ASM의 시대에서, 같은 트릭이하고 때로는 가치가 있었다셰이더 프로그래밍 - 두 값 사이에서 테스트하는 경우
mid = (a+b)*.5;
half = (b-a)*.5;
if(abs(x - mid) < half){...}
: 라인을 따라 최적화이 가치입니다.
half
만약
및 mid
가 CPU에 한 번 계산하고 우리는 대체, 쉐이더 매개 변수로 전달 될 수 if(x>a && x<b)
로 : if(abs(x - mid) < half)
는 -로 귀찮게이 가치 입니까?
내 테스트에서 half
및 mid
을 사전 계산 된 셰이더 매개 변수로 끌어 올리는 약간의 개선이 있었지만 테스트 할 GPU는 하나 뿐이므로 "일반"답변과 케이스가있는 경우 극적으로 더 좋거나 나 빠를 것입니다.