IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

pas d'éclairage du tout avec un shader "phong shading&q


Sujet :

OpenGL

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut pas d'éclairage du tout avec un shader "phong shading&q
    Salut !
    J'ai un probème mon shader marche sous renderMonkey mais quand je l'intègre à mon programme opengl le model n'a aucun éclairage...
    j'ai fait un fichier dans lequel je redirige l'info log et il me dis :
    " Link successful. The GLSL vertex shader will run in hardware. The GLSL fragment shader will run in hardware."
    mon programme marche avec un autre shader mais pas avec le mien qui fait de l'éclairage au pixel près :-/
    J'ai même pris une méthode dont je suis sur qu'elle marche pour charger les shaders mais ça fait la même chose qu'avec me méthode à moi.

    Pouvez vous m'aider car personne n'a réussi sur les autres forum,

    voici le code du vertex puis du fragment shader :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    varying vec3 normal ;
    varying vec4 ambientLight ;
    varying vec4 diffuseLight ;
    varying vec4 specularLight ;
    varying float dist ;
    varying vec4 lightVector ;
     
    void main(void)
    {
       normal = gl_NormalMatrix * gl_Normal;//to trasform in eye coordinates
     
    //ambient component   
       ambientLight = gl_FrontMaterial.ambient * gl_LightSource[0].ambient ;
     
    //diffuse component
       diffuseLight = gl_FrontMaterial.diffuse * gl_LightSource[0].diffuse ;
     
    //specular component
       specularLight=gl_FrontMaterial.specular * gl_LightSource[0].specular 
      *pow(max(dot(gl_LightSource[0].halfVector.xyz, normal), 0.0), gl_FrontMaterial.shininess);   
     
       vec4 coordinate = gl_ModelViewMatrix * gl_Vertex;
       lightVector = vec4(gl_LightSource[0].position - coordinate) ;
       dist = distance(gl_LightSource[0].position, coordinate) ;
     
       gl_Position = ftransform();//gl_ModelViewProjectionMatrix * gl_Vertex ; 
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    varying vec3 normal ;
    varying vec4 ambientLight ;
    varying vec4 diffuseLight ;
    varying vec4 specularLight ;
    varying float dist ;
    varying vec4 lightVector ;
     
    void main(void)
    {
       vec3 normalizedNormal = normalize(normal) ;
     
    //diffuse component
       float intensity = max(dot (normalizedNormal, normalize(lightVector.xyz)), 0.0);
       vec4 diffuseLightDotI = diffuseLight * intensity ;
     
    //attenuation  
     
       float attenuation = 1.0/ (gl_LightSource[0].constantAttenuation + 
                            gl_LightSource[0].linearAttenuation * dist + 
                            gl_LightSource[0].quadraticAttenuation * pow(dist, 2.0)) ; 
     
    //color computation 
       gl_FragColor = gl_FrontMaterial.emission + (ambientLight + diffuseLightDotI + specularLight)
                      *attenuation ; 
     
    }

  2. #2
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    J'ai essayer d'utiliser glutSolidTeapot pour voir si ça marche (et donc vérifier si ce ne sont pas mes normales qui sont fausses quand j'utilise mon loader 3ds) et ça marche bien avec le toon shading du site "lighthouse" mais ça ne marche plus dès que je ne fais que changer de shader en mettant le mien (phong shading) : il n'y a aucun éclairage.
    Avez vous une idée ?

    PS : j'ai gardé les valeurs d' éclairage de mon loader avec glutSolidTeapot, étant donné que je ne connais son emplacement.

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    j'ai essayé un autre shader qui fait de l'éclairage au pixel près, et ça ne marche pas non plus (pas d'éclairage), par contre le toon shading fonctionne mais tout ce qu'il utilise concernant la lumière est sa position.
    Je pense qu'il y a un probleme avec l'éclairage opengl (hormis le shader puisqu'il est correct (vérifié avec renderMonkey))mais je ne vois pas quoi...
    Auriez vous une idée ?

  4. #4
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    tu envoie bien toutes les information qu'il faut a la carte (normal map, gloss map, diffuse map etc, dans les bonnes unitée de textures) ?
    en effet pour des fragments shaders simple, on peut les integrer facilement (le toon shading est un shader simple ), mais des qu'on commence à utiliser des texture et autre, il ne faut pas oublier les ressoucres a envoier a la carte graphique...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

Discussions similaires

  1. Effets avec les shaders
    Par chonos dans le forum OpenGL
    Réponses: 4
    Dernier message: 11/01/2006, 16h58
  2. Pas de fenètre d'authentification avec .htaccess
    Par damjal dans le forum Apache
    Réponses: 2
    Dernier message: 02/11/2005, 08h40
  3. Je ne peuxt pas lire de DC/DVD avec suse 9.3
    Par sebA dans le forum Administration système
    Réponses: 7
    Dernier message: 06/07/2005, 09h27
  4. écran noir avec un shader d'éclairage au pixel près
    Par captainSeb dans le forum OpenGL
    Réponses: 2
    Dernier message: 16/05/2005, 12h30
  5. Kmail veux pas marcher sur mon serveur avec postfix
    Par jean christophe dans le forum Réseau
    Réponses: 4
    Dernier message: 06/05/2005, 01h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo