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 :

GLSL Shaders displacement


Sujet :

OpenGL

  1. #1
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut GLSL Shaders displacement
    Bonjour,
    Je voulais savoir si il y avais un moyen de récuperer les coordonnées d'un sommet en sortie du vertex program (shader comme on veux) .
    Mon probleme est que je fais un displacement mapping, ma geometrie se trouve donc modifiée, mais je souhaite placé un objet sur ma géometrie il me faut donc savoir comment celle ci a été modifié.
    Merci pour votre aide

  2. #2
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 583
    Par défaut
    non, pas dans le cas où tu dois être

    oui mais il faut utiliser les nouvelles extensions des geometry shaders te permettent de récupérer une géométrie transformée
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  3. #3
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut détail
    pourrai tu un peu préciser? je debute avec le glsl

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si tu possèdes une GeForce 8800 tu peux utiliser le nouveau type de shader (geometry shader) qui permet, à la différence du vertex shader, de générer de nouveaux sommets. Par contre pour les récupérer, je ne pense pas que ce soit plus efficace qu'autre chose, il faudra tout de même faire un transfert GPU --> CPU.

    Sinon je crois que tu peux aussi faire du rendu dans un vertex buffer avec certaines extensions.

  5. #5
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut transfert GPU CPU
    je n'ai pas de GeForce 8800 malheureusement .
    Un transfer GPU -> CPU est possible ?
    N'y a t-il aucun moyen de stocké un vec3 representant un sommet calculer dans le vertex program et de le recuperer dans mon programme?
    J'ai pensé a une autre solution qui serai de faire le meme calcul de displacement du vertex program dans mon programme mais il me faut les coordonnees de texture c'est a dire le gl_MultiTexCoord0.

  6. #6
    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
    vous voulez sans doute parler des primitive shader (bah oui quoi on est pas chez directX ici )
    * 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

  7. #7
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 583
    Par défaut
    c'est quoi ça primitive shader ?

    l'extension OpenGL pour travailler sur la géométrie au niveau des shaders c'est bien geometry shader

    un petit tuto en anglais ici : Geometry Shader
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  8. #8
    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
    oui mais non en fait, les geometrie shader c'est une extension EXT, le travail de l'ARB (heu Kronos plutot) se fait avec le terme primitive shader cf : http://www.gamedev.net/columns/event...cle.asp?id=233

    (bon après, il n'est pas impossible que l'extension final utilise le terme geometry shader car c'est celui utilisé par tout le monde )
    * 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

  9. #9
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut
    arf m aide pa beaucoup tout ca

  10. #10
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 583
    Par défaut
    pour revenir à ton problème, xtra.creativity, sans GeForce série 8 tu ne pourras pas récupérer la géométrie par les shaders
    combien même, je doute que ce soit si simple, je doute qu'on puisse récupérer la géométrie résultante d'un traitement "préprogrammé"

    en plus le displacement mapping si c'est bien dont tu parles, ne modifie pas réellement la géométrie
    la preuve, si le polygone sur lequel tu appliques un displacement mapping est coplanaire avec ta vue, il reste plat

    si tu veux générer la géométrie comme le displacement, tu va devoir travailler avec le CPU, et générer un heigh field
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  11. #11
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut
    Merci pour l'aide par contre tu te trompe completement sur le displacement mapping. Celui-ci modifie les coordonnées des vertex, c'est justement son interet d'ou son nom (displacement ...). Je te laisse de documenté dessus tu trouvera plein d'exemple.
    Je realise une mer dynamique a partir d'une grille radial simple. j'y applique mon shader pour simulé le mouvement des vagues, le resultat est satisfaisant mais pour y placé un bateau par exemple il faut que je recupere les modifications de ma mesh. Et apparement ca va etre plus compliqué que prevue ....

  12. #12
    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
    oula oui, ca va être beaucoup plus compilqué que prévu etant donné qu'il faut voir ta carte graphique comme une memoire en ecriture seul... sauf ca particulier (récuperer des texture par exemple) tu ne peut pas récupérer les données traitées par ta 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

  13. #13
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Citation Envoyé par shenron666
    en plus le displacement mapping si c'est bien dont tu parles, ne modifie pas réellement la géométrie
    la preuve, si le polygone sur lequel tu appliques un displacement mapping est coplanaire avec ta vue, il reste plat
    Le terme "displacement mapping" déforme réellement la géométrie comparé au "virtual displacement mapping" qui correspond lui au "parallax mapping" et qui correspond à ta définition shenron666.

  14. #14
    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
    a non, le virtual displacement mapping ne correspond pas simplement au parallax mapping, c'est nettement plus complexe et prend en compte l'occlusion des surfaces sur le même plan, mais ca reste quand même dans la même famille d'effets

    et oui, je confirme, j'aime bien embetter tout le monde sur des bête question de semantique
    * 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

  15. #15
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Citation Envoyé par bafman
    a non, le virtual displacement mapping ne correspond pas simplement au parallax mapping, c'est nettement plus complexe et prend en compte l'occlusion des surfaces sur le même plan, mais ca reste quand même dans la même famille d'effets

    et oui, je confirme, j'aime bien embetter tout le monde sur des bête question de semantique
    Si tu as plus d'information je suis preneur mais j'ai lu plusieurs articles et à chaque fois "virtual displacement mapping" == "parallax mapping"

    ex parmi d'autres: http://en.wikipedia.org/wiki/Parallax_mapping

    Si tu as un article qui différencie "virtual displacement mapping" et "parallax mapping", je prend tout de suite

  16. #16
    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
    en fait, le problème de terminologie vient principalement du fait que Epic à lui aussi appelé sont parallax mapping virtual displacement mapping alors que c'est du bête parallax...
    la difference entre les deux techniques est bien expliqué ici :
    http://www.regarde.org/blog/2005/10/...ement-mapping/
    * 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

  17. #17
    Membre confirmé Avatar de xtra.creativity
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 108
    Par défaut
    Si ca interesse d'autre personne qui effectuerai du displacement mapping, j'ai peut etre trouvé une solution(c'est pas encore codé)
    Le but du displacement mapping est donc de deplacer les sommets suivant une normal map et une height map.
    Je vais donc effectué un callback en parrallele de mon shader. Il lira les 2 textures (normal et height ) suivant 4 coordonnées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     4
    | |
    1 3
    | |
     2
    suivant mon objet et son emplacement dans l'espace de facon. Je calculerai alors de la meme facon que le shader les nouvelles coordonnees par rapport au pixel de mes coordonnees pour ainsi appliquer a mon objet les transformations nécessaire suivant sa position et inclinaison dorigine et les coordonnée trouvé.

    J'espere ne pas trop perdre en performance, si quelqu'un a une autre solution je suis preneur

  18. #18
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Citation Envoyé par bafman
    en fait, le problème de terminologie vient principalement du fait que Epic à lui aussi appelé sont parallax mapping virtual displacement mapping alors que c'est du bête parallax...
    la difference entre les deux techniques est bien expliqué ici :
    http://www.regarde.org/blog/2005/10/...ement-mapping/
    Justement l'article que tu sites fais appel à du "virtual displacement mapping"/"parallax mapping" amélioré

    voir l'article de Divide, (la personne interviewé) sur le blog de no-frag

    Il n'y a que le rendu qui est amélioré, la géométrie n'est pas déformé si j'ai bien compris, cela serait du "enhance virtual displacement mapping"/"enhance parallax mapping"

  19. #19
    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
    Si le but est bien de deplacer des vertex aligner sur un quadrillage a la vertical de celui ci, je renverserais plutot le probleme (ne pas recuperer la sortie du vertex shader, mais plutot alimenter son entree avec une heightmap que tu pourras utiliser par ailleurs):

    -utiliser un pixel shader sur rendu sur texture pour calculer les deplacements verticaux
    -lancer ton vertex shader en lui fournissant la texture d 'elevation (note : il faut que ta carte graphique supporte le shader model 3 et c'est possible depuis GFORCE 6600)

    notes:

    -la texture d elevation est alors disponible pour connaitre dans tout autre shader l elevation dans un point du plan
    -par deriation de cette texture, tu peux connaitre la normale en chaque vertex du plan.
    -la textures doit etre de format FLOAT_RGB (sure que ca marche) ou FLOAT_LUMINANCE (a priori, une seule composante te suffit pour l elevation, mais il faut verifier que ca marche), sinon tu as une chute de performance considerable.
    -tu peux toujours utiliser cette map d 'elevation pour un parallax-mapping ou du bump-mapping au niveau des triangles de ta mer dynamique.
    -si tu veux faire flotter des objets assez gros dessus, tu peux toujours, a partir de ta texture d'elevation obtenir des mip-map (a voir si cela peut etre automatise par OpenGL sur une texture type FLOAT_RGB) qui te permettra, sur un maillage moins precis de connaitre les elevations moyennes et de calculer a la voler une orientation pour ton objet flottant
    -de memoire, quand tu utilises une texture flottante, il faut se mefier des fonctions de magnification et de mignification (en gros, il faut choisir GL_NEAREST , eventuellement GL_LINEAR mais c est moins sur).

    PS: si tu es interresse, je croix avoir dans mes archives un bout de code (sous linux) qui te permet de mettre en pratique:

    -rendu sur texture FLOAT_3
    -displacement mapping

  20. #20
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 583
    Par défaut
    Citation Envoyé par Ti-R
    Le terme "displacement mapping" déforme réellement la géométrie comparé au "virtual displacement mapping" qui correspond lui au "parallax mapping" et qui correspond à ta définition shenron666.
    effectivement le parallax mapping correspond bien à l'idée que j'avais en tête
    j'ai fait quelques recherches sur le displacement mapping et le peu que j'ai pu trouvé m'a fait comprendre mon erreur
    - parallax mapping généré au niveau des pixels (pas de déformation de la surface "physique")
    - displacement mapping généré au niveau des vertex
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [GLSL] infographie glsl (shader)
    Par anisklioui dans le forum OpenGL
    Réponses: 1
    Dernier message: 29/04/2015, 10h17
  2. GLScene GLSL Shader
    Par hey_monkey dans le forum Delphi
    Réponses: 0
    Dernier message: 15/07/2012, 19h18
  3. Ogre GLSL Shaders
    Par aigle_07 dans le forum Ogre
    Réponses: 6
    Dernier message: 06/01/2010, 20h21
  4. [GLSL] shader et sampler2D
    Par casafa dans le forum OpenGL
    Réponses: 6
    Dernier message: 13/09/2007, 09h35
  5. Réponses: 2
    Dernier message: 05/07/2006, 12h09

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