Partage
  • Partager sur Facebook
  • Partager sur Twitter

[OpenGL][3D] Shadow mapping qui déconne

Sujet résolu
    30 juin 2015 à 12:40:57

    LittleWhite a écrit:

    Moi, je ne trouvais pas que c'était un décalage, mais plus une partie de l'ombre (une face) qui manquait.

    Pas exactement une face, l'ombre est coupé, le problème est situé au niveau du fragment, et je dirais vraiment au niveau du test.

    Si ce n'est pas le depth buffer qui déconne, c'est forcément l'autre valeur testée (la perspective), mais je ne vois pas ce qui peut déconner de ce côté, surtout quand ça finit par fonctionner avec une distance suffisante.

    Du coup on revient sur le depth buffer, qui a l'air d'avoir toute la précision nécessaire, donc à moins que je n'ai fait n'importe quoi avec la texture..

    LittleWhite a écrit:

    Avez vous essayez du débogage pas à pas avec les outils spécifique GPU (NVIDIA, ou autre gDEBugger) ?

    Je ne vois pas exactement de quelle façon ça pourrait me servir ici de faire du débuggage pas à pas :-/
    • Partager sur Facebook
    • Partager sur Twitter

    Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

      30 juin 2015 à 14:06:40

      HURRAY!

      (Oui j'ai énormément de shadow acne mais ça se corrige facilement).

      Le problème venait du fait que le bias était appliqué après la perspective alors qu'il aurait dû être appliqué avant, j'ai découvert ça par hasard en appliquant le bias par une matrice au niveau du Vertex Shader.

      Ah, ça soulage !

      • Partager sur Facebook
      • Partager sur Twitter

      Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

        30 juin 2015 à 14:18:42

        Pour le débogueur, il faudrait un outil comme pix, qui permet de vérifier le traitement du shader pour un pixel précis. Peut être avec du similaire à GLSLDevil (ou peut être simplement l'outil de NVIDIA fait tout cela).

        Après, c'était aussi pour dumper tous les buffers et bien vérifier les valeurs injecté pour un pixel (celui où il n'y a pas l'ombre) dans le shader.

        Mais bon, j'avoue que je ne suis pas certain de l'avantage de tout ça.

        En fait, dans votre explication, la perspective n'est pas dédouanée. En effet, lorsque vous changez la distance, vous avez changez les valeurs de la matrice de perspective. D'ailleurs, le depth buffer, vous l'affichez et depuis le début, il nous semble très juste (je le regardais encore ce matin). Donc, je pencherai sur la perspective, ou alors, les transformations (notamment pour être sur le même espace de coordonnées pour faire le test du shadowing).

        • Partager sur Facebook
        • Partager sur Twitter
          30 juin 2015 à 14:19:51

          Han ! Deuxième fois que je post trop tard dans cette discussion.

          Bien joué pour la correction. Et dire que j'ai suspecté le bias dès mon premier message  (mode rage :D).

          • Partager sur Facebook
          • Partager sur Twitter
            30 juin 2015 à 16:35:56

            LittleWhite a écrit:

            Bien joué pour la correction. Et dire que j'ai suspecté le bias dès mon premier message  (mode rage :D).

            En effet, mais pas de la bonne façon :D (il était correct mais pas au bon endroit)

            En tout cas merci à tout le monde pour vous être autant creusés la tête !

            • Partager sur Facebook
            • Partager sur Twitter

            Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

              30 juin 2015 à 20:04:51

              C'était bien le bias de 0.5 de la texture alors ? Parce que là il y a deux bias. :-°

              Du coup tu l'appliques dans le vertex shader c'est ça ?

              • Partager sur Facebook
              • Partager sur Twitter
                30 juin 2015 à 20:28:09

                LeParp a écrit:

                C'était bien le bias de 0.5 de la texture alors ? Parce que là il y a deux bias. :-°

                Du coup tu l'appliques dans le vertex shader c'est ça ?

                En fait il y a deux bias, il y a celui de 0.5 qui permet de passer du repère de projection (-0.5, 0.5, etc..) au repère de texture (0.0, 1.0, etc.), c'est celui-là qui posait problème, la solution était de l'appliquer avant l'application de la perspective (et ça rend le problème plutôt logique pour le coup, le problème apparaissait lorsque la perspective était marquée, il me semble).

                L'autre bias, que j'ai viré tout un temps et remis seulement aujourd'hui pour corriger le shadow acne était correct.

                Ça fait franchement du bien d'avancer, je me sens presque revivre (comme à chaque fois que je passe autant de temps sur un bug) :D

                Prochaine étape, les points lights (qui sont de façon basique six spots lights, les perfs vont prendre cher), j'ai aussi eu quelques idées au niveau des matériaux qui promettent de rendre les prochains rendus intéressants.

                Et en plus de ça, tous les crashs que j'avais avec le moteur ont mystérieusement disparus depuis quelques jours (je ne sais toujours pas si c'est une bonne ou une mauvaise nouvelle remarquez..).

                Wait & see !

                • Partager sur Facebook
                • Partager sur Twitter

                Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)

                [OpenGL][3D] Shadow mapping qui déconne

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown