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 :

[blending] textures volcan


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Par défaut [blending] textures volcan
    Bonjour,
    j'avoue qu'après avoir lu pas mal de documentation, j'ai encore beaucoup de mal à comprendre le principe du blending et ses possibilités.

    J'ai créé un vulgaire moteur de particule et j'aimerai que celui-ci se comporte comme un volcan en eruption.

    Il émet des sprites de couleur rouge et je voudrais que plus les particules sont proches, plus l'intersection des sprites devienne de couleur jaune.

    Auriez-vous une idée de comment je dois procéder?

    Pour le moment mes sprites sont des rond rouges opaque à 80%
    Je suis prêt à modifier le sprite.

    quels paramètres dois-je utiliser pour glBlendFunc?

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut
    salut :

    le jaune c'est du rouge et du vert. En gros tu ne peux pas faire de jaune uniquement a partir de rouge pur (0xFF0000) car il te faut du vert. Utilise donc du orange foncé (0xFF2200 par exemple) et passe en blending additif (GL_SRC_ALPHA,GL_ONE), les composante de chaque couleur seront additioné (apres multiplication avec l'alpha) lors du blending :
    _ une particule isolé sera orange foncé
    _ plusieurs particules confondues tendront vers le jaune pur.

    Je t'invite a regarder la demo fire de mon moteur de particule qui utilise ce mode de blending (voir ma signature)
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  3. #3
    Membre confirmé Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Par défaut
    Merci beaucoup, je testerai celà lundi de retour à mon entreprise.
    Effectivement, ta solution semble logique même si je ne capte toujours rien à l'utilisation de cette fonction glBlendFunc.
    Si ça marche nickel, je taggerai ce post Résolu.

    Bonne soirée

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 249
    Par défaut
    A propos de cette fonction glBlendFunc (c'est assez important, surtout si tu veux faire un moteur de particules!) qu'est ce que tu ne comprends pas? Y'a pas mal d'explications sur le net (un pti google et hop : http://helios.univ-reims.fr/Labos/LE...enGL/td07.html ). En essayant d'être clair, cette fonction permet de définir la façon de mélanger un pixel à afficher (source) avec le pixel déjà affiché qui se trouve "derrière" (destination); Donc le premier paramètre de glBlendFunc te permet de définir comment tu vas pondérer la valeur du pixel source, le second paramètre définit de la même façon le traitement sur le pixel de destination, et le résultat sera la somme des deux.

    Par exemple, pour une transparence classique avec chanel alpha, on utilise (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) : ça signifie qu'on pondère les valeurs RGB de la source avec la valeur ALPHA de la source (GL_SRC_ALPHA), on pondère les valeurs RGB de la destination avec 1-ALPHA de la source (GL_ONE_MINUS_SRC_ALPHA), et le pixel final est donc la somme des deux.

    Pour de l'additif (GL_SRC_ALPHA,GL_ONE), le but étant d'avoir un effet plus "lumineux", l'utilisation de GL_ONE pour la destination indique que les objets "de derrière" ne sont pas atténués par l'affichage d'objets en avant plan. A noter que dans ce cas, les valeurs RGB peuvent dépasser 1, elles seront automatiquement tronquées à 1 par opengl.

  5. #5
    Membre confirmé Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Par défaut
    bonsoir,
    je viens de tester avec deux ronds rouge-orangés (255, 34, 00), opacité à 100% et à 30%
    je n'ai pas eu l'effet voulu.

    Si toutefois la réponse était correcte, je pense alors que le problème provient de l'iphone SDK que j'utilise sur un PPC (où l'endian est différent de ce que propose le SDK).

    Je vais tester sur un vrai iPhone, je vous donnerai les résultats

  6. #6
    Membre confirmé Avatar de keil
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    261
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 261
    Par défaut
    Parfait sur l'iPhone. Cependant, j'ai augmenté un peu la valeur du vert.
    Merci pour toutes vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. WebGL créer texture pour blending quand impact
    Par lightbulb dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 12/12/2012, 14h21
  2. OpenSceneGraph: problème de blending de texture
    Par cheveche4 dans le forum OpenSceneGraph
    Réponses: 4
    Dernier message: 08/04/2008, 19h14
  3. DX9: Alpha blending dans une texture intermédiaire
    Par Bart1971 dans le forum DirectX
    Réponses: 2
    Dernier message: 30/10/2006, 14h21
  4. [c#][Directx] blending de texture
    Par backfire dans le forum DirectX
    Réponses: 4
    Dernier message: 21/02/2006, 12h42
  5. Alpha blending
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 23/05/2002, 19h37

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