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 - lamogui

Pages: [1]
1
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.



Pages: [1]
anything