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

ASP.NET Discussion :

[XNA, HLSL] Parametres shader generiques


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 46
    Par défaut [XNA, HLSL] Parametres shader generiques
    Bonjour,

    Je me retrouve une nouvelle fois devant un problème que je n'arrive pas a résoudre proprement.
    Dans la réalisation de mon petit moteur 3D j'aimerai gérer une quantité n de matériaux différents.

    Chaque matériau doit être facilement applicable à un modèle et décrit à l'aide d'un fichier .xml et d'un fichier .fx.

    Le soucis est que dans cette optique, je ne connais ni le type, ni le nombre de variables qui seront à transmettre à la carte graphique, hormis les classiques matrices monde, vue, projection et les paramètres d'éclairage.

    Par exemple, dans le cas d'un shader d'eau, j'ai un bon nombre de variable à passer :

    - 2 textures : les maps de reflection et refraction.
    - Plusieurs vecteurs : direction du vent, hauteur des vagues & co.
    - des floats : comme par exemple le temps écoulé depuis la dernière frame.

    Tout ces paramètres sont simple à passer en dur, mais j'aimerai ne pas m'amuser a faire une classe par matériau, l'idée de les ajouter via l'éditeur, au clic.

    Donc au risque de me répéter, il faudrait que tout ces paramètres soit entièrement décrit dans un fichier de matériaux (un .xml dans mon cas).

    Voici la ligne permettant d'ajouter un paramètre de façon classique (ici la couleur de l'eau) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    this.effect.Parameters["xWaterColor"].SetValue(this.waterColor);
    Le soucis est que SetValue() n'aime pas du tout les types génériques, elle possède une surcharge pour chaque type supporté.

    J'ai donc pensé à une solution que je trouve TRÈS moche que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    private SerializableDictionary<string, float> floatList     = new SerializableDictionary<string, float>();
    private SerializableDictionary<string, int> intList         = new SerializableDictionary<string, int>();
    private SerializableDictionary<string, Vector2> vector2List = new SerializableDictionary<string, Vector2>();
    [...]
    Pour chaque type de paramètres supporté, j'ai un dictionnaire décrit dans le XML.
    La clef du dictionnaire correspond au nom de la variable dans code HLSL, et la valeur, la valeur à passer.

    D'une c'est moche, et absolument pas souple, ici pas de support de variables changeant au runtime (comme par exemple le temps), ce ne sont que des valeurs statiques et décrites de façon très lourde.

    Voila j'espère ne pas avoir faire trop long, si l'un de vous à une solution plus souple et rapide je lui en serai fortement reconnaissant !

    Merci

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    C'est du développement ASP.Net?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. Réponses: 31
    Dernier message: 10/08/2008, 14h04
  2. [HLSL XNA]aide pour algo d'ombres temps réel
    Par Acropole dans le forum XNA/Monogame
    Réponses: 3
    Dernier message: 31/07/2008, 15h49
  3. Réponses: 7
    Dernier message: 31/07/2008, 15h27
  4. Les shaders avec XNA
    Par Myth_Titans dans le forum XNA/Monogame
    Réponses: 8
    Dernier message: 18/06/2007, 15h19
  5. XNA - Intersection et Shaders
    Par Ingham dans le forum XNA/Monogame
    Réponses: 3
    Dernier message: 21/11/2006, 18h58

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