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 :

Comment créer un effet de "glow" ?


Sujet :

OpenGL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Comment créer un effet de "glow" ?
    Bonjour à tous !

    J'aimerais réaliser un effet de glow sur un sprite 2D en OpenGL. Regardez l'image ci dessous pour voir l'effet désiré. Ca fait 2 jours que je cherche des tutos et autres exemples sur la toile sans vraiment trouver un bon tuto, un peu comme si tout le monde savait comment le faire mais ne donnais jamais d'exemple



    Ce que j'ai compris c'est que le glow peut être réalisé soit

    1) via les shaders comme l'explique cet article http://http.developer.nvidia.com/GPU...gems_ch21.html. Cette méthode semble plutôt viser l'amélioration des performances et c'est pour du real time.

    2) en travaillant l'effet de glow avec des textures comme expliqué ici http://forums.tigsource.com/index.php?topic=14768.0

    J'aimerais réalisé cet effet de glow a partir d'un sprite (une image png quoi) et gérer tout le reste en code avec opengl (génération des masques, blur et draw multiples qui sont nécessaires). Pour l'étape du blur je pense qu'il faut utiliser un noyeau de convolution style filtre gaussien mais je vois pas trop par ou commencer et franchement je ne comprends pas vraiment toutes les étapes et leur ordre pour réaliser l'effet. Si quelqu'un pourrait m'éclaircir sur les étapes de l'algorithme ou connaît un bon tuto.... je suis preneur

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 577
    Points : 1 534
    Points
    1 534
    Par défaut
    Salut,

    Tu trouvera plusieurs exemples de glow (et bien d'autre chose ) sur le site d'NVIDIA. Peut être que ça pourra t'aider...
    La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 219
    Points : 239
    Points
    239
    Par défaut
    Bonsoir,

    Pour un jeu en 2D comme tu le suggère avec cette capture, je pense pas qu'un glow avec des shaders soit nécessaire. Cette solution est assez difficile à mettre en place pour avoir un bon compromis à la foi en performance et qualité. Et cette technique n'est vraiment utile que en 3D, car la forme des objets et calcul de lumière doivent entré en compte. Tout est dépend de ton cas, tes objets comme tu les présentes sont très simple étant donné qu'il semble pas y avoir de calcul de lumière et compagnie.

    Donc je pense qu'il serait plus judicieux pour toi de suivre la technique des textures en vu de ce que tu compte en faire d'après la capture d'écran.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il y a pleins de méthodes :
    - rendre ta scene dans une texture avec un VBO. A partir de la tu fait un glGenerateMipmaps et tu en blend une partie sur elle-même. Tu peux aller plus loin. Cette technique est rendue meilleure si sur les niveaux supérieurs tu fais un flou à base de filtre gaussien. Inconvénient : tu devras exiger OpenGL 2.0... Faire un "ping-pong" avec N FBO ou N est ton nombre de niveaux de blur est pas forcément évident encore moins quand tu veux de la compat.

    - tu rends ta scene dans une texture et tu la sample plein de fois. Gros inconvénient : c'est très cher et du coup tu n'auras que des petits flous qui ne sont pas ceux préférés par les gens. Tu peux séparer le flou en une passe horizontale et une autre verticale mais en fait ça reste naze et cher.

    - tu rends ta scene normalement puis une autre fois dans une texture 2x ou 4x moins large. Puis tu compose la petite texture une fois mipmappée avec la grande. Je pense que c'est la meilleure méthode pour le coup MAIS il faut pas que tu sois limité par ton envoi de vertex. Compatible avec le vieux matos sans problème.

    - avoir des version floutés de tes sprites dans une autre texture que tu blend par dessus en additif. Ca serait par exemple la même texture mais réduite en offline. J'ai jamais testé mais ça doit être bien. Problème : ça va être dur de tuner le flou au développement. Cela dit tu contrôle très bien ce qui fait du flou et ce qui n'en fait pas. Un autre problème c'est qu'il faut y aller franco sur la largeur du blur et ton fillrate va pleurer.

    Il y en a sans doute d'autres...

    Tu peux flouter uniquement que ce qui est dans les blancs tu auras un effet intéressant. Ce que j'aime bien dans un flou c'est localement "enlever" de la couleur pour faire ressortir les détails et en rajouter sur le flou large pour avoir cet effet agréable. Une sorte d'égalisation. Sinon si tu reproduis le blend de style "screen" dans GIMP au lieu d'additionner ça donne un truc un peu réveur en applatissant les blancs.
    Dernière modification par Invité ; 21/10/2011 à 12h01.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Merci pour vos conseils ! j'ai suivi la technique des texures
    Citation Envoyé par ponce Voir le message
    - avoir des version floutés de tes sprites dans une autre texture que tu blend par dessus en additif.
    J'obtiens ca comme résultat


    C'est un screenshot pris directement de puis mon galaxy S ^^ J'avoue que je comprends pas tout par rapport à tout ce que tu proposes ponce... En résumé, pour avoir un très bon résulat visuel il faut passer par les shaders(en directX) ou openGL 2.0 ??

    J'ai trouvé un jeu sur l'android market intitulé glow hockey, et l'effet est vraiment puissant je vous mets une image.... Je me demande quelle technique ils ont utilsés mais en tout cas ca rend vraiment bien
    Sick... maintenant que je vois les deux images à côté mon glow c'est un peu le glow du pauvre quoi .... :/


  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 883
    Points : 219 328
    Points
    219 328
    Billets dans le blog
    123
    Par défaut
    Bonjour,

    J'ai l'impression que votre sprite de test n'est pas très correct. Dans le sens où il semble un peu pixelisé et que le glow n'est pas assez visible.
    J'ose croire qu'avec un meilleur sprite, on peut avoir de meilleur résultat.

    Sinon, pour l'histoire OpenGL 2.0 et OpenGL ES 2.0, disons que le deuxième est plus ou moins identique au premier mais avec moins de fonctionnalités. Les deux acceptent les shaders. Il n'y a pas que DirectX qui a des shaders, heureusement :p
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 577
    Points : 1 534
    Points
    1 534
    Par défaut
    Pour être plus précis, le "moins de fonctionnalitées" d'OpenGL ES 2.0 par rapport à OpenGL 2.0 correspond au fonctions déprécated qui ont été supprimées (glBegin, glVertex, etc...). Donc il ne faut pas pensé qu'OpenGL ES est une version bridée d'OpenGL. Juste une version "nétoyée".

    Pour glow hokey, je pense que tout est fait à base de sprites. Tu trouvera de nombreux tuto pour réalisé des sprites avec un glow effect en cherchant "glow effect gimp" sur google.
    La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Ok, merci pour toutes ces précisions je vais me pencher plus sérieusement sur la création de mes sprites. C'est vrai que ma balle parait pixelisée... ca doit être du au fait que c'est un sprite d'un jeu old school en 8bit. Pour le glow hockey franchement je croyais que l'effet était réalisé grâce à un shader :o ca me motive à faire plus de tests avec mes sprites ca ! Si on regarde bien les sprites du glow hockey on voit qu'à l'intérieur c'est du blanc.... la couleur est seulement à l'extérieur... J'essaierais de revenir sur ce thread lorsque j'aurais une solution à proposer parceque le partage c'est bien

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/04/2011, 12h42
  2. Comment créer des effets
    Par mercure321 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 11/02/2008, 17h37
  3. Comment créer un effet d'ouverture d'une porte
    Par diden138 dans le forum Flash
    Réponses: 1
    Dernier message: 29/11/2006, 21h30

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