Utilisation des shaders

Recommendation de bibliothèques, techniques...

a marqué ce sujet comme résolu.

Bonjour à tous :) !

Bon, ça fait un moment que je zieute ZdS, et avant de commencer ce premier topic j'aimerais remercier le staff du site et la communauté pour le savoir qu'ils prodiguent. Ne changez rien, c'est super !

En bref, je développe avec des potes un jeu en C++ avec la SFML dans lequel on aimerait intégrer des shaders. J'avais essayé de me pencher un peu sur GLSL mais je n'ai clairement pas le niveau pour m'en sortir.

Je m'étais donc un peu renseigné et avait découvert la bibliothèque LTBL (Let There Be Light) qui permet d'utiliser un système d'éclairage basé sur des shaders avec SFML. J'ai fait quelques essais qui sont vite devenus assez chaotiques du fait d'une grosse perte de performance lors de l'affichage des lumières.

Sur le fofo de la SFML, quelqu'un s'est proposé de reprendre le code de la LTBL pour corriger justement ces soucis et ajouter 2/3 fonctionnalités mais pas de signe de vie depuis plusieurs mois, et les deadlines fixées pour notre projet approchent…

Je me tournais donc vers vous pour savoir si vous aviez déjà pu essayer cette biblio ou d'autres, si vous me recommandiez des "bonnes pratiques" pour optimiser les performances, si vous me conseilliez plutôt d'autres manières etc etc. Je suis ouvert à toute proposition !!!

En vous remerciant d'avance :)

Lu'!

  1. mesurer, avec un profiler.
  2. regarder dans les résultats ce qui est cher.
  3. déterminer si ça peut être améliorer, si ce n'est pas le cas, retourner à 2 et chercher autre chose,
  4. améliorer le morceau de code, retourner à 1.

Pour améliorer le code en question, ça passe d'abord par regarder si algorithmiquement, ça tient la route. Ensuite, de regarder si la structure de donnée est adaptée pour éviter de rendre des opérations qui sont sensées être gratuite coûteuses. Après, de regarder si on ne fait pas de conneries avec les allocations mémoire : copies inutiles, redimensionnements fréquents, destruction/construction fréquentes, etc. Finalement par regarder si les accès aux données ne sont pas trop aléatoires.

Si c'est un prob de shader, regarde aussi les données qui lui sont envoyé. Le transfert mémoire RAM -> GPU est ce qui est généralement le plus couteux. Il vaut mieux limiter le transfert au minimum quand tu fait un truc sur le GPU.

Merci à vous deux pour vos réponses ! Je n'avais jamais entendu parler de profiler auparavant, je jetterai un coup d'oeil dessus ça pourrait effectivement considérablement m'aider !!

@Kje : est-ce que tu sais comment je pourrais monitorer ces transferts par hasard ? J'avoue que je n'ai jamais essayé d'ouvrir les shaders utilisé par la LTBL pour voir un peu comment ils fonctionnent, peut-être qu'il faudrait que je commence par là pour ensuite voir comment ils sont utilisés par la bibliothèque c'est ça ?

Merci à vous deux pour les pistes en tout cas :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte