Nó phổ biến để hiển thị nội dung theo thủ tục bên trong GPU, ví dụ như trong demoscene (vẽ một hình tứ giác để lấp đầy màn hình và để GPU tính toán các pixel).
Ray diễu hành là phổ biến:
Điều này có nghĩa là GPU đang thực hiện một số lần lặp không xác định trên mỗi pixel (mặc dù bạn có thể có giới hạn trên như thế maxIterations
).
Làm thế nào để có một vòng lặp có chiều dài thay đổi ảnh hưởng đến hiệu suất đổ bóng?
Hãy tưởng tượng psuedocode tia hành quân đơn giản:
t = 0.f;
while(t < maxDist) {
p = rayStart + rayDir * t;
d = DistanceFunc(p);
t += d;
if(d < epsilon) {
... emit p
return;
}
}
Các họ GPU chính thống khác nhau (Nvidia, ATI, PowerVR, Mali, Intel, v.v.) bị ảnh hưởng như thế nào? Vertex shader, nhưng shader mảnh đặc biệt?
Làm thế nào nó có thể được tối ưu hóa?