[Opengl] Eclairage - spotCutoff

Eclairage - spotCutoff [Opengl] - Divers - Programmation

Marsh Posté le 11-08-2007 à 12:38:48    

Bonjour,
 
Chaque lampe OpenGL contient les 2 varaibles suivantes : spotCutoff et spotCosCutoff et j'aimerais bien savoir comment calculer spotCosCutoff pour faire mon propre éclairage.
 
Est-ce que cette formule est bonne : spotCosCutoff = cos(spotCutoff/(180.0/M_PI)); ?
 
Merci.

Reply

Marsh Posté le 11-08-2007 à 12:38:48   

Reply

Marsh Posté le 11-08-2007 à 12:58:42    

Salut,
 
Question bête; à voir les résultats google, c'est dérivé automatiquement de spotCutOff par glsl, non?

Reply

Marsh Posté le 11-08-2007 à 13:22:00    

Heu..., spotCosCutoff est dérivée de spotCutoff. Par contre, je ne voit pas pourquoi tu parle de glsl pour ça !
 
Je veux juste reproduire un éclairage comme OpenGL mais sans être limité à 8 lampes maximum ! Donc j'aurais besoin de savoir comment calculer spotCosCutoff à partir de spotCutoff.

Reply

Marsh Posté le 11-08-2007 à 14:06:55    

Euh, juste que spotCosCutoff fait ressortir des réponses glsl et pas opengl "pur", désolé du HS :sweat:
Sinon, ta formule devrait plutôt être cos((angle*pi)/180) non?
Edit: inversé la formule :/


Message édité par IrmatDen le 11-08-2007 à 14:12:35
Reply

Marsh Posté le 11-08-2007 à 14:14:07    

heu...spotCutoff est un angle en degré et donc je doit diviser par (180/pi) si je veux le remettre en radian, non ? Mais faut-il le remettre en radian ? Faut-il faire d'autre opération pour calculer spotCosCutoff ?
edit : ta formule est la même que la mienne ;)
 
Y a t-il moyen de récuperer la valeur de spotCosCutoff de la lampe GL_LIGHT0 comme ça je pourrait voir si mon calcul est bon ?


Message édité par vincent0 le 11-08-2007 à 14:17:14
Reply

Marsh Posté le 11-08-2007 à 14:27:27    

C'est uniquement interne à opengl je crois (les seules infos récupérables sur les lumières sont faites par glGetLight). La seule sortie possible m'a tout l'air d'être un shader.
Mais vu les 2 aneries sorties en 2 post... je vais peut-être surtout suivre l'évolution du fil sans rien dire :D

Reply

Marsh Posté le 11-08-2007 à 14:37:12    

lol :)
 
Oui en effet glGetLight ne permet pas de récupérer spotCosCutoff d'après Google et donc comme tu le dit, le seul moyen d'avoir cette valeur c'est grâce au shader (glsl).
 
Donc:
- Est-ce que quelqu'un connait la formule exacte de spotCosCutoff
 ou
- Est-ce que quelqu'un sais comment afficher la valeur de gl_LightSource[0].spotCosCutoff en glsl ? Existe t-il un espèce de printf en glsl ? (je doute)

Reply

Marsh Posté le 11-08-2007 à 15:15:49    

Bon, j'ai trouvé une manière barbare pour savoir si mon calcul était juste :D
J'ai donc mis le spotCutoff de GL_LIGHT0 à 45.0 degré
 
Et dans mon shader, j'ai fait ceci: (NB : cos(45.0/(180.0/pi)) = 0.707)

Code :
  1. if(gl_LightSource[0].spotCosCutoff > 0.706 && gl_LightSource[0].spotCosCutoff<0.708)
  2. {
  3. color = vec4(1.0, 0.0, 0.0, 0.0);
  4. }else
  5. {
  6. color = vec4(0.0, 1.0, 0.0, 0.0);
  7. }
  8. gl_FragColor = color;


 
Et ma scène c'est affiché tout en rouge, donc j'en déduit que ma formule est juste  :sol:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed