Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Appliquer un shader sans draw()  (Lu 2514 fois)

0 Membres et 1 Invité sur ce sujet

LD_FLO

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
    • E-mail
Appliquer un shader sans draw()
« le: Février 24, 2015, 11:45:36 am »
Bonjour,

Je voulais savoir s'il était possible d'appliquer un shader sur la totalité d'une renderTexture, uniquement, pour en modifier la luminosité par exemple.

Je veux juste modifier cette renderTexture, pas la dessiner avec la fonction draw().

Est-ce possible ?

Merci d'avance  :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Appliquer un shader sans draw()
« Réponse #1 le: Février 24, 2015, 11:52:31 am »
Si tu as une render-texture c'est qu'à un moment donné tu vas dessiner quelque chose qui utilise son contenu, non ? Tu ne peux pas appliquer ton shader à ce moment-là ?

Sinon, il faut dessiner ta render-texture vers une autre render-texture en utilisant ton shader, puis faire l'échange entre les deux (un genre de double-buffering).
Laurent Gomila - SFML developer

LD_FLO

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
    • E-mail
Re : Appliquer un shader sans draw()
« Réponse #2 le: Février 24, 2015, 12:42:12 pm »
Le "double-buffering" est une solution en effet.

Je visualise ma texture via un sprite que je dessine sur ma fenêtre principale. Mais si j'utilise mon shader à ce moment là, je ne modifie pas le contenu de ma texture, seulement la manière dont elle sera perçue, non ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Appliquer un shader sans draw()
« Réponse #3 le: Février 24, 2015, 12:56:25 pm »
Citer
Je visualise ma texture via un sprite que je dessine sur ma fenêtre principale. Mais si j'utilise mon shader à ce moment là, je ne modifie pas le contenu de ma texture, seulement la manière dont elle sera perçue, non ?
Oui, et c'est un peu le principe de base en programmation graphique pour avoir de bonnes performances ;)
Laurent Gomila - SFML developer

LD_FLO

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
    • E-mail
Re : Appliquer un shader sans draw()
« Réponse #4 le: Février 24, 2015, 01:14:29 pm »
Justement, je développe un espèce de "Gimp" orienté animation (plus un "Paint" pour le moment).
Je dispose donc d'une image: renderTexture + sprite (pour l'affichage), que je modifie en dessinant dessus etc...

Je souhaite utiliser les shaders pour appliquer des filtres ou tout autre transformation à mon image. Il faut donc que je modifie ma texture, et non pas juste faire comme si elle avait été modifiée.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Appliquer un shader sans draw()
« Réponse #5 le: Février 24, 2015, 01:21:21 pm »
SFML se prête assez mal à ce genre de logiciel. Là c'est plus d'une bonne bibliothèque de manipulation d'image dont tu aurais besoin, avec tous les algorithmes qui vont bien. SFML est faite pour envoyer en permanence des données à visualiser, pas pour faire faire des modifications à la carte graphique et les récupérer ensuite.

Ceci-dit, ça reste faisable et tu connais la solution, donc à toi de voir.
Laurent Gomila - SFML developer

LD_FLO

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
    • E-mail
Re : Appliquer un shader sans draw()
« Réponse #6 le: Février 24, 2015, 01:35:53 pm »
Pour le moment ça se déroule plutôt bien. Je ne souhaite pas concurrencer Photoshop de toute façon :P

Ça serait surtout pour dessiner des feuilles de sprites, et en voir l'animation simultanément.

Merci pour tes réponses rapides :D

 

anything