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 : un uniform pour chaque vertex


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 18
    Par défaut GLSL : un uniform pour chaque vertex
    Bonjour à tous.

    Je débute en glsl, et j'ai bien entendu lu la doc et parcouru les spécifications, mais je ne trouve pas comment faire ce que je veux.

    Je suis en train de réaliser un vertex shader et j'ai besoin d'attacher plusieurs informations à chacun des vertex de ma géométrie, que je puisse récupérer à chaque exécution du shader.
    Dans le reste de mon programme ces informations sont stockées dans une structure, et je remplis un tableau avec des instances de cette structure - une pour chaque vertex.

    Idéalement je voudrais donc pouvoir attacher un uniform à chaque vertex, ou un tableau d'uniforms à mon tableau de vertex de façon à ce que les données correspondent... ce que je ne sais pas faire... y a-t-il un moyen de faire ça? Ou un meilleur moyen de faire ce dont j'ai besoin?

    J'espère avoir été clair...
    Merci d'avance!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Par défaut
    si tu programmes cette partie à la manière forward-compatible les datas côté opengl seront générique et tu pourras y mettre n'importe quoi, c'est le shader qui décidera alors quoi en faire. tu utilises alors glEnableVertexAttribArray() et glVertexAttribPointer() :

    http://bakura.developpez.com/tutorie...ec-opengl-3-x/

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 18
    Par défaut
    Merci , c'est exactement ce qu'il me faut!

    Je découvre au passage que ce que je fais est deprecated... je vais devoir repenser mon shader, mais cette petite mise à jour ne fera pas de mal ^^

    Merci encore.

  4. #4
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 18
    Par défaut
    Rebonjour,

    J'ai une question concernant l'utilisation des attributs génériques : est-ce qu'il y a un moyen de les modifier dans le shader ??

    Il me semble que non, et je ne trouve pas ça très pratique. Si je prend l'exemple d'une variable attribute vec3 vertexPosition (équivalente à gl_Vertex), tout l'intérêt du shader serait de ne pas avoir à modifier cette variable dans le code. Je voudrais laisser le soin au shader de mettre à jour la position de mon vertex, et de s'en souvenir à chaque frame. Si je dois faire tous les calculs de position dans le code, je perds toute la puissance du shader et du calcul GPU !

    Est-ce que je me trompe quelque part? Y a t-il un moyen d'écrire dans les variables "attribute" ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Non, par contre tu peux en envoyer de nouveaux à chaque frame dans un VBO sans problème.

    Autre chose : la position (gl_Vertex) reste un attribut par défaut, il n'est pas nécessaire de le remplacer par un attribut générique. Puisqu'il n'y a pas de vertex sans position.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2009
    Messages : 18
    Par défaut
    Citation Envoyé par ponce Voir le message
    Non, par contre tu peux en envoyer de nouveaux à chaque frame dans un VBO sans problème.
    C'est sur, mais du coup le temps de calcul se fait côté CPU et non GPU...

    Citation Envoyé par ponce Voir le message
    Autre chose : la position (gl_Vertex) reste un attribut par défaut, il n'est pas nécessaire de le remplacer par un attribut générique. Puisqu'il n'y a pas de vertex sans position.
    Ben, c'est ce qu'il me semble aussi, mais le lien proposé par adtunum à l'air de dire que l'usage des attributs par défaut est deprecated depuis la dernière version...

Discussions similaires

  1. Calculer la normal pour chaque vertex
    Par DestinyWar45 dans le forum OpenGL
    Réponses: 13
    Dernier message: 11/12/2006, 08h07
  2. [VB.NET] Taille differente pour chaque colonne dans DATAGRID
    Par stephane93fr dans le forum Windows Forms
    Réponses: 14
    Dernier message: 12/01/2005, 16h50
  3. Réponses: 3
    Dernier message: 23/01/2004, 21h02
  4. [Composants] TRichEdit: Une police pour chaque ligne
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/03/2003, 15h59

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