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

Vulkan Discussion :

Questionnement mémoire Vulkan


Sujet :

Vulkan

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Licence Info Maths
    Inscrit en
    Décembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Licence Info Maths

    Informations forums :
    Inscription : Décembre 2019
    Messages : 12
    Par défaut Questionnement mémoire Vulkan
    Bonjour,
    j'ai une question concernant l'allocation de mémoire avec Vulkan.

    Je débute plus ou moins et je comprend pas trop la partie concernant les buffers, en particulier vertex et index buffer (ainsi que le buffer intermédiaire):
    https://vulkan-tutorial.com/fr/Verte...es_des_sommets

    Je me demandais aussi comment se passait l'animation d'un mesh. Est-ce la carte graphique ou le CPU qui s'en charge ?
    C'est assez flou pour moi.

    Par avance, merci

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Les vertex et index buffer comme son nom l'indique permet de stocker les vertex et index, en gros ça aide à la parallélisation des calcul 3D/Draw

    Citation Envoyé par MM.Bag Voir le message
    Je me demandais aussi comment se passait l'animation d'un mesh. Est-ce la carte graphique ou le CPU qui s'en charge ?
    C'est le GPU qui se charge de cela
    Le faire du coté CPU serait bien trop contraignant de nos jours (et surtout l’intérêt de Vulkan pert grandement son intérêt vu que c'est justement fait pour optimiser tout les calculs /rendu 3D).

  3. #3
    Membre averti
    Homme Profil pro
    Licence Info Maths
    Inscrit en
    Décembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Licence Info Maths

    Informations forums :
    Inscription : Décembre 2019
    Messages : 12
    Par défaut
    Merci pour ta réponse ^^.

    Désolé pour mes questions qui étaient surement trop vagues.
    Je vais essayer de reformuler avec un exemple.

    Par rapport aux buffers si j'ai bien compris (par rapport au tuto) :
    _On construit un buffer intermédiaire sur le CPU
    _On construit un vertex buffer sur le GPU

    Quand le joueur change d'angle de vue ou se déplace, la matrice de la caméra va être modifiée. Du coup à chaque frame on doit renvoyer l'ensemble des vertices au buffer intermédiaire qui les transmettra au buffer final ?

    Et pour l'animation 3D comment indiquer à la carte graphique qu'elle modification elle doit effectuer ?
    Edit : Même chose pour une IA qui se déplace ? Si c'est géré par la CG on le CPU doit lui fournir les déplacements de l'IA ?

    Encore merci

  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Effectivement tes questions était bien vague

    Je précise que je ne suis pas expert en Vulkan loin de là


    Citation Envoyé par MM.Bag Voir le message
    Par rapport aux buffers si j'ai bien compris (par rapport au tuto) :
    _On construit un buffer intermédiaire sur le CPU
    _On construit un vertex buffer sur le GPU

    Quand le joueur change d'angle de vue ou se déplace, la matrice de la caméra va être modifiée. Du coup à chaque frame on doit renvoyer l'ensemble des vertices au buffer intermédiaire qui les transmettra au buffer final ?
    Non , le buffer intermédiaire sert à envoyer à Vulkan tes vertex (et en général ça se fait principalement aux chargements).
    Si tu modifie une matrice (par exemple celle de la camera),il faudra juste envoyer une matrice dans ton vertex shader ,lui l’appliquera sur les vertex !


    Citation Envoyé par MM.Bag Voir le message
    Et pour l'animation 3D comment indiquer à la carte graphique qu'elle modification elle doit effectuer ?
    Edit : Même chose pour une IA qui se déplace ? Si c'est géré par la CG on le CPU doit lui fournir les déplacements de l'IA ?
    Si on parle bien d'animation 3D dans le sens où le personnage est animé (et qu'on parle pas de déplacement).
    C'est le vertex shader qui fera la transformation (faudra le codé hein ) , la matrice Model lui devra être renvoyé (pour les rotation/scale/translation de ton model 3D).


    Citation Envoyé par MM.Bag Voir le message
    Edit : Même chose pour une IA qui se déplace ? Si c'est géré par la CG on le CPU doit lui fournir les déplacements de l'IA ?
    L'IA c'est le CPU qui s'en occupe.

  5. #5
    Membre averti
    Homme Profil pro
    Licence Info Maths
    Inscrit en
    Décembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Licence Info Maths

    Informations forums :
    Inscription : Décembre 2019
    Messages : 12
    Par défaut
    Je suis désolé mais je ne sais pas pourquoi je n'arrive vraiment pas à me visualiser cette étape et à la comprendre.

    Admettons que ce soit pour un jeu (car c'est la raison qui me fait me poser ces questions) :
    Au début on charge les vertices de nos modèles et les indices dans un VB et un IB (Un par modèle ?).
    Comment indique-t-on à la CG d'afficher X fois le modèle à des emplacements x1, x2, etc... sous tel et tel sens ?
    Pour l'animation on doit envoyer à la CG les modifications à effectuer par rapport à l'instant où l'on se trouve comparé au début de l'animation ?

    Du coup tout ce qui concerne les modèles, textures et autres se trouve dans les VBs et les IBs sur la CG et le CPU envoye à chaque fin de frame les modifications à faire pour la suivantes (où dans un ordre différent) ?

    PS : J'essaye vraiment de m'accrocher mais je vois que je n'ai pas assez de connaissances théoriques concernant la 3D temps réel en jeu vidéo, si tu as un lien vers lequel m'aiguiller (Même chose pour l'animation) ? J'ai sincèrement chercher mais je n'ai pas trouver de cours répondant à mes questions.

    Encore merci pour ton temps c'est très sympa !

  6. #6
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Je vais tenter de d'expliquer

    Citation Envoyé par MM.Bag Voir le message
    Au début on charge les vertices de nos modèles et les indices dans un VB et un IB (Un par modèle ?).
    Oui on charge tout , un par modèle , normalement oui , enfin c'est comme ça sur OpenGL (d'où pourquoi j'ai dit que j'étais pas expert en Vulkan ).
    Mais je crois que Vulkan permet d'avoir un buffer de vertex plus général (qui contient l'ensemble des vertex à afficher , si je me trompe pas)


    Citation Envoyé par MM.Bag Voir le message
    Comment indique-t-on à la CG d'afficher X fois le modèle à des emplacements x1, x2, etc... sous tel et tel sens ?
    Normalement tu n'indique que le modèle à afficher.
    Le vertex shader lui fera les transformations.
    Par exemple tu afficher les deux pareil (même code) mais tu envoie une matrice différente pour chaque draw.

    Citation Envoyé par MM.Bag Voir le message
    Pour l'animation on doit envoyer à la CG les modifications à effectuer par rapport à l'instant où l'on se trouve comparé au début de l'animation ?
    Normalement l'animation par squelette tu n'envoie que les matrices du squelette ,le vertex shader fera le reste (mais ça se code soit même comme je l'ai dit).

    Citation Envoyé par MM.Bag Voir le message
    Du coup tout ce qui concerne les modèles, textures et autres se trouve dans les VBs et les IBs sur la CG et le CPU envoye à chaque fin de frame les modifications à faire pour la suivantes (où dans un ordre différent) ?
    Oulà pas du tout , tu n’envoie pas à chaque frame ,sinon tu reviens 20 ans en arrière
    Normalement tu as tout le bordel sur le GPU et les modification se font comme je l'ai dit via le vertex shader (et le pixel shader pour les modif de texture).
    Après tu dois bien envoyer quelque truc , comme la matrice de ton modèle , les info pour l'animation par squelette etc etc , mais ça reste des info légère à envoyer


    Citation Envoyé par MM.Bag Voir le message
    PS : J'essaye vraiment de m'accrocher mais je vois que je n'ai pas assez de connaissances théoriques concernant la 3D temps réel en jeu vidéo, si tu as un lien vers lequel m'aiguiller (Même chose pour l'animation) ? J'ai sincèrement chercher mais je n'ai pas trouver de cours répondant à mes questions.
    Je comprend , faire du Vulkan et un jeu 3D sans réel base ,c'est effectivement pas simple
    J'ai malheureusement aucun cours théorique concernant la 3D , j'ai appris dans le tas ,en codant et en lisant du code source (je m'était même à lire le code source de Mesa pour savoir comment OpenGL fonctionne en interne )

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

Discussions similaires

  1. fichier mappé en mémoire
    Par WinBernardo dans le forum Delphi
    Réponses: 7
    Dernier message: 01/12/2006, 09h38
  2. Accéder à un espace mémoire sous XP
    Par keny dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 02/08/2002, 12h37
  3. Déterminer l'adresse d'une application en mémoire
    Par Gib dans le forum x86 32-bits / 64-bits
    Réponses: 9
    Dernier message: 11/06/2002, 14h27
  4. Vitesse de la mémoire vidéo
    Par Anonymous dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 06/06/2002, 20h20
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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