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).