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

Développement 2D, 3D et Jeux Discussion :

[2D] L'Anti-Aliasing sur un backbuffer


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Points : 42
    Points
    42
    Par défaut [2D] L'Anti-Aliasing sur un backbuffer
    Bonjour,

    Je développe en C++ avec une librairie calquée sur DirectDraw (avec donc le même principe de backbuffer flippé).
    Je souhaiterais savoir si il est possible d'implémenter une sorte d'anti-aliasing directement sur un backbuffer sans tenir compte des formes qui l'ont composé ?
    En fait, je crois qu'il s'agit de l'effet de flou de Photoshop (à bas niveau).

    Quelqu'un a des connaissances en la matière? des algorithmes?

    Je cherche un peu sur Google mais, c'est assez austère et très tourné vers les cartes graphiques et l'OpenGL. Je cherche une solution toute simple qui filtre mon backbuffer pour rendre les choses un peu plus lisse.

    Autre piste: ce ne serait pas le même principe que l'on retrouve sur les émulateurs (filtres 2xSaI, bilinear, etc...) ?

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    L'anti-aliasing peut se faire habituellement via deux méthodes, tente des recherches avec "multisampling" et "supersampling".

    J'imagine que tu peux également appliquer un filtre, genre bilinéaire, gaussien, ou que sais-je.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    Et bien, réflexion faite, je veus appliquer un filtre à mon backbuffer, une transformation de laquelle résultera un backbuffer plus "flou" moins crénelé...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    Personne n'a d'idées sur le sujet ? :

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Si tu pars sur une solution de type filtre, quel est le problème ? Tu veux un algo de filtre ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    Oui exactement, l'utilisation du terme antialiasing etait un peu faussee dans la mesure ou je ne veus pas implementer de methode d'anticrenelage sur les toutes les formes de mon buffer d'image mais, je veus simplement filtrer le tout en ajoutant un leger effet de flou (exactement le meme aue photoshop ^^)

    Donc, est-ce aue quelau'un sait comment je peus m'y prendre pour y parvenir ?

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Une recherche sur Google devrait te donner de bonnes pistes voire les algos des différents filtres. Si ça ne donne rien tu peux toujours aller poster sur le forum Algorithmes, étant donné que ton problème se résume maintenant à trouver le bon algorithme.

  8. #8
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Si sa peut t'aider, je m'aprete a implémenter a un algorithme de floux qui fonctione ainsi :
    Pour chaque pixel, on regarde els 8 pixels contigu. On effectu ceci pour chaque composante coloré : (PixelCentrale * Q + Pixel1 + ... Pixel8)/(8 + Q)
    Q est le coéficient. Plus il est elever, plus le floux est faible.
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    Bah euh, nop, pas la peine de bouger le sujet dans la rubrique algo, ça reste malgré tout complètement orienté jeux et pas "masturbation intellectuelle" même si les 2 sont liées
    (dépasserais-je les limites ? Si oui, je fais mes excuses par avance...).

    J'ai également trouvé cet algorithme que j'ai implémenté dans mon jeu 2D, les perfs chutent de façon vertigineuse.
    Effectivement, le résultat est parfaitement à la hauteur de mes attentes graphiquement mais le-dit algo 45 fois par seconde, c'est pas top, même en ne prenant que les 4 pixels de la diagonale (pour moi c'est quasiment le même résultat mais c plus soutenable niveau perfs), et je n'était qu'en 240*160 et Non ce n'est pas de la gba .

    Jme disais aussi, c'eut été trop beau, et puis ils l'auraient déjà implémenté sur nos chères consoles.

    Personne n'aurais des infos sur les techniques d'embellissement d'images à moindre coût proco ?
    Je parle de travail sur l'image finale et non sur ses composantes, même si je ne me fais pas d'illusion, c'est surement sur les composantes de l'image que tout se fait (en hardware).

  10. #10
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Tu pourais esseiller de faire un floux en ne prenant que le pixel qui suit.
    Pixel(x,y) = Pixel(x,y)*2+Pixel(x+1,y)/3
    Déja, sa devrais aller 4fois + vite.
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    C'est mieux aux niveau perfs un peu moins au niveau flou (ça arrache les yeux) mais ça reste malgré tout une technique trop lente, arf...

  12. #12
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Et si tu lisse les pixels de manière ponctuelle? 1 pixel tous les 5?
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

Discussions similaires

  1. [Lazarus] Anti-aliasing sur fond noir avec la bibliothèque BGRABitmap
    Par Roland Chastain dans le forum Lazarus
    Réponses: 10
    Dernier message: 05/07/2015, 10h02
  2. Anti-aliasing sur label
    Par gwharl dans le forum C#
    Réponses: 1
    Dernier message: 01/03/2012, 10h50
  3. Anti Aliasing sur un TImage
    Par sys1 dans le forum Débuter
    Réponses: 2
    Dernier message: 27/10/2010, 16h17
  4. Réponses: 2
    Dernier message: 18/03/2009, 20h17
  5. rendu sur texture et anti aliasing
    Par J&B dans le forum DirectX
    Réponses: 3
    Dernier message: 05/05/2006, 06h54

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