Yo,
J'ai un problème d'optimisation dans un code glsl
La fonction qui pose problème dans test2Union2 est Raymarche et plus précisément " p += d * dir; "
Il me semble que c'est une opération d'une complexité en O(n) et même si elle était d'un ordre polynomiale, ça ne devrait pas poser de problème mais chez moi ça rame.
Je vous mets en pièce jointe l'affaire afin que vous me disiez si ça rame chez vous. Le fichier à lancer est : a_matriceUNion
Vous pourriez me dire que c'est peut-être d = scene(p) + eps; vu que scene() fait appel à pas mal de fonction, mais non, j'ai commenté la ligne et mis d=1; donc c'est bien l'opération qui pose problème.
Bonne journée
Hors ligne
Oups... voilà l'archive
Hors ligne
Salut, le pb est dans les boucles (trop d'incrémentation...).
Pour le raymarching, passe à i<32 (et donc glow = float(i)/32.; )
et l'autre : for ( float i =16. ; i >8.; i-- )
ça devrait aller mieux (en tout cas ça va mieux chez moi)
Hors ligne
Merci !
Accessoirement quand tu as un "GL : invalid value"
ça peut venir de quoi ?
Le code est bon, c'est celui-ci http://glsl.heroku.com/e#9379.1
Il le charge bien :
"[glsl_program]: vertex shader running in hardware
[glsl_program]: fragment shader running in hardware
GL: invalid value"
Mais je vois rien à travers le a_shad modulo changement des variables en cohérence avec les variables du code etc de l'archive précedent...
Dernière modification par caracteriel (2013-08-08 21:22:19)
Hors ligne
Problème résolu...
Hors ligne