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

Auteur Sujet: Fragment shader et RectangleShape sans texture, un problème de couleur  (Lu 1558 fois)

0 Membres et 1 Invité sur ce sujet

kermitt76

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
    • c-pages
    • E-mail
Bonjour
je travail actuellement sur un shader qui me servirait à masquer des éléments hors cadre (l'idée étant de faire un système de fenêtres, donc de pouvoir masquer les éléments dépassant de la fenêtre.

J'arrive à dire au shader de rendre tel pixel avec un alpha nul suivant tel condition machin bidule ... faire un masque quoi.
Mais je n'arrive pas à afficher (avec un shader) un shape sans texture, avec sa couleur/opacité (RVBA) d'origine (pour pouvoir l'afficher correctement quand il est visible dans la fenêtre).

une version simplifié du code:
le cpp :
(click to show/hide)
le shader :
(click to show/hide)

le resultat :


donc quand on a une texture sur le shape, ça marche nickel (il ne fait rien :), l'image avec ou sans le shader sont identiques ), mais sans texture ... a marche po ! .. le rectangleShape à le bon alpha, mais  devient noir, snif.
je crois comprendre le souci mais sans savoir le résoudre :
la couleur du pixel(de la texture) multipliée par la couleur de shape (du fillColor) donne noir quand il n'y a pas de texture, j'imagine.

j'ai essayé pas mal de trucs un peu dans tout les sens, fait tout plein de recherches, mais j'ai pas trouvé grand chose d'éclairant.

merci d'avance


Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Fragment shader et RectangleShape sans texture, un problème de couleur
« Réponse #1 le: Avril 18, 2016, 08:23:30 pm »
Je dirais que lire une texture (dans le shader) qui n'existe pas (dans l'objet dessiné) a de grandes chances de donner un truc hasardeux genre du gris foireux.
Laurent Gomila - SFML developer

kermitt76

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
    • c-pages
    • E-mail
Re : Fragment shader et RectangleShape sans texture, un problème de couleur
« Réponse #2 le: Avril 18, 2016, 08:59:50 pm »
C'est bien mon souci :), et je vois pas bien comment faire, parce j'ai des boutons et des fonds qui sont des shapes simples sans texture et que j'aimerais bien faire passer dans la moulinette du shader (pour cacher les bouts qui dépassent de la fenêtre) et comme tu dis pour l'instant ils sortent en gris foireux, enfin noir avec leur opacité correct.

j'ai essayé, dans le shader, de savoir si la texture existe justement, pour rendre de tel manière si texture ou tel autre si pas de texture, mais j'ai pas encore trouver comment savoir si la texture existe.

je suis pas bien à l'aise avec l'utilisation des shaders, j'suis pas sûr de prendre le problème par le bon bout...

j'avais une première version avec un système de masque en utilisant un render to texture. Ça turbine comme il faut tant que le masque est simple, mais quand un truc masqué est dans un truc masqué avec des trucs masqué dedans etc .. ça turbinait plus trop.

Mais peut être que je vais revenir à la version 'rendertoTexture' et chercher à l'optimiser. :-\
En même temps les shaders me semble bien plus rapide.

bref, je continu à chercher ...    :P

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Fragment shader et RectangleShape sans texture, un problème de couleur
« Réponse #3 le: Avril 18, 2016, 10:05:00 pm »
Si tu ne veux pas utiliser un shader différent pour chaque cas, il faut au moins passer un booléen au shader pour lui dire de faire ou pas la lecture de texture.
Laurent Gomila - SFML developer

kermitt76

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
    • c-pages
    • E-mail
Re : Fragment shader et RectangleShape sans texture, un problème de couleur
« Réponse #4 le: Avril 18, 2016, 11:08:12 pm »
Bon sang mais c'est bien sûr ! ce que je voulais faire dans le shader je vais le faire en dehors ... suis-je bête !

merci beaucoup Laurent