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 :

[Shader - glew] versions des shader


Sujet :

OpenGL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut [Shader - glew] versions des shader
    Hello.

    Comment faut-il faire pour vérifier si une carte graphique supporte les shaders ?

    On voit très souvent ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(!GLEW_ARB_vertex_shader || !GLEW_ARB_fragment_shader) //support shaders ?
       throw CGlewException("The shaders aren't support by your graphic card.");
    Mais qu'est ce que ça vérifie exactement ? Si on a les shaders 1.0 ? Si on a les shaders 2.0 ?

    Parce ce code me dit que j'ai pas les shaders sur mon ati 9200se alors qu'il me semble que je devrait quand même avoir les shaders 1.0, non ?

    merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Pour vérifier le support des shaders GLSL, il faut examiner les extensions suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    GL_ARB_shading_language_100 // ou 110 pour la version 1.1
    GL_ARB_shader_objects
    GL_ARB_vertex_shader
    GL_ARB_fragment_shader
    Si par contre tu veux utiliser des shaders ASM (plus vieux et presque pas standardisés), il faudra se tourner vers d'autres extensions, plus particulières aux constructeurs.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    merci mais il me semble que les shaders 1.1 c'est vieux, maintenant on est aux shaders 3.0 (voire 4.0, non ?).

    Je supose donc que à chaque nouvelles versions des shaders, GLSL a évolué, non ? Donc on devrait avoir des extentions du genre :
    GL_ARB_shading_language_200 et GL_ARB_shading_language_300 mais d'après Google, ça n'existe pas ! Où est-ce que je me trompe ?

    Et pour finir : pourquoi sur mon ATI 9200SE je n'ait pas "GL_ARB_shading_language_100" ? Il me semble qu'elle supporte les shader 1.0, 1.1, 1.3 !

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Les versions des modèles de shaders implémentés par les GPU (ce dont tu parles) n'ont rien à voir avec les versions de GLSL, il ne faut pas les comparer. GLSL 1.0 doit être à peu près équivalent à un modèle de shaders 2.0 (à vérifier).

    Tu peux vérifier les versions plus anciennes, par exemple l'extension GL_ARB_vertex_program qui correspond aux vertex shaders 1.0.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par akiraa Voir le message
    Hello.

    On voit très souvent ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(!GLEW_ARB_vertex_shader || !GLEW_ARB_fragment_shader) //support shaders ?
       throw CGlewException("The shaders aren't support by your graphic card.");
    Parce ce code me dit que j'ai pas les shaders sur mon ati 9200se alors qu'il me semble que je devrait quand même avoir les shaders 1.0, non ?
    merci
    Salut
    Une 9200se supporte il me semble les S1.0 mais pas les S2.0 par consequent le code contenant un "ou" logique te lancera l'exception puisque tu ne supporte pas un des 2 shaders.

    Citation Envoyé par akiraa Voir le message
    merci mais il me semble que les shaders 1.1 c'est vieux, maintenant on est aux shaders 3.0 (voire 4.0, non ?).
    Effectivement mais l'apellation shaders 3.0 et 4.0(Geometric shaders) est du a Microsoft et son directX ,la programmation de ces shaders en GLSL n'est (sans certitude) pas possible.Mais l'arrivé d'opengl 3.0 devrait donner acces au S4.0 (meme si il ne le nomme pas ainsi).

  6. #6
    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
    Citation Envoyé par akiraa Voir le message
    merci mais il me semble que les shaders 1.1 c'est vieux, maintenant on est aux shaders 3.0 (voire 4.0, non ?).
    attention à ne pas confondre shader model et glsl...
    le shader model, c'est un truc idiot propre à microsoft. à chaque évolution des shaders, il font une nouvelle version de leur compilateur de shader, et il faut spécifier quelle version on utilise...
    en GLSL, ce n'est pas comme ca. Les shaders ne sont pas compilé par OpenGL, mais par les drivers, donc ils savent, au moment de la compilation, si la carte graphique supporte tel ou tel extension. Donc pas de problème de version de shader, la compilation fait que le shader sera toujours compilé de la façon la plus optimal possible (enfin, ça ça dépend des drivers ).
    Une extension spécifique (le glsl 1.1) a quand même été créer lors de l'arrivée des branchement dynamiques, car la conception des shaders est complètement différentes avec ou sans.
    * 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

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos réponses

    Citation Envoyé par Anthanoj Voir le message
    Une 9200se supporte il me semble les S1.0 mais pas les S2.0 par consequent le code contenant un "ou" logique te lancera l'exception puisque tu ne supporte pas un des 2 shaders.
    Je doit donc comprendre que les fragment shader ne sont pas supporté par les S1.0 ? Je m'attendait pas à ça

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Non ça n'a rien à voir, tu peux oublier ce commentaire de Anthanoj. A mon avis ces deux extensions vont toujours de paire, il ne me semble pas possible que seule l'une d'entre elles soit supportée.
    Comme on te l'a dit il faut oublier les versions "made in Microsoft" si tu utilises GLSL.

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par akiraa Voir le message
    Merci pour vos réponses
    Je doit donc comprendre que les fragment shader ne sont pas supporté par les S1.0 ? Je m'attendait pas à ça
    C'est pas vraimment ce que je voulais dire.Mais je me pose des questions moi aussi apres la reponse de Laurent.

    Si vs et fp vont de paire en GLSL toutes les cartes supportant les extensions vertex supporterai les extensions fragment?
    Cela signifirait t-il que la carte d'akiraa ne supporterait tout simplement pas les extensions ARB concernant les shaders?

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Cela signifirait t-il que la carte d'akiraa ne supporterait tout simplement pas les extensions ARB concernant les shaders?
    Oui, les shaders GLSL en tout cas.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    Oui, les shaders GLSL en tout cas.
    Autrement dit Akiraa pourrait programmer en HLSL ou Cg s'il veut utiliser les shaders?

    Je m'excuse de t'avoir induit en erreur Akiraa je pensais (grossiere erreur d'ailleur) que les pixels Shaders 1.0 correspondaient aux vertex shaders et les pixels Shader 2.0 au fragment shaders.
    Merci à Laurent.

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Autrement dit Akiraa pourrait programmer en HLSL ou Cg s'il veut utiliser les shaders?
    Si sa carte supporte des pixels shaders 1.0 sous DirectX il peut utiliser HLSL, si elle supporte les vieilles extensions des shaders ASM sous OpenGL il peut utiliser Cg. Si elle ne supporte rien, ben il l'a dans l'os

    que les pixels Shaders 1.0 correspondaient aux vertex shaders
    Pixel et vertex shader c'est vraiment différent, le premier traite les pixels alors que le second s'occupe des sommets ; rien à voir avec une histoire de version
    Le seul amalgamme que l'on puisse faire c'est fragment / pixel shader (l'un est utilisé par OpenGL, l'autre par DirectX).

Discussions similaires

  1. Galaxie Mitaka avec des shaders ?
    Par kev42100 dans le forum OpenGL
    Réponses: 4
    Dernier message: 07/05/2009, 22h51
  2. Réponses: 4
    Dernier message: 20/07/2007, 12h24
  3. [Java3D] Comment utiliser des shaders ARB ?
    Par Knightmare dans le forum 3D
    Réponses: 1
    Dernier message: 25/05/2007, 11h05
  4. Support des shaders quake III : Irrlicht, Ogre ou aucun ?
    Par inertia dans le forum Moteurs 3D
    Réponses: 2
    Dernier message: 27/02/2006, 20h00

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