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 :

Brouillard volumetrique


Sujet :

DirectX

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 10
    Par défaut Brouillard volumetrique
    Bonjour a tous,

    Je me demandais si il existait un moyen de créer un brouillard volumetrique sous directx de la même facon que sous OpenGL avec l'extension glFogCoordfEXT?

    J'ai beau chercher des exemples je ne trouve pas grand chose.. Si vous avez des techniques / tutorial reproduisant cet effet je suis preneur.. Sinon se doit être possible d'en créer à la main, par exemple avec des shaders mais la encore j'ai un peu de mal.

  2. #2
    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
    Ça dépend de la précision que tu veux, type d'effet et plateforme considérée.

    Pour le brouillard à distance constante au niveau du sol, tu peux utiliser un vertex shader (l'avantage c'est que c'est supporté en software si ta carte ne le supporte pas en natif), tu dois écrire ton terme de fog toi même en faisant les calculs dans le vertex shader. Tu peux utiliser plusieurs formules soit une simple fonction affine de la hauteur (avec des opérations de saturation en dessous de zero et au dessus de un), soit une formule qui prend en compte la position de l'observateur et la surface limite du brouillard.

    Bref tout dépend du type d'effet que tu veux obtenir et du niveau de qualité que tu te fixes.

    Attention tout de même, si tu fais tous les calculs dans le vertex shader et que ton brouillard à une relation non linéaire avec la distance alors, tu devras faire attention que la tesselation de tes objets soient suffisants pour ne pas créer d'artefacts (notamment dans les parties qui sont à la frontière du brouillard). Pour des effets plus complexes qui sont précis au pixel près il faudra écrire des pixel shaders.

    LeGreg

    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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 10
    Par défaut
    Coucou,

    Déja merci merci de ta réponse!!

    Ça dépend de la précision que tu veux, type d'effet et plateforme considérée.
    En fait niveau précision/effet je ne cherche pas a faire quelque chose de particulièrement réaliste. Je m'explique: j'ai un terrain (avec une skybox) à afficher mais comme il est un peu grand, il est coupé par le plan de fond de la skybox (qui est au niveau du plan de fond de la camera). Je pourrais l'agrandir, mais je préfèrerais utiliser un brouillard pour cacher tout ca derriere.
    La plateforme se limite a Windows.


    Pour le brouillard à distance constante au niveau du sol, tu peux utiliser un vertex shader
    Ce que j'ai du mal à voir c'est ce qui faut passer comme geometrie au vertex shader... Parceque la pour les calculs au niveau du shader il y a besoin de la position du terrain, la hauteur maximale du brouillard, mais ce qu'on va modifier c'est des vertex entre ces 2 positions?

    Humm je débute avec les shaders, pardonnez mon ignorance j'ai peut être pas tout compris finalement

    Attention tout de même, si tu fais tous les calculs dans le vertex shader et que ton brouillard à une relation non linéaire avec la distance alors, tu devras faire attention que la tesselation de tes objets soient suffisants pour ne pas créer d'artefacts
    Heu mouai la sa va loin pour moi, je vais rester sur la premiere méthode pour commencer!

  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
    En fait niveau précision/effet je ne cherche pas a faire quelque chose de particulièrement réaliste. Je m'explique: j'ai un terrain (avec une skybox) à afficher mais comme il est un peu grand, il est coupé par le plan de fond de la skybox (qui est au niveau du plan de fond de la camera). Je pourrais l'agrandir, mais je préfèrerais utiliser un brouillard pour cacher tout ca derriere.
    La plateforme se limite a Windows.
    Et pourquoi il te faudrait un brouillard volumétrique plus qu'un brouillard linéaire ou exponentiel pour ça ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 10
    Par défaut
    Oui pour ce que je veux faire sa suffirait mais je ne trouve pas que le rendu soit génial, enfin par rapport au brouillard volumetrique en tout cas. Et pis comme c'est assez simple a mettre en place avec OpenGL, je voulais voir s'il y avait un equivalent pour directx... mais apparement doit po y avoir.

  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
    Non, en effet il n'y a pas d'équivalent simple, donc en général on se contente du brouillard linéaire ou exponentiel.

    Ce n'est pas pour rien que seuls les jeux basés sur un moteur OpenGL y vont allégrement avec le brouillard volumetrique

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 10
    Par défaut
    Hummm oki oki merci c'est bon a savoir sa! Donc la oui dans tous les cas la meilleure solution doit rester du coté des shaders pour reproduire un effet a peu près equivalent, je vais continuer a travailler dessus alors...
    Hehe décidement OpenGL c'est bien qd meme

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

Discussions similaires

  1. Effet de Brouillard en SDL
    Par ironzorg dans le forum SDL
    Réponses: 17
    Dernier message: 05/09/2007, 18h35
  2. Problème avec checkedlistbox, dans le brouillard
    Par Poulain dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/06/2007, 17h13
  3. Brouillard volumique 3D
    Par MatRem dans le forum OpenGL
    Réponses: 3
    Dernier message: 19/04/2007, 12h39
  4. Problème avec les ombre volumetrique
    Par theidiot dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/10/2006, 21h06
  5. [SQL2005] Etude volumetrique
    Par sg-40 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/05/2006, 14h42

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