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

Projets Discussion :

Pi


Sujet :

Projets

  1. #41
    Membre chevronné
    Avatar de lagwag
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 693
    Points : 1 891
    Points
    1 891
    Par défaut
    pour le render to texture et multi pass, j'ai du le faire pour le post processing

  2. #42
    Membre chevronné
    Avatar de lagwag
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 693
    Points : 1 891
    Points
    1 891
    Par défaut
    vous pouvez deja voir le resultat...

    j'ai rajouté une light pour chaque laser, une pour notre vaisseau et je voudrais rajouter des lights dynamique ou statique un peu partout... le souci c'est qu'avec seulement 4 lights ca rame deja si je depasse 1024x576 alors que c'etait pas le cas avec les lights natives ... pas normal...

    qqn aurait des infos (tuto, url...) sur l'utilisation des lights en shader (HLSL)? et/ou le code c++... je dois merder quelque part

    [ame="http://www.youtube.com/watch?v=1MMm7BW8i98"]YouTube - All Out Race 2: PI[/ame]

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 827
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Bonsoir,

    Alors oui, je pense que le deferred shading peut être une bonne chose, sachant que j'ai cru voir que des points light.
    Maintenant, le principe (rapidement):
    Une première passe, vous dessiner vos géométries dans des textures (render to texture). On l'appelle le gbuffer. Il en faut une pour les vertex (position des vertex), une pour les couleurs (plus ou moins optionnel), une pour les normales. Le max c'est 4 (DirectX qui force la limitation) (après on peut faire des packing et des optimisations). La taille des buffers est équivalent à la taille de la fenêtre. Donc durant cette passe on fait un rendu assez "normal", sans calcul de lumière (ou avec la directionnal light), et la petite différence, c'est que l'on met tout dans des textures en sortie.

    Maintenant la deuxième passe.
    On va en fait, faire le rendu dans les zones éclairés par des lampes. Pour faire cela, nous allons dessiner que des rectangles (bill board particules) qui présenterons le rayon d'effet de nos lampes. Du coup, vous remarquerer que sur la scène, on ne dessine que les zones éclairés (et on fera le calcul des lampes que sur ces pixels) et non pour toutes les géométries de la scène.
    Donc dans cette passe, on utilise nos textures comme source, on calcul notre éclairages et hop on affiche (enfin).
    On peut faire un rectangle sur tout l'écran pour afficher tout le contenu de nos buffers (pour avoir la scène) + les autres rectangles pour les autres lampes en points.

    (houla je vais vous mélanger les pinceaux ...)
    Donc les tutos -> GPU Gems (site Nvidia). les conférence GDC en parlent aussi.

    Des précisions, il faut faire attention avec la transparence / blending qui est un peu étrange à configurer (pour avoir plusieurs lampes sur les mêmes zones)
    Et attention ,la technique pose des problèmes pour toutes lampes derrière les géométris (bon je pense que cela peut se corriger)

    Voilà à peut près une possibilité très courante maintenant. Pour une simulation de mer ... je pouvais monter à 512 lampes sans de problèmes (en résolution 1024x768).
    La mer animée , et rien d'optimiser
    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.

  4. #44
    Membre chevronné
    Avatar de lagwag
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 693
    Points : 1 891
    Points
    1 891
    Par défaut
    et pour les spot lights? (la lumiere qui tourne est une spotlight)

    The main disadvantages are:

    •Large frame-buffer size
    •Potentially high fill-rate
    •Multiple light equations difficult
    •High hardware specifications
    •Transparency is very hard

    ca fait pas mal d'inconvenients

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 827
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Et bah ... c'était une proposition ...

    et puis pour la spot light, j'ai cru que c'est une point light qui tournait dans le tunnel (contre la paroi )
    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.

  6. #46
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Et c'est une bonne proposition, le deferred shading et massivement utilisé dans les jeux vidéos récents, pour la bonne raison que la complexité du calcul d'éclairement devient quasi indépendant de la géométrie ("quasi" à cause de la construction du gbuffer qui lui est dépendant [mais peu complexe] de la géometrie mais est amortie par sa réutilisation pour les post effects). Pour la transparence il est impossible de la gérer avec du deferred shading (j'ai entendu parlé d'inferred shading qui gérer ça mais même si les résultats sont pas mals ça ne m'a pas convaincu, c'est vraiment un gros hack ). Du coup après avoir rendu tous les objets opaques de ta scène en deferred et avoir fais le calcul d'éclairement, il faut faire une autre pass pour les objets transparent en forward shading (calcul d'éclairement classique, directement dans le pixel shader de l'objet à dessiner). Voila pour la transparence, après pour les équations d'éclairement elle sont pas hyper complexes et tu peux les retrouver ici directement coder en GLSL : http://www.lighthouse3d.com/tutorial...torial/?lights
    Pour les 3 derniers points : Large frame-buffer size, Potentially high fill-rate et High hardware specifications ça veut juste dire, carte graphique niveau DX10 minimum

  7. #47
    Membre chevronné
    Avatar de lagwag
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 693
    Points : 1 891
    Points
    1 891
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Maintenant la deuxième passe.
    On va en fait, faire le rendu dans les zones éclairés par des lampes. Pour faire cela, nous allons dessiner que des rectangles (bill board particules) qui présenterons le rayon d'effet de nos lampes. Du coup, vous remarquerer que sur la scène, on ne dessine que les zones éclairés (et on fera le calcul des lampes que sur ces pixels) et non pour toutes les géométries de la scène.
    Donc dans cette passe, on utilise nos textures comme source, on calcul notre éclairages et hop on affiche (enfin).
    On peut faire un rectangle sur tout l'écran pour afficher tout le contenu de nos buffers (pour avoir la scène) + les autres rectangles pour les autres lampes en points.
    pour la premiere partie, j'ai compris, par contre là je suis perdu.

    tu aurais du code en HLSL?

  8. #48
    Membre chevronné
    Avatar de lagwag
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 693
    Points : 1 891
    Points
    1 891
    Par défaut
    peux tu detailler un peu plus sur cette seconde partie? surtout au niveau code app... comment tu dessines une light?

    je precise que j'ai deja un shader gbuffer.fx qui me permet de creer mon gbuffer (donc trois textures) et j'ai également un shader deferred.fx qui me permet de dessiner une light à partir du gbuffer (light pos, color et range).

    mais comment appeler ce dernier shader? c'est quoi cette histoire de rayon?

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 827
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Alors la deuxième partie:

    Comment dire, nous devons faire en sorte que le shader soit executé sur les parties éclairées par les lumières, seulement.
    Pour cela, nous allons utiliser des quads, de la rayon de la lumière ... parallèle à la camera (billboard) afin que le shader puisse etre executé là ou les lumières éclairent.
    Après, dans le shader, on fait le calcul des lumières en prenant les données (position / normales et autres) à partir des textures.

    Mais on remarquera, que si j'ai qu'une point sprite sur un coin, tout le reste de la scène ne sera jamais dessiné. Alors dans ce cas là, on peut imaginer faire un quad de la taille de l'écran, afin de provoquer le dessin de toute la scène (et appliquer une lumière neutre disons).

    J'espère avoir était un peu plus clair.
    Pour résume, la deuxième passe ne dessine que des quads (qui peuvent être vu comme des particules, car au final, nous avons besoin que du centre de la lumière + couleur, et que le quads peut être produit par le geometry shader)
    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.

  10. #50
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    C'est ****** d'ingénieux ça, je connaissais pas ça comme ça
    Moi je dessiné juste un quad et je faisais les calculs avec toutes les lumières, et j'éliminais les lampes avec une bounding sphere mais dans le shader alors que la tu te sers du pipeline pour prendre directement les pixels qui ont une forte possibilité d'être influencés par la lumière nice :o
    Donc tu coup tu dessine un quad pour appliquer l'ambient puis tu dessiner un quad qui représente la zone d'influence de tes lumières (qui se calcul avec ses coefficients d'atténuations), tu les rasterize mais enfaite tu vas chercher les infos dans le gbuffer et tu complète avec les informations sur la lumière, très ingénieux. Sa règle aussi mon problème de comment passer les lumières aux shaders merci tu as tout compris lagwag ?

  11. #51
    Membre chevronné
    Avatar de lagwag
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 693
    Points : 1 891
    Points
    1 891
    Par défaut
    pour le format des trois textures? ya-til un format à respecter? on peut utiliser D3DFMT_X8R8G8B8?

  12. #52
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Tu utilise ce que tu veux, mais tout dépend de comment tu compte stocker tes informations. Par exemple les normales sont des vecteurs à 3 composantes flottantes, tu peux par exemple utiliser deux canaux (R et G) à 8 octets pour stocker le X de ta normale sur 16 bits (pas besoin de plus de précision pour une normale en général), et les deux autres canaux pour stocker Y. Si ton vecteur est normalisé tu peux retrouver la composante Z. Sinon tu utilise une texture avec chaque composante à 16 bits et tu stocke chaque composante dans un canal. Et dans le dernier tu met une autre info, bref à toi de trouver le meilleur format pour stocker tes données. Pour te donner des indices regarde du côté du CryEngine3 ou de Starcraft2 il y a des papiers intéressant sur le sujet.

    PS : personnellement j'utilise des textures 16 bits ça marche plutôt bien et ça permet de stocker pas mal d'informations sans avoir plus de 4 textures (gros bottleneck si tu dépasse). Et les textures 32 bits bouffent trop de bande passante.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 827
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    De mémoire, plus de 4 RT ne fonctionne pas sur Dx10 ... ou avec certaine cartes.

    Sinon, le packing est à faire une fois que la solution fonctionne. Mieux vaut faire du "full fat" (comme dirait mon prof) au début
    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.

  14. #54
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    De mémoire, plus de 4 RT ne fonctionne pas sur Dx10 ... ou avec certaine cartes.
    Il me semble plutôt que c'est sous Dx9. Dx10 a augmenté cette limitation (surement à 16 m'enfin j'imagine même pas les perfs).
    Citation Envoyé par LittleWhite Voir le message
    Sinon, le packing est à faire une fois que la solution fonctionne. Mieux vaut faire du "full fat" (comme dirait mon prof) au début
    Ouai donc autant que tu utilise des textures avec des composantes 32 bits flottantes lagwag de prime abord, tu optimiseras après ^^

  15. #55
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Waaaaaaa ! All Out Race !!! Trop bon !! J'y jouais trop ^^
    Bon, il était pas très long, mais la musique était trop bien et trop prennante (j'ai encore le jeu et la musique sur ce PC, même si le jeu marche plus )

    C'était vous qui aviez fait la musique ? Elle était bien dans l'esprit du jeu je trouve.

    Felicitations ! Il me tarde de tester le 2eme ...

    Désolé d'avoir coupé votre discussion technique ^^

  16. #56
    Membre chevronné
    Avatar de lagwag
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 693
    Points : 1 891
    Points
    1 891
    Par défaut
    oui j'avais composé et enregistré la musique à la guitare et basse... pour cette version le metal me plairait bien... je ressortirai la premiere version en repassant une petite couche de peinture car le gameplay ne sera pas le meme...

    bon je suis arrivé à obtenir un resultat... mais j'ai d'autres soucis...

    lors de la premiere passe j'en profite pour appliquer une directional light sur la texture Color avant d'appliquer les referred lights... c'est bien?

    le souci c'est que les referred lights eclairent moins les parties sombres que les parties claires... cad je vois à peine les lumieres du coté sombre de mon tunnel... ca ne devrait pas etre l'inverse dans la réalité? est-ce du au deferred lighting ou à mon code?

  17. #57
    Membre chevronné
    Avatar de lagwag
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 693
    Points : 1 891
    Points
    1 891
    Par défaut
    pour contourner ce probleme j'ai rajouté une quatrieme texture pour stocker la couleur avec la directional light... comme ca j'applique mes deferred lights en utilisant la texture color uniforme et je n'ai pas besoin de faire le rendu du quad de l'ecran...

    le fog maintenant...

  18. #58
    Membre chevronné
    Avatar de lagwag
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 693
    Points : 1 891
    Points
    1 891
    Par défaut
    damn!

    D3DFMT_A16B16G16R16F ne peut pas stocker des floats qui depassent 65K... forcement ce sont des float sur 2 octets...

    donc au lieu de stocker la position absolue, je stocke la difference avec la camera... puisque la camera n'aura pas bougé lors de la seconde passe

  19. #59
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 196
    Points : 109
    Points
    109
    Par défaut
    La 3D en est ou ?

  20. #60
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Citation Envoyé par lagwag Voir le message
    damn!

    D3DFMT_A16B16G16R16F ne peut pas stocker des floats qui depassent 65K... forcement ce sont des float sur 2 octets...
    Dans le cas d'une normale ce n'est pas un problème tu n'as pas besoin d'avoir une précision absolue.

    Citation Envoyé par lagwag Voir le message
    donc au lieu de stocker la position absolue, je stocke la difference avec la camera... puisque la camera n'aura pas bougé lors de la seconde passe
    Oui c'est bien vu j'ai oublié d'en parler, stock le max d'informations en screenspace si tu le peux. Donc les normales en screenspace déjà ouai.

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