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 :

Parallel-Split Shadow Maps


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut Parallel-Split Shadow Maps
    Bonjour,

    Je commence à lire l'article suivant http://http.developer.nvidia.com/GPU...ems3_ch10.html sur les parallel-split shadow maps.

    Dans le chapitre 10.2.2, ils disent que pour remplir la shadow map, il faut utiliser les matrices "lightViewMatrix * lightProjMatrix * cropMatrix" pour afficher la scène.
    D'après le code source (Example 10-1), je l'impression que la "cropMatrix" est une matrice de projection orthogonal qui permet d'afficher la partie splitter du frustum.

    Ma question: c'est quoi cette "lightProjMatrix" ? Je me serai contenté de faire ceci pour afficher la scène pour remplir ma shadow map: "lightViewMatrix * cropMatrix", non ? Qu'est ce que je n'ai pas compris ?

    Merci d'avance.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 131
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    La lightProjMatrix est la matrice de projection, mais pour la lumière. Comme vous avez du le comprendre, lorsque l'on fait une shadow map, on fait un rendu "à la place" de la lumière. Ainsi, lors de cette passe, on utilise les matrices de vue et de projection pour la lumière.
    La multiplication de lightViewMatrix * lightProjectionMatrix permet d'avoir le point en position homogène (entre -1 et 1 pour les trois axes).
    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.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Bonjour,

    Merci pour votre réponse.
    Je comprends bien le principe du shadow map classique.

    Ce que je ne comprends pas ici c'est la différence entre "lightProjMatrix" et "cropMatrix".
    Dans le cas d'un soleil (lumière directionnel), "lightProjMatrix" sera une matrice de projection orthogonal où toutes la scène sera comprise entre -1 et 1.
    La "cropMatrix" est aussi un matrice de projection orthogonal qui permet d'avoir la partie splitter du frustum entre -1 et 1.

    Donc pourquoi ne font-ils pas simplement "lightViewMatrix * cropMatrix" ?

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 131
    Billets dans le blog
    150
    Par défaut
    J'imagine que oui, il devrait être possible de faire comme vous dites, sans la matrix de projection (ou du moins, si elle est déjà dans la cropMatrix).
    Toutefois, cela permet de bien différencier les deux, dans le sens que la projectionMatrix de base provient de la configuration de votre fenêtre alors que la cropMatrix provient de vos "zones de zoom". On voit très bien que dans la suite du code, la matrice finale (view * projection * crop) est directement passé au shader.
    Pour moi, il me semble plus simple de calculer la cropMatrix à part.
    Ma question: c'est quoi cette "lightProjMatrix" ? Je me serai contenté de faire ceci pour afficher la scène pour remplir ma shadow map: "lightViewMatrix * cropMatrix", non ? Qu'est ce que je n'ai pas compris ?
    Cela est vrai que si votre cropMatrix prend en compte votre "fenêtre" (soit la projection, le ratio, le near / far et l'angle d'ouverture).
    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.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Merci.

    Ce que je ne comprends pas dans cette article, c'est qu'il y a une "light projection matrix" et aussi une crop matrix qui semble contenir une transformation de projection aussi.
    Peux-être une erreur dans l'article ? Bref, je vais pas tarder à tester pour voir si ça fonctionne.

    Dans le code source "Example 10-1", il crée une matrice identique à ce que fait la fonction 'glOrtho' d'OpenGL avec quelques différences:
    * C'est un row major matrix (je suppose que c'est pcq DirectX utlise ce genre de matrice)
    * L'offset et le scale sur l'axe des Z va de 0 à 1 et pas de -1 à 1 comme en OpenGL mais je suppose que c'est aussi une spécificité de DirectX.

  6. #6
    Membre très actif
    Profil pro
    Responsable technique
    Inscrit en
    Février 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Février 2006
    Messages : 366
    Par défaut
    Il n'y a pas d'erreur dans l'article. J'ai implémenté le même algo que toi à partir du même article et tout fonctionne très bien.

    La cropMatrix est obligatoire. Pourquoi? Je ne sais pas. Je me suis posé la meme question que toi quand je suis tombé dessus mais les tests que j'avais fait m'ont convaincu de la laisser tranquille lol.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/12/2009, 17h19
  2. Parallel-Split Shadow Map comment le metre en application
    Par Trysac dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 10/07/2009, 15h39
  3. Shadow volume ou shadow mapping ?
    Par zenux dans le forum Moteurs 3D
    Réponses: 8
    Dernier message: 14/03/2007, 12h34
  4. Shadow map
    Par Wyatt dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/01/2006, 17h48
  5. Shadow mapping
    Par Pen² dans le forum OpenGL
    Réponses: 4
    Dernier message: 22/04/2005, 14h35

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