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 :

Shader d'eau en HLSL pour une application 3D codée en Vrml


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut Shader d'eau en HLSL pour une application 3D codée en Vrml
    Bonjour à tous,
    Voilà, je suis stagiaire dans une petite entreprise d'animation 3D et le sujet de mon stage est de coder un shader d'eau en HLSL pour l'intégrer dans du code Vrml (que je n'ai pas écrit ). Etant donné que je n'avais jamais vu ces 2 langages (ni Vrml, ni HLSL), j'ai du les apprendre en l'espace d'un mois donc vous vous doutez que je suis novice dans la matière mais ça va, j'ai bien compris leur fonctionnement. Mon problème est le suivant, je ne sais pas quoi mettre dans mon shader c'est à dire quelles opérations y effectuer. Je sais comment ça marche mais je sais pas comment l'utiliser. Donc si vous pouviez m'aiguiler la-dessus car j'ai fais de nombreuses recherches sur les shaders sur le net et il se trouve que la plupart d'entre eux sont codés en C++ ou pseudo-assembleur. Pourriez-vous me dire:

    - Quelle(s) algorithme(s) et opérations utilisés pour faire un shader (en HLSL) pour de l'eau (style océan) dans le but de l'intégrer dans une application 3D (îlot entouré d'eau) codée en vrml ?

    J'ai trouvé des techniques comme les cube map et les normals map mais je ne sais pas comment les utiliser à l'intérieur d'un shader, ni quoi leur appliquer. Merci de bien vouloir m'aider.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 100
    Par défaut
    Je ne pense pas que tu as du voir des shaders codé en C++, ca se saurait

    Les langages de shaders du marché sont : GLSL (pour OpenGL), Cg, et HLSL (pour Direct3D). Et apres il reste l'assembleur

    Comme les langages de shaders ont généralement tres peu de fonctionnalités, tu peux essayer de trouver des tutos d'eau en GLSL et l'adapter en HLSL, ca ne devrait pas etre trop dur, enfin je pense. Apres, trouver un bon tutot ^^

    En tout cas, je connais un shader d'eau (de mer) pas mal foutu est donc le code est libre (il est sous licence GPL, donc il faudra que le reste du code source de ton application passe aussi en GPL, ce qui peut poser probleme a tes employeurs.)
    En meme temps, il est en GLSL, et comme tu va au moins le modifier pour du HLSL, je pense que la GPL ne s'appliquera plus. Mais je peux me tromper.
    En tout cas, les images, textures, etc ne doivent pas etre utilisees pour etre revendues

    http://dangerdeep.sourceforge.net/warning.html

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut
    Merci dolanor,
    t'as effectivement raison, j'ai jamais vu de shader codé en C++ je voulais dire Cg. En tout cas j'ai récupérer les sources sur le site que tu m'a donné et je vais travailler dessus. Ce sera déjà une bonne base pour moi, pour que par la suite je puisse écrire mon propre shader. Pour ce qui est du GPL je pense que ça ne posera pas de problème car je veux juste utiliser le code sur mon application de "test" => îlot (cf post précédent). Je pense que tout ça va bien m'aider, merci. Par contre, vu que tu m'a l'air assez callé niveau shader, je profite pour te poser une petite question (qui risque d'être suivie par bien d'autres ... ):

    Les shaders, on peut les intégrer dans n'importe quelle application 3D ou alors est ce qu ils requièrent des données spécifiques (provenant de l'application dans laquelle ils sont intégrés) passées en paramètre (mis à part les textures, je pense) ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    'Alut.

    Tout d'abord un petit retour sur les shaders...

    Les shaders on pour vocations de remplacer le pipeline fixe. Il y a deux types de shaders:
    _ les vertex shaders qui sont appliqués à chaque vertex,
    _ les pixels shaders qui sont appliqués à chaque pixel.

    Les vertex shaders ont en entré les données envoyés au GPU. Il y a au minimum la position des vertex. Il peut toutefois y avoir n'importe quelle autre paramètres que l'on juge utile (tant que ce paramètre est défini pour chaque vertex). En sortie ils fournissent au minimum la couleur du vertex et sa position transformée.

    Les pixels shaders calculent la couleur des pixels affichées à l'écran. Leur entrées est la sortie du vertex shader (ou bien du pipeline fixe s'il n'y avait pas de VS). En sortie ils fournissent la couleur du pixel.

    Passons à tes questions:
    Les shaders, on peut les intégrer dans n'importe quelle application 3D
    Pour utiliser un shader, il faut signifier au GPU qu'il doit utiliser un shader et non le pipeline fixe. Il y a donc modification du code.

    alors est ce qu ils requièrent des données spécifiques (provenant de l'application dans laquelle ils sont intégrés) passées en paramètre (mis à part les textures, je pense) ?
    Mis à part les paramètres d'entrées, il n'y a pas d'obligation. Toutefois, tu peux lui envoyer des données (constantes ou variables).

    En ce qui concerne la modélisation de l'eau, une simple recherche sous google avec les mots "rendering real time water" te fournira quelques résultats.
    Tu vas te rendre compte que ce sont quasiment toujours les mêmes phénomènes physiques qui rentrent en compte, à savoir, déformation de la 3D, refléction, refraction etc ...
    Tu va ensuite devoir choisir un niveau de réalisme qui dépend surtout de ce que tu désire comme performance. Après, il ne reste plus qu'à coder tout ça...

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    Citation Envoyé par Albenejean
    '

    Les vertex shaders ont en entré l ...En sortie ils fournissent au minimum la couleur du vertex et sa position transformée.
    La couleur n est pas requise dans le vertex shader ... juste la position (a partir de laquelle le fragment / pixel shader pourra eventuellement deduire la couleur)

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    Dans le SDK nvidia ou ATI , il y a ce genre de code ...

    Question subsidiaire : ton model doit il etre dynamique / statique (comprendre est ce que l eau doit se deplacer par la seule action du temps , ou par l interaction avec un utilisateur) ?

Discussions similaires

  1. Comment faire des etats pour une application web ?
    Par ovh dans le forum Autres outils décisionnels
    Réponses: 6
    Dernier message: 06/07/2021, 03h25
  2. [Executable]creation d'un batch pour une application
    Par tarik75 dans le forum Général Java
    Réponses: 4
    Dernier message: 03/08/2005, 15h33
  3. [Tomcat] définir un port pour une application
    Par Mrlud dans le forum Tomcat et TomEE
    Réponses: 10
    Dernier message: 14/06/2005, 17h33
  4. [Compilation] A quel moment pour une application ?
    Par Rick1602 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/03/2004, 20h36

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