IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

masking avec alpha


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Par défaut gradient mask openGL
    Hello,

    j utlise le stencil test pour faire du masking sur une scene 2D

    mon code ressemble a celui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    glEnable(GL_STENCIL_TEST);
    glStencilFunc(GL_ALWAYS,1,1);
    glStencilOp(GL_KEEP,GL_KEEP,GL_REPLACE);
    mask->Draw();
    glStencilFunc(GL_EQUAL,1,1);
    glStencilOp(GL_KEEP,GL_KEEP,GL_KEEP);
    sprite->Draw();
    glDisable(GL_STENCIL_TEST);
    ca marche tres bien avec une texture avec des couleurs pleines et des zones transparentes mais avec une texture PNG et des zones avec un alpha modulés, les zones qui sont semi transparentes apparaissent pleines ;(

    j ai fait plusieurs test avec differents test alpha et de blending mais j ai rien trouvé qui corrige le probleme.

    Si qq un a une idée ?

    Merci d avance

  2. #2
    Membre éclairé Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Par défaut
    personne ?

    j ai effectué pleins de tests mais sans succès, suivant les valeurs , soit j obtiens aucun dessin , soit c est le masque qui est dessiné , soit le sprite la ou le masque a un alpha > 0

    je veux reussir a obtenir sur les pixels ou le masque a un alpha > 0 && < 1 , un alpha de destination qui est égal à alpha_masque * alpha_sprite

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Par défaut
    Salut,
    Le stencilBuffer comme tu dois le savoir, permet de faire une sorte de "masque", et toi, t'essaye de réaliser de l'alpha blending avec, ce qui est un temps soit peu incorrect.
    Pour aboutir à ce que tu souhaites (si j'ai bien compris) t'as deux solutions:
    1-Les shaders.
    2-L'alpha blending avec le FFP.

    Avec les shaders, il suffit d'activer l'alpha blending coté client et ça marche tout seul.
    Parcontre, avec le FFP, c'est un poil different, bon, puisque t'es en 2D, le tri des faces n'importe pas, donc, t'as un travail en moins, donc, il suffit que t'appel ça avant le dessin de ton polygon avec la texture png:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    et après le rendu:
    Voila, en esperant t'avoir aidé.

  4. #4
    Membre éclairé Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Par défaut
    Hello,

    en fait je cherche un faire un masque qui utilise un facteur alpha

    ca reste un masque dans le sens ou les pixels ayant un alpha == 0 ne seront pas pris en compte.

    mais car contre l effet est progressif, si un pixel du masque a un alpha de 0.5, alors le resultat sera 0.5*pixel_derriere + 0.5 * (pixel_sprite*alpha_sprite)

    en en discuttant tout a l heure avec les graphistes/flasheurs de mon equipe, ils n ont dis que c etais possible en actionscript3

    et en effet, apres quelque recherche sur "grandient mask as3" je tombe pilepoil sur ce que je veux faire.

    http://www.devx.com/webdev/Article/29296#codeitemarea

    ca me parrait donc gros qu opengl ne propose pas ceci sans shader (je suis sur un projet 2d qui dois tourner sur des config relativement modestes)

    en pj , l exemple de ce que je veux faire tiré de l exemple AS3

    dans la pratique , je veux utiliser des particules ayant un facteur alpha comme masque pour un effet bien précis.
    Images attachées Images attachées  

  5. #5
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Pour faire ça, pas besoin de stencil buffer. Seul le blending alpha sera utile. Donc la texture que tu cales dessus doit avoir une couche alpha, ou tu dois en générer une à la volée et l'intégrer à la texture avant la création de la texture au format opengl.

  6. #6
    Membre éclairé Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Par défaut gradient mask openGL
    l image en PJ etait la pour montrer le rendu visuel mais le masque a une taille, une position et une texture variable et je voudrais utiliser de nombreux elements comme masque , comme par exemple des particules

    je vois pas comment ca serait possible avec juste un effet d alpha..

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/04/2010, 23h43
  2. Perte du mask avec MaskedTexBox
    Par Kropernic dans le forum Windows Forms
    Réponses: 21
    Dernier message: 09/03/2010, 12h09
  3. Problème avec alpha dans un clip
    Par Buuhh dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 08/01/2009, 22h00
  4. Réponses: 0
    Dernier message: 11/05/2008, 22h09
  5. [FLASH 8] Faire disparaitre du texte avec alpha
    Par steeves5 dans le forum Flash
    Réponses: 6
    Dernier message: 08/06/2006, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo