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 :

Récupérer la position dans un fragment sh.


Sujet :

OpenGL

  1. #1
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut Récupérer la position dans un fragment sh.
    Bonsoir,

    Je voudrais savoir comment faire (ou déjà si c'est possible, mais j'espère :p) à partir d'un fragment shader récupérer les coordonnées x, y de l'écran. Imaginons que je souhaite récupérer, via un fragment shader, la position dans le repère du monde de chaque pixel dessiné.

    J'ai pensé à envoyer une texture de la taille de l'écran (d'ailleurs dois-ton obligatoirement envoyer des textures de puissances de 2, ou puis-je envoyer n'importe quelle taille de texture à un shader, ici en l'occurence la taille de l'écran, par exempl 1024*768 ou 1440* je ne sais plus combien pour les écrans wide screen, si cette texture n'est pas destinée à être rendue ?).

    Donc bref, j'envois ma texture, je rend ma scène, donc le fragment shader est appelé, et je souhaite écrire dans cette texture de par exemple 1024*768 la position x,y,z du pixel qui va être dessiné. Mais comment récupérer la position de l'écran ? (par exemple, la première postiion récupérée sera les coordonnées 0;0 de la texture, la seconde position 0;1).

    N'ayant pas de variable static dans les shaders, c'est la seule solution qui me paraît envisagable, à moins qu'il y en ait d'autres (sachant que normalement, je souhaite récupérer plus de paramètre que seulement la position du pixel dessiné).

  2. #2
    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 peut calculer dans un vertex shader les position à l'ecran de chaque vertex (à l'aide de la matrice modelview et de la matrice de projection), et interpoler le tout au niveau de chaque fragment pour avoir sa position à l'ecran.

    tu peut aussi faire la projection par fragment, mais se serait inutilement lent.
    * 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

  3. #3
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    ah bah oui, j'avais même pas pensé. Quand on fait v = (gl_ModelViewProjectionMatrix * gl_Vertex).xyz; pour une vertice, ça donne en fait la position de l'écran ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Dans un fragment program, tu peux obtenir la coordonnée du pixel à l'écran avec fragment.position. L'équivalent en GLSL doit être quelquechose comme gl_FragCoord.

  5. #5
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Merci, c'est effectivement ça .

Discussions similaires

  1. Réponses: 11
    Dernier message: 12/12/2012, 12h59
  2. Récupérer sa position dans une page
    Par bellouk dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 17/05/2010, 11h20
  3. Récupérer la position d'un élément dans la page
    Par lemok dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/07/2007, 15h46
  4. Réponses: 27
    Dernier message: 28/03/2007, 16h09
  5. Réponses: 1
    Dernier message: 15/05/2006, 15h49

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