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 : les casts


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut GLSL : les casts
    Bonjour,

    Sur internet j'ai trouvé ce code GLSL (qui fonctionne surement chez l'auteur):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    vec3 heightTex = texture2D(parallaxMap, texCoord).xyz;
    float height = scale * heightTex - bias;
    vec2 newTexCoord = height * viewDir + texCoord;
    où :
    - "scale" et "bias" sont des float
    - "viewDir" est un vec3

    Mais mon compilateur GLSL râle (ce qui me semble logique) :
    implicit cast from "vec3" to "float"
    implicit cast from "vec3" to "vec2"
    En effet, j'ai du mal à voir comment en faisant "scale * heightTex - bias", on peu obtenir un float !
    Ma question : est-ce que quelqu'un aurait des explications sur tout ça ou est-ce que quelqu'un saurait me traduire le code ci-dessus en un code qui compile ?

    Merci d'avance...

  2. #2
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Prenons ligne par ligne..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vec3 heightTex = texture2D(parallaxMap, texCoord).xyz;
    Il semblerait que l'on veuille recupérer les coordonnées de hauteurs définie dans une texture "parallaxMap". On ne récupère que les 3 première coordonnées ( .xyz )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float height = scale * heightTex - bias;
    Ici, on veut récupérer la hauteur thèorique de ton fragment avec une mise à l'echelle et camplée. Si ta texture est en niveau de gris, tes trois composantes (r, g et b ) sont toujours identique donc il te suffit de remplacer heightTex par heightTex.r, heightTex.g ou heightTex.b.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vec2 newTexCoord = height * viewDir + texCoord;
    Ici, on calcule de nouvelles coordonnées de texture (diffuse certainement). viewDir etant un vec3, je suppose qu'il veut récupérer les deux premières, ou les deux dernière ... a voir ... mais tu peux faire un truc du genre : viewDir.xy ou viewDir.xz ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Merci,

    Il n'y a pas moyen de savoir si je doit mettre viewDir.xy, viewDir.xz ? Normalement si vu que le code à bien dû fonctionné !

    Mon gros problème, c'est le débugage en glsl qui est impossible (je me trompe ?) donc si je part sur des suppositions (xy ou xz) c'est plutôt mal parti, pour régler mon problème, lol

  4. #4
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Il existe des outils pour débugger les shaders ...

    Par exemple :
    * ShaderDesigner pour l'écriture indépendante des shader
    * GDebugger, GLIntercept ou GLSLDevil pour le débugage dans ton application

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Je viens de tester GDebugger et c'est vraiment top comme logiciel...quand je pense que voila quelque mois j'en ai chi** pour savoir ce que j'avais dans mon stencil buffer et ici en deux cliques de souris, j'arrive à afficher le stencil buffer !

    Par contre pour les shader, j'arrive juste à afficher la valeur des uniform mais je n'arrive pas à faire du pas à pas dans le code source de mon shader .

Discussions similaires

  1. petite question sur l'héritage et les cast
    Par baedal dans le forum Langage
    Réponses: 3
    Dernier message: 29/02/2008, 00h48
  2. [GLSL] les bases
    Par lXT95l dans le forum OpenGL
    Réponses: 4
    Dernier message: 27/12/2006, 18h58
  3. Question sur les casts
    Par nicolas66 dans le forum C++
    Réponses: 3
    Dernier message: 16/03/2006, 19h03
  4. [Début.] Les CAST
    Par Sylvester dans le forum Langage
    Réponses: 13
    Dernier message: 08/07/2005, 22h24

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