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

OpenCL Discussion :

Quelque questions.


Sujet :

OpenCL

  1. #1
    Invité
    Invité(e)
    Par défaut Quelque questions.
    Salut!

    Les besoins de mon moteur devenant de plus en plus grand, opengl ne suffit plus, en effet, celui-ci ne permet pas de faire du dessin de manière parallèle, ce qui bouffe trop de perfs surtout pour faire de l'order independant transparency de manière simple.

    En fait ce que je voudrais faire c'est ceci (dans cet ordre) :

    -Ecrire un fragment avec un fragment shader dans un buffer.
    -Lire le fragment précédent et écrire le fragment suivant avec un autre shader dans un autre buffer.

    Pouvoir écrire dans plusieurs buffers avec un même shader, se serait encore mieux.

    Le but final est de pouvoir effectuer des traitements au niveau du cpu en parallèle pendant que la frame courante se remet à jour.

    Ainsi le CPU n'est plus obligé d'attendre après le GPU pour continuer les traitements qu'il a à faire, et le GPU n'est plus obligé d'attendre que le shader aie fini sont traitement avant de mettre le buffer à jour et lire les nouvelles valeurs dans le buffer.

    Bref, je trouve que opengl n'est pas très performant et souffre beaucoup de son ancienneté.

    J'ai entendu parlé de OpenCL malheureusement il faudra tout réapprendre et sans doute recoder tout le moteur.

    Mais j'ai plusieurs questions avant de me lancer :

    -Y a t'il moyen de faire des traitements par pixel de manière synchronisée au niveau du GPU c'est à dire écrire une donnée dans un buffer puis lire cette donnée dans ce même buffer avec deux shader différent jusqu'à ce que le dessin soit terminé. (Voir même écrire et lire dans plusieurs buffers avec un seul et même shader)
    -Cet api me parait un peu complexe à utiliser, plus que opengl en tout cas, car il y a un tas de fonctions d'initialisation à appeler et pas mal de choses à initialiser mais au pire, je me débrouillerai.
    Dernière modification par Invité ; 30/04/2015 à 20h51.

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 393
    Points : 685
    Points
    685
    Par défaut
    (Pauvre Lolilolight, toi qui essaie de te faire discret en dehors des forums C++ et jeux)

    OpenGL est vieux, mais tu es loin d'avoir atteins ses limites. Le problème (et tu auras le même problème avec OpenCL), c'est que tu n'as toujours pas compris comment fonctionne un GPU et que, même si c'est possible pour un shader/kernel d'accéder à plusieurs buffer, cela provoque des accès concurrents et donc séquentialisation des traitements (et perte de performances). C'est une contrainte matérielle, due à comment les GPU sont conçus.

    Bref, avant de partir sur OpenCL, essaie de maîtriser un peu mieux OpenGL

  3. #3
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 785
    Points
    1 785
    Par défaut
    Je vois pas vraiment le problème de parallélisation avec OpenGL :

    Côté CPU:
    - Tu peux charger/créer en RAM tes modèles 3D en utilisant un thread dédié.
    - Tu peux push ta géométrie / tes textures / tes shaders sur la carte graphique dans un thread dédié.
    - Pendant ce temps ton thread principal (le thread d'affichage) continue tranquillement son job.

    Côté GPU:
    Avec GLSL tu programmes un monstre de parallélisation (calcul naïf : 1080p, 60 img/s = 124M de thread/s pour un fragment shader en fullscreen)

    En fait je vois pas l’intérêt d'OpenCL quand on fait du rendu temps réel, puisqu'il fait doublon avec les shaders. Il sert surtout dans les moteurs physiques en fait.

Discussions similaires

  1. Quelques question sur Win 32 Appli
    Par lvdnono dans le forum Windows
    Réponses: 5
    Dernier message: 15/06/2004, 12h37
  2. [Débutant]Quelques questions de principe sur l'API win32
    Par silver_dragoon dans le forum Windows
    Réponses: 4
    Dernier message: 19/03/2004, 18h38
  3. [install]Install sous windows... quelques questions
    Par omega dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 26/02/2004, 09h50
  4. [MFC] Quelques questions de débutant...
    Par Sephi dans le forum MFC
    Réponses: 4
    Dernier message: 20/02/2004, 17h25
  5. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23

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