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 :

SpotLight Bump Mapping


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut SpotLight Bump Mapping
    Bonjour à tous !

    Voila mon problème : j'ai converti mes shaders pour faire du bump mapping.
    Les lumières directionnelles ainsi que les point light fonctionnent parfaitement.
    Le problème actuel vient des spotlights qui une fois en bump mapping posent des artéfacts à l'écran, un peu comme s'il y avait des calculs par vertex qui devraient plutôt être en per pixel.

    Je suis à cours d'idée, je vous joint des screens ainsi que les shaders.

    Merci d'avance à tous !
    Images attachées Images attachées   
    Fichiers attachés Fichiers attachés

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 158
    Billets dans le blog
    152
    Par défaut
    Bonjour,

    Pouvez vous nous montrer les différences dans le code, entre le calcul de la spot light bogué et une directionnal light (par exemple).
    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.

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut
    Voici le code de la lumière directionnelle:
    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
     
    void directionalLightFront( in int i, in vec3 normal )
    {
    	float nDotVP;			// normal . light direction
    	float nDotHV;			// normal . light half vector
    	float pf;				// power factor
     
    	vec3 vLight = normalize(tsLightVector[i]);
    	vec3 vView = normalize(tsViewVector);
    	vec3 halfVector = normalize(vLight + vView);
    	nDotHV = max( 0.0, dot(normal, halfVector) );
    	nDotVP = max(0.0, dot(normal, vLight));
    	if ( nDotVP == 0.0 || nDotHV == 0.0 )
    	{
    		pf = 0.0;
    	}
    	else
    	{
    		pf = pow( nDotHV, gl_FrontMaterial.shininess);
    		accumSpecular	+= gl_LightSource[i].specular * pf ;
    	}
     
    	accumAmbient	+= gl_LightSource[i].ambient;
    	accumDiffuse	+= gl_LightSource[i].diffuse * nDotVP;
    }

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 158
    Billets dans le blog
    152
    Par défaut
    Simplifiez la fonction, essayais de commenter des choses dans la fonction spotLightFront et voyez si c'est la diffuse ou le specular qui vous fausse les résultats

    De plus, le test des nDot* est inutile / étrange. Car la valeur qui est définie à l'intérieur pf, n'est pas utilisé par la suite. De plus, en théorie, on fait du calcul de lumière que si les nDot sont > 0.
    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.

Discussions similaires

  1. Explication bump mapping
    Par damienlann dans le forum OpenGL
    Réponses: 41
    Dernier message: 06/06/2006, 16h14
  2. Réponses: 4
    Dernier message: 02/03/2006, 20h40
  3. Réponses: 22
    Dernier message: 28/07/2005, 21h37
  4. Comment faire du bump mapping
    Par CladStrife dans le forum DirectX
    Réponses: 7
    Dernier message: 01/01/2004, 05h07
  5. Bump mapping
    Par Francky033 dans le forum DirectX
    Réponses: 7
    Dernier message: 22/11/2003, 18h35

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