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

DirectX Discussion :

Probleme Stencil Buffer


Sujet :

DirectX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Points : 82
    Points
    82
    Par défaut Probleme Stencil Buffer
    Bonjour, je réalise un jeu avec Directx et je voudrais implémenter les ombres portées.
    J'ai essayé a plusieur reprise de créer une classe dans mon jeu a partir de l'exemple du SDK mais sans succés.
    Apparemment le premier probleme que jai c'est que dès que je rajoute D3DCLEAR_STENCIL dans le pd3dDevice->Clear(...) plus rien ne saffiche si ce n'est des abérations optique.
    Quelqu'un peut-il m'aider?
    Merci!

  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 : 40
    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
    Ton format de back buffer a-t-il des bits pour le stencil buffer ? (D3DFMT_D24S8 par exemple)

    Sinon on ne pourra pas t'aider sans plus de précisions.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Points : 82
    Points
    82
    Par défaut
    Merci c'était bien le probleme...


    --Mon premier jeu TrialTime: http://supergrey.free.fr/TrialTimeComplet.exe ---

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Points : 82
    Points
    82
    Par défaut
    Ca marche par contre est-ce qui a un moyen de régler le probleme de quand la caméra passe dans lombre? (je pense que vous voyez de quoi je parle)

  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 : 40
    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
    Le seul moyen de régler ce problème est de faire du Z-Fail (aka Carmack's reverse). Mais cela entraînera d'autres problèmes (matrice de projection infinie), je te conseille de te documenter un maximum sur le sujet car il y a beaucoup à faire avant d'avoir des ombres infaillibles en shadow volumes . Il y a aussi beaucoup beaucoup d'optimisations possibles pour augmenter les performances.

    Tu peux aller sur le site de nVidia, où tu pourras trouver un max de PDFs sur le sujet, il y a aussi un article très complet sur Gamedev.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Points : 82
    Points
    82
    Par défaut
    Sur GameDev ils disent :

    Render back face of shadow volume. If depth test fails, increment stencil value, else does nothing. Disable draw to frame and depth buffer.
    Render front face of shadow volume. If depth test fails, decrement stencil value, else does nothing. Disable draw to frame and depth buffer.

    Qu'est ce qu'il veulent dire par "Disable draw to frame and depth buffer." ?

  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 : 40
    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
    Ca signifie qu'il faut désactiver l'ecriture sur le framebuffer et le Z-buffer (tu écris seulement dans le stencil buffer).

    Ce qui correspond habituellement à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Device->SetRenderState(D3DRS_COLORWRITEENABLE, 0x0); // frame buffer
    Device->SetRenderState(D3DRS_ZWRITEENABLE, false); // Z-Buffer

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Points : 82
    Points
    82
    Par défaut
    Jai un probleme avec le Z-fail: jai fait une sphere qui projete son ombre sur le sol ce qui fonctionne a merveille le probleme c'est qu'on voit un bout d'ombre dans la sphère.


    En plus le bonhomme ne devrait pas etre ombré du tout.

  9. #9
    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 : 40
    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
    (on voit pas très bien sur ton screenshot)

    Est-ce que tu as bien mis les front/back caps ? Tu as une matrice de projection infinie ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Points : 82
    Points
    82
    Par défaut
    C'est quoi le front/back caps ?
    La matrice de projection infinie je pense pas que c'est le probleme, sur la capture on voit que la tete du bonhomme est ombré par la boule alors qu'il en est loin.

  11. #11
    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 : 40
    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
    Oui là ton problème doit être dû aux caps. Mais tu en auras un autre avec la matrice de projection .

    Avec le Z-Fail, ton volume doit être complétement fermé pour ne pas qu'il y ait ce genre de bizarrerie. Donc il faut ajouter un "couvercle" à l'avant et à l'arrière du volume. La manière de procéder est expliquée dans n'importe quel bon tuto sur les shadow volumes.

    bonne chance

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Points : 82
    Points
    82
    Par défaut
    Je ne trouve pas d'exemples pour générer un couvercle est-ce que tu pourrais me renseigner silteplais?

  13. #13
    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 : 40
    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
    C'est assez simple en fait :

    Pour le front cap, il suffit de garder les polygones front-facing tels quels (càd ceux dont L.N < 0).

    Pour le back cap, tu prends tous les autres (polygones back-facing, L.N > 0), et tu les extrudes à l'infini. Ainsi ça va fermer ton shadow volume complétement et enlever les erreurs induites par le Z-Fail.

    (L = direction de la lumière, N = normale de la face)

    Tu peux aussi inverser : prendre les polygones back-facing pour le front cap, et les autres pour le back cap, mais là il ne faudra pas oublier d'inverser l'ordre des vertices de ton triangle, de façon à ce que celui-ci soit toujours dans la bonne direction.

    Après, tu peux trouver diverses optimisations pour les caps, par exemple projeter les polygones en triangle fan pour en limiter le nombre, ou alors extruder un chouïa le front-cap vers l'interieur du modèle pour eviter les effets de popping (un jour il faudra trouver une traduction pour tous ces termes quand même ).

    A noter que pour les lumières directionnelles tu n'auras pas besoin de back-cap pour fermer ton volume, étant donné que les triangles extrudés convergent tous vers le même point à l'infini.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Points : 82
    Points
    82
    Par défaut
    Merci, tu m'a bien aidé pour les ombres tout fonctionne à merveille.
    Sinon pourrais-tu me donner des liens vers des sites portant sur la programmation directX.
    Merci encore...

  15. #15
    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 : 40
    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
    Personnellement je n'ai pas vraiment de site spécialisé Dx. Lorsque je recherche quelque chose je vais voir sur Flipcode, Gamedev et Gamasutra, et si je ne trouve pas mon bonheur j'appelle mon ami Google .

    Quelqu'un a ouvert sur ce forum un topic recensant les bonnes URL pour Dx, tu pourras y jeter un oeil de temps en temps.

    Bonne chance pour la suite !

Discussions similaires

  1. probleme avec le stencil buffer
    Par conrad dans le forum DirectX
    Réponses: 7
    Dernier message: 05/08/2005, 22h48
  2. Problème de Stencil-buffer
    Par Steki-kun dans le forum OpenGL
    Réponses: 2
    Dernier message: 19/03/2005, 00h42
  3. stencil buffer
    Par graphicsxp dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/12/2004, 14h21
  4. mask in stencil buffer
    Par graphicsxp dans le forum OpenGL
    Réponses: 3
    Dernier message: 13/12/2004, 12h17
  5. stencil buffer
    Par patapetz dans le forum OpenGL
    Réponses: 6
    Dernier message: 26/02/2004, 18h23

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