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 :

compilation Cg/OpenGL


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 44
    Par défaut compilation Cg/OpenGL
    Bonjour,

    Cg génère du code en assembleur qui est ensuite envoyé à l'API (openGL ou DirectX).
    DirectX utilise D3DX pour créer un code assembleur binaire qui est envoyé au driver.
    1. Je ne comprends pas, par contre, comment openGL gère ce code assembleur.
    2. GLSL est-il compilé à l'execution ou offline?

    Je ne suis pas du tout sur de ce que j'avance mais j'essaye de bien comprendre les différents langages de shaders. Merci beaucoup pour votre aide.

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    1. Il faut te taper l'implémentation des différents profils OpenGL à la main. Et ce n'est pas du gâteau... Tu peux consulter les sources du moteur 3D OGRE, ils font ce genre de chose.

    2. A l'execution.

    Tu peux aussi aller lire ce tutoriel :

    http://loulou.developpez.com/tutorie...eur3d/partie8/

  3. #3
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 44
    Par défaut
    2. Si la compilation ne s'effectue qu'à l'execution avec GLSL alors que avec HLSL elle peut être fait soit à l'execution soit offline, cela signifie que tous les shaders GLSL doivent avoir leurs sources dispo, c'est un énorme inconvénients , non? HLSL permet de cacher ces sources et dans l'industrie c'est primodial.

  4. #4
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 580
    Par défaut
    Cg génère un code assembleur et fonctionne donc comme une couche supplémentaire un peu comme un compilateur GLSL qui compile et qui envoie au "vertex/fragment program" le code compilé alors que GLSL c'est du code haut niveau que les drivers de la carte vont compiler

    DirectX utilise D3DX pour créer un code assembleur binaire qui est envoyé au driver
    Je pense que comme GLSL, ce sont les drivers spécifiques à la carte/constructeur qui se chargent de la compilation

    Citation Envoyé par chonos
    HLSL permet de cacher ces sources et dans l'industrie c'est primodial.
    lol, tu les cache pas tant que cela, il y a toujours moyen de les retrouver
    tu peux aussi cacher tes sources GLSL, tu peux très bien les compresser et/ou crypter dans une grosse archive si tu veux, au final et comme HLSL il y aura toujours moyen de les récupérer à l'exécution par exemple
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  5. #5
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 44
    Par défaut
    Je pense que comme GLSL, ce sont les drivers spécifiques à la carte/constructeur qui se chargent de la compilation
    pour GLSL je suis d'accord mais HLSL la compilation ne s'effectue pas dans le driver mais au niveau de la bibliothèque D3DX et c'est le code assembleur binaire qui est envoyé au driver.

    J'ai toutefois une autre question. Apparement il est possible de désassembler un code grace au compilateur en ligne fxc pour une cible de compilation choisie.
    Cela signifie t-il que à partir du code assembleur binaire on peut retrouver le code source??

  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 : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    on peut toujours retrouver le code source, que ce soit pour un exe standard ou pour un shader... le tout c'est de le comprendre apres... avoir un shader sans savoir quelle texture sert a quoi, quel sont les parametres envoyé et autre, ca n'avance pas a grand chose... chouette ici il fait un produit scalaire... vraiment interessant
    * 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
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 44
    Par défaut
    J'ai toutefois une autre question. Apparement il est possible de désassembler un code grace au compilateur en ligne fxc pour une cible de compilation choisie.
    Cela signifie t-il que à partir du code assembleur binaire on peut retrouver le code source??
    Je me suis mal exprimé. Je voudrais savoir qu'est ce qu'il faut mettre en entrée au compilateur fxc ( de l'assembleur binaire? )
    et qu'est ce qu'on obtient en sortie (le code source HLSL? de l'assembleur?)

  8. #8
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 580
    Par défaut
    Citation Envoyé par chonos
    pour GLSL je suis d'accord mais HLSL la compilation ne s'effectue pas dans le driver mais au niveau de la bibliothèque D3DX et c'est le code assembleur binaire qui est envoyé au driver.
    Et la bibliothèque D3DX ne fait pas appel au driver pour la compilation ?
    J'en doute fortement, rien que Ati et nVidia n'ont pas à 100% les mêmes instructions pour les shaders, et d'une carte à l'autre l'instruction peut être gérée en hardware ou en software
    pourquoi le compilateur GLSL est-il justement intégré aux drivers à ton avis ?

    Attention, je ne dis pas que tu as tords, c'est peut-etre moi qui ne connais pas le processus HLSL mais si tu as une source sure pour appuyer ce que tu dis, cela m'intéresse, au moins pour améliorer ma culture DirectX
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  9. #9
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 44
    Par défaut
    De ce que j'ai compris, deux moyen de compiler:
    -à l'execution : par la bibliothèque D3DX qui va examiner la machine cliente dans quel cas je suppose que effectivement elle va regarder le driver de la carte ( si quelqu'un peut confirmer ceci !!) et déduire un compile target approprié
    -offline : au développer de choisir un compile target et là on ne regarde pas la machine cliente. d'où ma question pour le désassemblage.

    Je ne comprends rien à ce desassemblage alors si quelqu'un peut m'aider.

    Ce que j'avance n'est que le fruit de mes lectures et peut tres bien etre faux. en tout cas merci a toi pour ton aide et tes questions qui me font reflechir et progresser

  10. #10
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    a priori, pour Dx, c'est uniquement la lib qui effectue la compilation, c'est pour cela qu'il sont obligé de sortir une nouvelle version a chaque ajout d'instruction pour les shaders (par exemple pour la sortie des gforce6, ils on ajouté un profile SM3.0 avec Dx9c)

    c'est d'ailleurs pour cela que la solution openGL est potentiellement plus interessante, car c'est uniquement le driver qui prend cela en charge. Mais par contre on rencontre des problemes entre les differents constructeurs (nombre d'indirection de textures limitée sur ATI... oui c'est naze )

    bref chaque solution a ses aventages et ses inconvenient dans ce domain :
    - Dx a l'aventage d'etre unifiée : ca marche pareil sur toutes les cartes mais c'est plus difficilement optimisable
    - openGL a l'aventage d'etre potentiellement plus optimal, mais du coup la compatibilitée entre carte n'est pas garantie...
    * 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

  11. #11
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 580
    Par défaut
    Citation Envoyé par bafman
    a priori, pour Dx, c'est uniquement la lib qui effectue la compilation, c'est pour cela qu'il sont obligé de sortir une nouvelle version a chaque ajout d'instruction pour les shaders (par exemple pour la sortie des gforce6, ils on ajouté un profile SM3.0 avec Dx9c)
    Ok!! merci pour l'info

    Citation Envoyé par bafman
    (nombre d'indirection de textures limitée sur ATI... oui c'est naze )
    Que de problème avec Ati, rien qu'à l'installation de nouveaux drivers, mise à jour donc, il faut que j'allume la télé (sur laquelle la carte est branchée en permanence) pour pouvoir réactiver mon affichage -__-
    Plus en rapport avec OpenGL : J'avais développé une petite GUI qui dessinait des LINE_LOOP et il manquait un pixel dans le coin sur ati...
    pas grand chose des fois mais pleins de petits problèmes plus ou moins importants qui s'accumulent et qui font que j'ai bien envie de changer de carte
    Ne pas hésiter à leur envoyer un mail dans ce cas, plus on sera à leur dire qu'on a des problèmes plus de chance on aura de les faire bouger
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/11/2012, 00h47
  2. compilation projet opengl
    Par samplaid dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 07/04/2009, 18h08
  3. Problème compilation Glut/Opengl
    Par MathieuSkelling dans le forum C
    Réponses: 1
    Dernier message: 11/06/2008, 22h33
  4. Problème de compilation Qt + OpenGL
    Par Revanb dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 27/01/2008, 19h16
  5. Erreur de compilation oavec OpenGL
    Par Cofondinde dans le forum MFC
    Réponses: 1
    Dernier message: 05/06/2005, 15h41

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