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 :

Rendre une frame en 4 fois ???


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Par défaut Rendre une frame en 4 fois ???
    Bonjour, je voudrais rendre un quart de l'écran seulement.
    Je pense qu'il faut faire d'abord un viewport d'un quart d'écran (ca c'est facile) et modifier la matrice de projection pour que ca ne rende dans le viewport que le quart voulu, et c'est la que ca coince, comment faire ca?

    Jai pensé diviser l'angle de vue par deux et tourner la matrice de proj mais je sais pas trop...

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Je pense que le plus simple dans ton cas est d'utiliser le stencil buffer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 26
    Par défaut
    c'est quoi donc le stencil buffer ? =)

  4. #4
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Le stencil buffer c'est ça

    En gros, c'est une surface supplémentaire (en plus de ton color buffer et de ton depth buffer) qu'on peut remplir pour ensuite rejeter/afficher certains pixels selon la valeur contenue dedans.

    Donc là en l'occurence, il faudrait afficher un quad recouvrant le quart de l'écran en n'activant que l'écriture dans le stencil et en y mettant 1, et ensuite afficher normalement la scène là où le stencil vaut 1. Plutôt simple à mettre en oeuvre.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Par défaut
    Oui mais le probleme c'est que ca rendrais quand meme la scene en entier en affichant qu'un quart et mon but est de ne rendre qu'un quart de la scene....

  6. #6
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    C'est vrai oui. Enfin ce n'est qu'une question de performances.

    Sinon, la méthode est en fait assez simple pour paramètrer correctement ta matrice de projection. Apres transformation, ta scène va être sur tout l'ecran, càd entre (-1, -1) et (1, 1). Or toi tu veux que seulement un quart de ta scène soit sur cet intervalle, il faut donc ajouter sur chaque axe une translation de +/ 1 selon le quart d'écran concerné, et un scaling par 2.

    Tu construit donc une matrice qui fait ce scaling + translation puis tu multiplies ta matrice de proj normale par celle-ci, et hop normalement t'es rendu.

    Bon les valeurs de scaling/translation que je donne ne sont peut-être pas exactes, à toi de faire les calculs pour trouver les bonnes

    Mais bon, ta scène sera tout de même rendue en totalité, il y a juste que par rapport à l'approche stencil, le clipping des 3/4 invisibles sera effectué un peu avant dans le pipeline. Le mieux serait encore de faire un culling toi-même avant d'envoyer ta scène au hardware, ça devrait être assez simple si tu as déjà une structure de partitionnement prête.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 71
    Par défaut
    Il n'y a pas besoin de stencil car de toute façon tous les pixels qui sortent du viewport (donc du quart de l'écran) sont rejetés par le pipeline (clipping) comme ceux qui sortiraient de l'écran dans une scène normal (ou le viewport fait tout l'écran).

  8. #8
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Oui je pensais au stencil comme à une autre solution, pas comme à un complément. Parce qu'avec le viewport il faut tout de même remanier la matrice de proj, sinon la scène sera affichée toute entière dans son viewport, quelle que soit la taille de celui-ci.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 71
    Par défaut
    d'accord mais ça reste une question de rapidité je pense, paske avec le viewport tu ne regarde même pas les pixels hors de la zone de rendu, et de toute façon tu dois spécifier une matrice de proj pour ton rendu, donc pas de pertes de performances par rapport au rendu normal... et c'est plus simple

  10. #10
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    C'est vrai oui, mais comme je l'ai expliqué la différence n'est pas si énorme, les pixels hors-écran seront juste clippés un peu avant (ça ne passera pas par l'étape fog + texturing/pixel shader) par rapport à l'approche stencil-buffer.

    Après, faut voir le rapport performances/facilité, mais c'est vrai que finalement c'est pas si compliqué de parametrer correctement la matrice de projection.

    Et évidemment s'il a déjà un frustum culling tout prêt, ce sera encore plus efficace avec cette dernière méthode. (...donc oui, on peut jeter le stencil à la poubelle )

  11. #11
    Membre Expert

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Par défaut
    Le stencil culling/Z culling intervient en théorie après le shading des pixels. Et meme s'il intervenait AVANT le shading de chaque pixel, ce serait tout de meme une méthode très inefficace de faire du clipping.

    Utiliser la methode du viewport fonctionne partout (y compris sur voodoo) et est la plus rapide.

    Ou encore les scissor rect. La aussi en théorie ça intervient après le pixel shader mais en pratique les cartes NV depuis la geforce font du guard band clipping avec leur scissor rect donc c'est très rapide et efficace.
    Par contre ce n'est pas supporté par toutes les cartes donc le viewport est la solution à préferer pour la compatibilité (ça necessite quelques calculs en plus du coté de l'application).

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

Discussions similaires

  1. Rendre une frame transparente
    Par RiRix dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/03/2013, 12h35
  2. [PPT-2003] Rendre une présentation consultable une seule fois
    Par Erwan1978 dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 14/07/2010, 05h58
  3. rendre une frame transparente
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 29/02/2008, 08h04
  4. [flash] ouvrir une page dans une frame différente
    Par viena dans le forum Intégration
    Réponses: 6
    Dernier message: 01/08/2007, 15h54
  5. Rendre une fenêtre modale non modale
    Par Smortex dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/03/2003, 17h56

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