Son populaire pour rendre le contenu procédural à l'intérieur du GPU par exemple dans la demoscene (dessiner un seul quadruple pour remplir l'écran et laisser le GPU calculer les pixels).
La marche des rayons est populaire:
Cela signifie que le GPU exécute un nombre inconnu d'itérations de boucle par pixel (bien que vous puissiez avoir une limite supérieure comme maxIterations
).
Comment le fait d'avoir une boucle de longueur variable affecte-t-il les performances du shader?
Imaginez le simple pseudo-code de défilement des rayons:
t = 0.f;
while(t < maxDist) {
p = rayStart + rayDir * t;
d = DistanceFunc(p);
t += d;
if(d < epsilon) {
... emit p
return;
}
}
Comment les différentes familles de GPU (Nvidia, ATI, PowerVR, Mali, Intel, etc.) sont-elles affectées? Vertex shaders, mais particulièrement fragment shaders?
Comment peut-il être optimisé?