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 :

Aide de départ pour un effet de transition en GLSL.


Sujet :

OpenGL

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut Aide de départ pour un effet de transition en GLSL.
    Bonjour à tous.

    Pour ceux d'entre vous qui ne le savent pas encore, j'essaye de faire un Mario Like pour le fun et me faire la main avec le C++ en SFML.

    Pour décrire l'état de mon projet actuel :
    J'utilise la méthode du tile mapping pour créer mon environnement : Niveaux, page de présentation du jeu lors du lancement de l'application etc.

    Une personne me dessine les carte (à l'aide de tiled : http://www.mapeditor.org/),
    Je les convertis à l'aide d'un convertisseur (créé par mes soins) en fichier txt.
    Ensuite je n'ai plus qu'à lire le fichier pour savoir ce que représente la map et l'afficher bref vous connaissez le principe.

    Mon programme ce lance donc et m'affiche ma 1ere image à l'écran : (fondu entrant, nom du jeu, valeur alfa max, pause 3 secondes, fondu sortant, nom du jeu qui ce décale vers le haut pour laisser apparaître en dessous le background qui n'est rien d'autre qu'un niveau de mon mario like qui ce met à défiler sur l'écran pendant que par dessus s'affiche mon menu en fondu entrant : Jouer Aide Quitter).

    Je voudrais lorsque je clique sur jouer, arrêter le défilement en arrière plan (ça c'est bon), et créer un effet de transition à l'aide du GLSL.
    Un effet du style spirale noire qui pars des extérieurs de l'écran et qui finira au centre par un écran tout noir, pour laisser quelques millisecondes plus tard apparaître ma seconde page du programme (nom du joueur etc...)

    Mon problème est que je ne comprends pas trop bien encore le GLSL, je ne sais pas par ou commencer, ce qu'il me faut envoyer comme variables avec l'aide d'UNIFORM ou autre.

    Je suppose qu'il me faut une variable de temps, mais je ne sais pas si je dois la placer dans un vertex shader ou un pixel shader, si je dois envoyer une image (texture) au pixel shader ou pas et si oui la quelle....

    Enfin bref je ne sais pas par où commencer à programmer mes shaders : j'ai du mal a visualiser le fonctionnement malgrès la lecture de plusieurs tutos...

    Désolé pour le pavé de lecture mais au moins j'ai donné je pense tous les éléments de mon problème .
    Merci par avance.

  2. #2
    Membre chevronné
    Avatar de emixam16
    Homme Profil pro
    Chercheur en sécurité
    Inscrit en
    Juin 2013
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Chercheur en sécurité

    Informations forums :
    Inscription : Juin 2013
    Messages : 333
    Points : 1 828
    Points
    1 828
    Par défaut
    Bonjour,

    A mon avis une solution est de dessiner des cercles (ou ellipses) concentriques, et de calculer leur couleur en temps réel en fonction de leur distance par rapport au centre.

    Sers toi d'une variable ElapsedTime pour le temps passé depuis le début de ta transition, & une variable TotalTime pour le temps total de ta transition pour calculer tes couleurs

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    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 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Pour savoir ce qui passe en variable uniforme, ou en variable varying (in/out) la méthode est :
    • les variables uniformes sont globales à l'exécution complète du shader (soit, constante pour toute l'image) ;
    • varying : les variables changent soit : à chaque pixel/fragmen (in dans le fragment shader), soit à chaque sommet (in dans le vertex shader).

    Le temps sera donc passé en uniforme
    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.

  4. #4
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    les variables uniformes sont globales à l'exécution complète du shader (soit, constante pour toute l'image) ;
    Le temps sera donc passé en uniforme
    Je ne comprends pas ça déjà --' (shame on me)...

    Le temps n'est pas une constante en programmation
    ex : en sfml on dira :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sf::time temps;
    sf::clock clock;
    temps.asmilliseconds();
    temps = clock.elapsedtime();
    grossomodo et temps est un int et non un const int !

    alors pourquoi ma variable de temps en GLSL devrait être une constante ? et surtout je dois la placer dans le vertex shader ? Pixel shader? les 2 ??

    Raaa je me sens mauvais sur le coup de pas comprendre ça m’énerve grrrrrr!

    M'enfin je continue de chercher je lâche pas l'affaire Merci pour ces quelques idées déjà j'ai un début et une base sur quoi bosser !

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    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 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    • les variables uniformes sont globales à l'exécution complète du shader (soit, constante pour toute l'image) ;
    Le shader est exécuté une fois par rendu. Cela veut dire, une fois toute les 16 milliseconde*. Les valeurs des variables uniformes peuvent être modifiées entre chaque exécution, donc entre chaque image.
    Donc, c'est une constante, mais au niveau du GPU. Une constante que l'on peut modifier .

    et surtout je dois la placer dans le vertex shader ? Pixel shader? les 2 ??
    Vous la placez là où vous en avez besoin



    * pour un affichage à 60 FPS et que si l'image n'a besoin que d'un unique rendu (ce qui n'est pas toujours vrai)
    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.

  6. #6
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Les tutoriels OGLdev sont plutôt bien faits et expliquent bien la chose (je trouve).
    En commençant par ce tutoriel, tu devrais pouvoir mieux comprendre ce qu'il se passe (et comprendre le pipeline graphique est essentiel, pour continuer)
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. Effet de transition pour slideshow
    Par Stouille89 dans le forum jQuery
    Réponses: 2
    Dernier message: 23/06/2010, 11h37
  2. aide petit programme pour débutant
    Par kartp0rqx dans le forum C
    Réponses: 16
    Dernier message: 14/10/2005, 19h31
  3. [Système][Class-Path]cherche aide sous java pour fedoracore ou linux
    Par mickey hollywood dans le forum Général Java
    Réponses: 4
    Dernier message: 29/03/2005, 01h13
  4. Aide sur WinDbg pour Windows 98
    Par robert.michel9 dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 16/08/2004, 22h08
  5. Effet de transition simple entre 2 images
    Par ChrisFAPS dans le forum Flash
    Réponses: 2
    Dernier message: 18/04/2003, 12h41

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