Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1607 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [Opengl] Eclairage - spotCutoff

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Opengl] Eclairage - spotCutoff

n°1598546
vincent0
Posté le 11-08-2007 à 12:38:48  profilanswer
 

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.

mood
Publicité
Posté le 11-08-2007 à 12:38:48  profilanswer
 

n°1598559
IrmatDen
Posté le 11-08-2007 à 12:58:42  profilanswer
 

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

n°1598567
vincent0
Posté le 11-08-2007 à 13:22:00  profilanswer
 

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.

n°1598582
IrmatDen
Posté le 11-08-2007 à 14:06:55  profilanswer
 

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
n°1598583
vincent0
Posté le 11-08-2007 à 14:14:07  profilanswer
 

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
n°1598587
IrmatDen
Posté le 11-08-2007 à 14:27:27  profilanswer
 

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

n°1598591
vincent0
Posté le 11-08-2007 à 14:37:12  profilanswer
 

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)

n°1598607
vincent0
Posté le 11-08-2007 à 15:15:49  profilanswer
 

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:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [Opengl] Eclairage - spotCutoff

 

Sujets relatifs
[Opengl] Problème d'éclairageProbleme openGL et POO sous VC++
[Opengl] shadow volume !!Extensions Opengl Manquantes
OPenGL ES : double bufferingOpengl et frame buffer object
[OpenGL]bizarre..Rendu sur texture : opengl
[OpenGL] Combiner 2 scènes 
Plus de sujets relatifs à : [Opengl] Eclairage - spotCutoff


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR