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

GLUT Discussion :

Spotlight dans fragment shader rotation [OpenGL 3.x]


Sujet :

GLUT

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Spotlight dans fragment shader rotation
    Bonjour,
    Je suis débutant en OpenGL et je souhaite faire une lampe type lampe de bureau avec du coup un lumière "spotlight" qui en provient.
    J'ai regardé pas mal d'explication et de programme déjà fait mais je n'arrive pas à faire suivre ma lumière en rotation.
    Je suis sous une vieille version d'OpenGL (demandé par mon école...).
    Pouvez-vous m'aider s'il vous plait ?

    Voici ce que j'ai actuellement, j'utilise la méthode d'illumination de Phong:
    Code glsl : 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    #version 120
     
    varying vec3 coordonnee_3d;
    varying vec3 coordonnee_3d_locale;
    varying vec3 normale;
    varying vec4 color;
     
    uniform sampler2D texture;
     
    // vecteur position de ma lampe
    uniform vec4 pos_lamp;
     
    // matrice de rotation de ma lampe
    uniform mat4 rot_lamp;
    vec3 light = vec3(pos_lamp.x, pos_lamp.y, pos_lamp.z);
     
    float angle;
     
     
    void main (void)
    {
        //vecteurs pour le calcul d'illumination
        vec4 light_new = rot_lamp *light ;
        vec3 n = normalize(normale);
        vec3 d = normalize(light_new.xyz-coordonnee_3d_locale);
     
        vec3 r = reflect(d,n);
        vec3 o = normalize(-coordonnee_3d_locale);
     
        //calcul d'illumination
        float diffuse  = 0.5*clamp(dot(n,d),0.0,1.0);
        float specular = 0.5*pow(clamp(dot(r,o),0.0,1.0),128.0);
        float ambiant  = 0.0;
     
        //recuperation de la texture
        vec2 tex_coord     = gl_TexCoord[0].xy;
        vec4 color_texture = texture2D(texture,tex_coord);
        vec4 color_final   = color*color_texture;
     
     
        //couleur finale
        angle = dot(d,n);
        angle = max(angle,0);   
     
       // Test whether vertex is located in the cone
       if(angle > radians(40))
            gl_FragColor = (ambiant+diffuse)*color_final+specular*vec4(1.0,1.0,1.0,0.0); // (blanc)
       else
            gl_FragColor = (ambiant+diffuse)*color_final+specular*vec4(0.0,0.0,0.0,1.0); // (noir)  
     
    }
     
     
    }

    Merci d'avance

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Quel est votre problème précisément. N'hésitez pas à montrer des captures de votre problème .
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/12/2014, 09h48
  2. glsl pixel précédent dans le fragment shader
    Par coupecoupe dans le forum OpenGL
    Réponses: 8
    Dernier message: 07/12/2011, 09h43
  3. Réponses: 3
    Dernier message: 14/12/2010, 19h35
  4. [GLSL] Texture2D dans un fragment shader
    Par GloW_on_dub dans le forum OpenGL
    Réponses: 7
    Dernier message: 12/04/2010, 15h50
  5. fragment shader: passage en n&b
    Par nikhun dans le forum OpenGL
    Réponses: 15
    Dernier message: 25/09/2006, 08h40

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