Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Niloc

Pages: [1]
1
Graphique / Re : Shaders et rendus parallèlisés
« le: Décembre 16, 2014, 11:46:07 am »
Très bien !
Je te remercie pour la rapidité de tes réponses et pour m'avoir épargné de bien nombreuses heures de boulot inutiles...
Je vais devoir chercher des solutions alternatives donc. Merci !

2
Graphique / Re : Shaders et rendus parallèlisés
« le: Décembre 16, 2014, 11:23:54 am »
Techniquement ma GT650m en a 384... mais j'ai du manquer quelque chose de fondamental dans le fonctionnement d'un GPU ou de l'openGL alors.

En fait j'ai pu observer que les temps d’exécution de mes algos semblaient être du même ordre entre la GTX760 d'un ami (1152 cœurs) et la GT 820 de ma petite sœur (nb de cœur apparemment pas avouable)... J'en ai déduit que la différence de nombre de cœurs internes n'était pas exploitée et que je pourrais donc paralléliser le calcul assez simplement en parallélisant des appels OpenGL.
Je ne trouve rien actuellement sur la façon dont OpenGL utilise le parallélisme, seulement la façon de paralléliser les calculs scientifiques sur GPU.


Du coup je ne comprends pas le peu de différence dans les performances de mon programme sur les différents ordis sur lesquels j'ai pu faire des essais... Est-ce que le nombre de cœur n'est juste pas exploité par OpenGL ? ou seulement pour paralléliser le traitement des vertices et des pixels pour un seul shader à la fois ? (Je ne modifie que le Vertex Shader mais ça aurait du se voir quand même). Ou est-ce que l'exploitation de ces cœur n'a pas du tout cet usage là ?
Peut être, si tu peux m'éclairer...



Je dois dire au fait que la SFML est vraiment un plaisir à utiliser, ton travail est juste remarquable.

3
Graphique / Shaders et rendus parallèlisés
« le: Décembre 15, 2014, 11:01:17 pm »
Bonsoir,
Je travaille actuellement sur un moteur de lumière en SFML/GLSL pour un moteur graphique 3D en vue du dessus.
Il s'agit en réalité de 2D avec un rendu de lumière donnant le relief.
Je génère une texture pour la couleur du sol (luminosité normale) ainsi qu'une texture regroupant différentes informations (altitude du pixel, grain, coefficient de réflexion) et une normale map. Une fois que c'est fait, je dessine une texture correspondant à la quantité de lumière renvoyée à la caméra par chaque source lumineuse sur une renderTexture différente avant d'assembler l'ensemble et de l'appliquer à la texture contenant les couleurs des pixels.

http://image.noelshack.com/fichiers/2014/51/1418680212-10468673-1542931919277852-2621293921420467349-o.jpg (un prototype)

Étant donné la lourdeur du traitement il n'est pas possible de traiter à la suite plus de deux ou trois sources lumineuses (sur ma carte graphique en tout cas) aussi je souhaiterais paralléliser les calculs des différentes sources lumineuses dans des threads séparés.


Mes questions exactes sont les suivantes :

J'ai besoin d'utiliser un même shader dans plusieurs threads en même temps :
Est-ce possible ou fait il que chaque thread ait son propre sf::shader distinct ?

Étant donné que j'ai besoin de passer au shader certains paramètres propres à chaque source lumineuse comme la position de celle-ci (son aire d'effet est passée comme un vertexArray), est_il possible d'envoyer des paramètres qui ne soient pas commun au shader complet mais valables seulement pour une seule de ses applications (un seul draw() ) ?

S'il me faut prévoir autant de sf::shaders qu'il y a de sources lumineuses, est-il possible de dupliquer un sf::shader ou faut-il absolument que je compile son code source autant de fois que j'en ai besoin (donc sûrement à l'avance).

Je vous remercie par avance pour votre aide (et pour votre patience pour lire ce post).

Pages: [1]
anything