예를 들어 데모 씬에서 GPU 내부에 절차 적 내용을 렌더링하는 것이 인기가 있습니다 (화면을 채우기 위해 단일 쿼드를 그려 GPU가 픽셀을 계산하게 함).
레이 행진 이 인기가 있습니다.
이것은 GPU가 픽셀 당 알 수없는 루프 반복 횟수를 실행하고 있음을 의미합니다 (그러나 상한을 가질 수는 있음 maxIterations
).
가변 길이 루프를 사용하면 셰이더 성능에 어떤 영향을 줍니까?
간단한 광선 행진 psuedocode를 상상해보십시오.
t = 0.f;
while(t < maxDist) {
p = rayStart + rayDir * t;
d = DistanceFunc(p);
t += d;
if(d < epsilon) {
... emit p
return;
}
}
다양한 주류 GPU 제품군 (Nvidia, ATI, PowerVR, Mali, Intel 등)은 어떤 영향을 받습니까? 버텍스 쉐이더, 특히 프래그먼트 쉐이더?
어떻게 최적화 할 수 있습니까?