Forum de la communauté SFML

Général => Suggestions de nouvelles fonctionnalités => Discussion démarrée par: lamogui le Janvier 27, 2015, 09:25:42 pm

Titre: Ajouter une classe abstraite de texture pour sf::Shader
Posté par: lamogui le Janvier 27, 2015, 09:25:42 pm
Bonsoir

Cette proposition par du constat suivant:
sf::Shader limite pour l'instant le passage de paramètres (pour les samplers) aux textures 2D RGBA 8bits, via la classe sf::Texture.

L'idée que j'ai eu est d’insérer une classe abstraite entre sf::Texture et sf::Shader.

Le but du jeu est que sf::Shader ait à disposition une classe sur laquelle il sait faire l'opération qu'il l’intéresse: bind().   

Ensuite l'utilisateur expérimenté peut hériter de cette classe et ainsi passer ces Textures (textures 1D, 2D, 3D, RGBA, RGB, LUMINANCE, 8bit, 32bit, ou même float) en arguments via sf::Shader.

Il ne s'agit pas là de fournir d'autres classes que sf::Texture mais de rendre compatible sf::Shader avec des  tous les paramètres passables aux shaders.

J'ai prototypé et testé cette classe elle est disponible ici: https://github.com/lamogui/SFML
Liens pour voir les modifs: https://github.com/SFML/SFML/pull/788

Il y a aucuns changement majeur de sf::Texture qui continue de fonctionner de la même manière qu'auparavant, elle se contente juste d'hériter de la classe abstraite et d’implémenter la méthode bind.

Pour la petite histoire j'ai été amené à créer cette classe car je souhaitais faire du rendu de spectre audio (texture1D luminance) via un fragment shader.

Une autre idée pourrait être de simplement rendre protected les attributs m_textures et m_shaderProgram, ainsi on pourrait hériter de la classe et ajouter nous même l’accesseur manquant. Mais cela me paraît assez sale.


Titre: Re : Ajouter une classe abstraite de texture pour sf::Shader
Posté par: Laurent le Janvier 27, 2015, 10:35:57 pm
Tu aurais dû poster sur le forum anglais, j'ai peur qu'ici tu n'aies pas beaucoup de retour :-\