bonjour,
tout d'abord pardon de pas être plus précis dans l'intitule je ne sait même pas si ca viens d'un shader ou même de l'architecture de mon code... alors dans le doute je vous met le tout a disposition :
svn checkout http://black-death-revenger-raytrace...com/svn/trunk/ black-death-revenger-raytracer-read-only (linux + sfml 1.6, makefile inclu...)
(j'etait pas tres inspirer pour le nom)
mes symptomes :
dans Fdefuse.glsl (le fragment shader)
les lignes
m'affiche tout bonnement du noir... mais chose intéressante quand j'essaye ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 final_color = gl_LightSource[0].diffuse * cosNL; gl_FragColor = final_color;
sur mon laptop (nvidia nvs 5100m) mon triangle est blanc (oui oui ... il rentre dans ce else qui n'a même pas lieu d'exister...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 if (cosNL == 0.0) gl_FragColor = vec4(1,0,0,0); else if (cosNL < 0.0) gl_FragColor = vec4(0,1,0,0); else if (cosNL > 0.0) gl_FragColor = vec4(0,0,1,0); else gl_FragColor = vec4(1,1,1,0);) et sur mon desktop (ati 6870) il est rouge ...
donc voila je suis un peut démuni devant ceci... je présume que la normal ou la position de la light arrive mal (sinon le produit vectoriel serait bon) mai pourquoi ?
ps : je sait que gl_LightSource[0].diffuse * cosNL; ne me donnera pas une couleur comme on en attendrait d'une light... je cherche seulement a chopper le "dégrader" et a comprendre openGL avant de m'attaquer aux math.
et dernier truc: mon clavier est qwerty le peut d'accent qu'il y a c'est le correcteur orthographique qui me les prêtes![]()







Répondre avec citation


Seul les GPU récents qui sont aussi conçu pour faire du computing avec OpenCL par exemple dispose de plus d'instructions, donc plus amiable de faire des conditions. Mais ces instructions rajouté peuvent être moins bien optimisé. 
Donc pour les calculs de lumière il faut préférer les fonctions GLSL min, max et clamp qui elles utilisent des instructions plus optimisées, et surtout assure la linéarité du temps d'exécution du shader.
pour que celui ci soit plus visible 






Partager