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 - Tableau d'Uniform possible ou pas ?


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Robxley
    Homme Profil pro
    Docteur ingénieur traitement d'image
    Inscrit en
    Mai 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Docteur ingénieur traitement d'image

    Informations forums :
    Inscription : Mai 2009
    Messages : 158
    Par défaut GLSL - Tableau d'Uniform possible ou pas ?
    Bonjour à tous.

    En glsl je voulais savoir si des tableaux sur des variable uniform était possible plus exactement sur des "uniform sampler 2d".

    Mon problème est qu'avant l'exécution de mon programme je ne sais pas combien de textures je vais devoir utiliser avec mon shader d'où mon problème de savoir s'il est possible d'utiliser des tableaux d'uniform ou tout autre astuce conduisant au même résultat.

    Je vous donne un petit exemple d'utilisation histoire que ca soit un peu plus claire.

    Je donne juste un aperçu de mon fragment shader (le vertex shader est tout simplement une transfo des vertex par la matrice modelview en gros + quelque passage de varying tels que des coord textures )

    Donc fragment shader actuelle pas du tout flexible :

    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
     
     
    uniform sampler2D t0;
    uniform sampler2D t1;
    ....
    uniform sampler2D tn; 
    /*jusqu'a ce que j'en ai marre de retaper n fois la même chose 
    (enfin plus exactement le nombre max de textures simultanées 
    acceptées par ma carte graphique et uniquement la mienne 
    ba oui d'où l'intérêt d'avoir une astuce + flexible*/
     
    //mon main
    void main(void)
    {
       gl_FragColor = fct_utilisant_les_tn();
    }

    L'idée serait d'avoir un fragment shader de la forme :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    uniform int nb_texture;
    uniform sampler2D t[nb_texture];
     
    void main(void)
    {
       gl_FragColor = fct_utilisant_les_t(nb_texture);
    }
    Par ce que dans le cas ou j'utilise une 12aine de texture je dois dire que se taper une pseudo boucle for à la main pour chacun des t0 à t12 c'est pas génial et surtout c'est pas du tout flexible.

    Si non l'idée c'était de rééditer en tps réelle mon fichier fragment avant le chargement du shader par opengl mais bon un peu tordu aussi comme solution.

    Enfin si quelqu'un à une astuce plus adéquate je suis preneur.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Par défaut
    Tu peux utiliser les textureArray qui sont des tableaux de textures de même taille.
    Dans ta création de texture tu passe le parametre GL_TEXTURE_2D_ARRAY_EXT

    Dans ton shader tu utilise alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    uniform sampler2DArray textureTab;
    uniform int nbTexture;
     
    void main()
    {
    // récupération de la première texture
        float indiceTab = 0.0;
        vec4 color = texture2DArray(textureTab, vec3(gl_TexCoord[1].xy,indiceTab ));
    }
    tu peu même utiliser une boucle dans ton shader.
    Cette solution est 100% dynamique. Par contre tu est obligé d'utiliser dans ton textureArray des texture de taille identique. ce serrai trop bien sinon.

  3. #3
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    D'ailleurs pour toute recherche sur GLSL je te conseil de regarder la spécification qui en général te renseigne sur ce que tu peux faire, ce que tu ne peux pas faire et ce que tu ne dois plus faire.

    http://docs.google.com/viewer?url=ht...ec.1.50.11.pdf

    Regarde section 4 (Variables and Types) et plus particulièrement section 4.1 Basic Types où tu peux voir que le type sampler2DArray existe (A handle for accessing a 2D array texture).

  4. #4
    Membre éprouvé Avatar de Robxley
    Homme Profil pro
    Docteur ingénieur traitement d'image
    Inscrit en
    Mai 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Docteur ingénieur traitement d'image

    Informations forums :
    Inscription : Mai 2009
    Messages : 158
    Par défaut Merci
    Ba merci pour les réponses

    Je ne connaissais pas l'utilisation des textureArray et c'est tout à fait ce qu'il me fallait.

    Si non pour les spécifications GLSL effectivement j'y avais pensé. Mais bon sans résultat dans mes recherches. Quand on a pas les mots clés c'est difficile de trouver une réponse adéquate.

    Enfin maintenant que j'ai la connaissance des textureArray c'est tout de suite plus simple. Un petit passage sur Google et paf tout plein de résultats.

    Encore merci pour l'info.

    Je marque le post en résolu.


  5. #5
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    Il fallait penser anglais pour faire une recherche : je veux un tableau de texture dans GLSL => texture array glsl dans google ou la spécification et en général tu obtiens des trucs.

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 150
    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 150
    Billets dans le blog
    150
    Par défaut
    Les spécifications sont tout simplement sur le site de Khronos ( a qui appartient OpenGL ... et autre ).
    www.khronos.org/registry/
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sortir d'un tableau les combinaisons possibles
    Par juelo dans le forum Algorithmes et structures de données
    Réponses: 33
    Dernier message: 26/03/2006, 17h11
  2. [Flash][XML] Possible ou pas ?
    Par JohnBlatt dans le forum Flash
    Réponses: 1
    Dernier message: 31/01/2006, 01h25
  3. [Tableaux] tableau qui ne s'additionne pas
    Par apprenti-fab dans le forum Langage
    Réponses: 8
    Dernier message: 21/01/2006, 14h19
  4. [VBA]possible ou pas ? creer une image jpg a partir 7 jpg
    Par sakuraba dans le forum Général VBA
    Réponses: 5
    Dernier message: 03/01/2006, 10h45
  5. [HTML] Image en fond d'un tableau qui ne se répète pas.
    Par yoyot dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/02/2005, 17h08

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