Sangat populer untuk membuat konten prosedural di dalam GPU misalnya dalam demoscene (menggambar quad tunggal untuk mengisi layar dan membiarkan GPU menghitung piksel).
Ray marching populer:
Ini berarti GPU sedang mengeksekusi sejumlah iterasi loop yang tidak diketahui per piksel (walaupun Anda dapat memiliki batas atas seperti maxIterations
).
Bagaimana cara memiliki loop panjang variabel memengaruhi kinerja shader?
Bayangkan psuedocode ray-marching sederhana:
t = 0.f;
while(t < maxDist) {
p = rayStart + rayDir * t;
d = DistanceFunc(p);
t += d;
if(d < epsilon) {
... emit p
return;
}
}
Bagaimana berbagai keluarga GPU arus utama (Nvidia, ATI, PowerVR, Mali, Intel, dll) terpengaruh? Vertex shaders, tetapi terutama shader fragmen?
Bagaimana cara dioptimalkan?