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

Développement 2D, 3D et Jeux Discussion :

parallax mapping : problème


Sujet :

Développement 2D, 3D et Jeux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Par défaut parallax mapping : problème
    Hello,

    J'essaye de faire du parallax mapping mais je n'y arrive pas
    Je m'inspire beaucoup de code déjà fait qui sont quasi tous presque identique mais chez moi ça ne fonctionne pas. Mon code ne fonctionne que si la caméra est dans un direction bien précise.

    Vertex 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
    varying vec3 eyeDir;
    varying vec2 texCoord;
     
    attribute vec3 tangent;
     
    void main()
    {
    	//local space
    	vec3 n = normalize(gl_NormalMatrix * gl_Normal);
    	vec3 t = normalize(gl_NormalMatrix * tangent);
    	vec3 b = cross(n, t);
     
    	vec3 tmpEyeDir = -vec3(gl_ModelViewMatrix * gl_Vertex);
     
    	eyeDir.x = dot(tmpEyeDir, t);
    	eyeDir.y = dot(tmpEyeDir, b);
    	eyeDir.z = dot(tmpEyeDir, n);
     
    	texCoord= gl_MultiTexCoord0.xy;
    	gl_Position = ftransform();
    }
    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
    varying vec3 eyeDir;
    varying vec2 texCoord;
     
    uniform sampler2D diffuseTexture;	//diffuse texture
    uniform sampler2D heightMap;		//height map (bump)
     
    void main()
    {
    	vec3 eyeDirNorm = normalize(eyeDir);
     
    	float height = texture2D(heightMap, texCoord).r * 0.04 - 0.02;
    	vec2 newTexCoord = texCoord + (height * (-eyeDirNorm.xy));
     
    	gl_FragColor = texture2D(diffuseTexture, newTexCoord);
    }
    Merci d'avance...

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    sans vouloir te vexer , ton code (pixel shader) ne ressemble pas a du parallax mapping ...

    L'idee du parallax mapping , c'est d'utiliser une

    -texture d'image pour la couleur meme du d un pixel
    -texture d elevation pour representer les bosses macroscopiques sur ton objet.

    Il s agit de deformer la coordonnees (u,v) de texture pour un point en fonction des bosses de la surface

    Pour un point affiche, on trouve sa coordonnees (x,y,z) dans l'espace et on trace un rayon qui part de l'oeil vers ce point. Ce rayon intercepte une bosse de la surface ... ca nous permet de modifier la coordonnees de texture de l'image pour en tenir compte:

    ex:

    trace une courbe y = cos(x) sur du papier (qui represente les bosses de la surfaces)

    puis trace une courbe y = ax + 0 (qui represente le rayon dont je parle)

    Ces deux courbes s'intercepte plusieurs fois (notamment si a tend vers 0)

    Le dernier point d"interception (celui le plus loin de l origine) est celui qui serait reellement vu par un oeil


    Notemment, le parallaxe mapping necessite de faire un boucle dans le pixel shader pour parcourir la texture d elevation

    PS : je peux ,si tu veux, te mailer un exemple rendermonkey de parallax mapping
    Images attachées Images attachées  

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    Citation Envoyé par smashy Voir le message
    sans vouloir te vexer , ton code (pixel shader) ne ressemble pas a du parallax mapping ...

    [...]

    Notemment, le parallaxe mapping necessite de faire un boucle dans le pixel shader pour parcourir la texture d elevation
    si si, son code resemble bien à du parallax mapping, ce que tu decrit, c'est du parallax occlusion mapping, qui est nettement plus gourmand en ressources (mais gere l'occlusion comme son nom l'indique subtilement)
    * 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

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    Citation Envoyé par bafman Voir le message
    si si, son code resemble bien à du parallax mapping, ce que tu decrit, c'est du parallax occlusion mapping, qui est nettement plus gourmand en ressources (mais gere l'occlusion comme son nom l'indique subtilement)
    Mea culpa ...

    effectivement, apres mon POST, je me suis rendu compte que le code ressemblait beaucoup (de memoire) à un code que j'avais vu dans (GPU Gems ou Game programming)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Par défaut
    Merci pour vos réponses.

    J'allait demander a smashy si il était sur de ce qu'il racontait mais apparament bafman semble d'accord avec moi. Parce que avec tous les codes de parallax mapping que j'ai vu sur le net, il serait tous faut, lol Mais merci quand même de ton aide smashy

    Personne ne vois mon erreur ?

Discussions similaires

  1. [mapping] problème de configuration
    Par Ginseng dans le forum Hibernate
    Réponses: 7
    Dernier message: 30/01/2011, 18h38
  2. [SimpleXML] Google Maps, Problème d'encoding dans une boucle
    Par yahn dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/09/2006, 19h40
  3. [Mapping] problème de redirection
    Par rvfranck dans le forum Struts 1
    Réponses: 8
    Dernier message: 21/09/2006, 10h00
  4. [mapping] problème de connexion à une base sqlServer
    Par totoranky dans le forum Hibernate
    Réponses: 1
    Dernier message: 15/09/2006, 00h30
  5. [3D] parallax mapping
    Par derferic dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 17/02/2006, 13h44

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