Bonjour amis développeurs
J'utilise glsl pour le calcul de surfaces nurbs.
Mais il y a des choses qui me laissent stupéfaits....
Par exemple voilà une fonction utilisant le binary search pour déterminer l'index d'un noeud dans un vecteur de noeuds.

int findSpan(int degree, float current_u, samplerBuffer KNOT_TYPE){

if(current_u < texelFetch(KNOT_TYPE, 0).x || current_u > texelFetch(KNOT_TYPE, textureSize(KNOT_TYPE)-1).x)
discard;

int n = textureSize(KNOT_TYPE) - degree - 2;

if( current_u == (texelFetch(KNOT_TYPE, n+1)).x)
return n;

int min=degree; int max=n+1;
int middle=(min+max)/2;

while (current_u < (texelFetch(KNOT_TYPE, middle)).x || current_u >= (texelFetch(KNOT_TYPE, middle+1)).x ){
if(current_u < (texelFetch(KNOT_TYPE, middle)).x)
max=middle;

if(current_u >= (texelFetch(KNOT_TYPE, middle)).x)
min=middle;

middle=(min+max)/2;
}
return middle;
}
Cette fonction est normalement assez robuste pour toujours terminer la boucle while. (enfin sur CPU..)
Mais à ma grande surprise la boucle ne se termine jamais et entraine un crash... Je me suis dit il y a peut-etre des limites mais j'ai rien trouvé dans la spécification.....Alors si quelqu'un peut m'informer sur l'état d'art du calcul en glsl, je lui en serait très reconnaissant...
Merci à tous.