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] récupérer une variable à la fin de l'exécution


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Par défaut [GLSL] récupérer une variable à la fin de l'exécution
    Bonjour,

    J'essaie de faire un fragment shader pour calculer la moyenne des niveaux de gris de mon image (image de type niveau de gris bien sur ^^)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //Fragment Shader
     
    uniform sampler2D texture;
    varying float somme;
     
    void main(void)
    {
    	float nx, ny;
    	nx = gl_TexCoord[0].x;
    	ny = gl_TexCoord[0].y;
    	somme += texture2D(texture,vec2(nx, ny)).r; // vu que l'on est en niveau de gris les 3 composantes ont la mm valeur
     
    	gl_FragColor = gl_Color;
    }
    le problème est que je n'ai pas trouvé comment récupérer ma variable "somme" à la fin de l'exécution (et je me demande si c'est faisable. A ce que j'ai lu, varying sert à passer une variable d'un vertex shader à un fragment shader mais pas à ressortir une variable.

    Merci d'avance de votre aide.

  2. #2
    Membre confirmé Avatar de lXT95l
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 106
    Par défaut
    C'est impossible (corrigez moi si je me trompe), mais tout ce que tu pourras ressortir d'un pixel shader c'est la couleur de ce texel via gl_FragColor.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Par défaut
    C'est malheureusement ce qui me semblait, c'est pour ca que je demandais pour voir si je n'avais pas raté une subtilité

  4. #4
    Membre éprouvé Avatar de Harooold
    Homme Profil pro
    Ingénieur 3D temps réel
    Inscrit en
    Mars 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 136
    Par défaut
    C'est effectivement impossible de récupérer la valeur d'une variable dans un shader.

    Mais on peut feinter pour la visualiser ... sous forme de couleur ! Au début c'est un peu dur à bien associer les variations de couleurs avec la valeur associer mais à la longue on y arrive bien et on trouve ça très artistique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gl_FragColor = vec4(vec3(somme / 100.), 1.);
    Tu obtiendras visuellement en niveau de gris ta variation par fragment de ton niveau de gris.
    Et comme les composantes rgba sont comprises entre 0. et 1. divise par une certaine valeur afin que la valeur soit <= 1. et ne pas voir que du blanc partout. J'ai divisé par 100. pour l'exemple, tatonne juste pour trouver la bonne valeur qui fasse ni trop blanc ni trop noir !

  5. #5
    Membre confirmé Avatar de lXT95l
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 106
    Par défaut
    Oui, j'ai pensé a le dire, puis de récuperer ca via glReadPixel, mais c'est franchement pas tres adapté =]... si tu veux utiliser le GPU pour autre chose que des shaders, il faut utiliser cuda !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 93
    Par défaut
    Ben mon but c'etait de faire calculer au GPU la moyenne des niveaux de gris de ma texture (ou du moins la somme, j'aurai fait la division en dehors pour avoir la moyenne)

Discussions similaires

  1. [Ant] Récupérer une variable d'envionnement
    Par lionel69 dans le forum ANT
    Réponses: 4
    Dernier message: 25/01/2007, 10h22
  2. Récupérer une variable --> Javascript+CSS
    Par Skarlix dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/08/2005, 16h01
  3. [Applet] récupérer une variable PHP ?
    Par Shiryu44 dans le forum Applets
    Réponses: 10
    Dernier message: 22/03/2005, 11h39
  4. [JSTL] Récupérer une variable du style <%String bob = "bobby"%>
    Par nickoshiba dans le forum Taglibs
    Réponses: 2
    Dernier message: 15/03/2005, 08h50
  5. récupérer une variable
    Par boucher_emilie dans le forum ASP
    Réponses: 9
    Dernier message: 05/07/2004, 10h34

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