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 :

[DX9 C#]Shader + Lumières


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Par défaut [DX9 C#]Shader + Lumières
    Bonjour, quel est la méthode la plus "propre" pour rendre un shader material dans une scène avec des lumières multiples ? Je sais comment ajouté des lumières en dur dans le code du shader mais je ne sais pas trop comment faire ça dynamiquement et proprement
    Merci pour votre aide !

    Pour info j'utilise le HLSL

    __________________________
    Mon blog

  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 sais comment ajouté des lumières en dur dans le code du shader mais je ne sais pas trop comment faire ça dynamiquement et proprement
    Il suffit de les passer en paramètre à ton shader.

  3. #3
    Membre éclairé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Par défaut
    Citation Envoyé par Laurent Gomila
    Il suffit de les passer en paramètre à ton shader.
    Quel type de paramètre utiliser ? En fait dans mon shader de base j'ai ces paramètres :

    float3 LightPosition;
    float4 LightColor;

    Puis j'ai voulu que le shader supporte plusieurs lumières donc j'ai modifié le code en conséquence :

    float3 LightPosition1;
    float4 LightColor1;
    float3 LightPosition2;
    float4 LightColor2;

    J'ai fait les modifs dans le VS-PS et ca fonctionne mais je me doute que ce n'est pas la bonne technique pour ajouter une lumière n'y-a-t'il pas un moyen d'ajouter x lumières en paramètres en shader ? Un tableau par exemple ?

    __________________________
    Mon blog

  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
    Non, ton shader doit savoir combien de lumières il va gérer. Donc il faut que tu fixes une limite maximum.

    Mais rien ne t'empêche de déclarer un tableau de N lumières, et d'envoyer à chaque frame le nombre de lumières effectives. Avec un modèle de shader suffisamment récent, tu devrais pouvoir gérer ça avec une boucle.

  5. #5
    Membre éclairé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Par défaut
    Ok, j'ai fait les modifs et ca fonctionne... mon seul soucis c'est de devoir utiliser les shaders 3.0 parceque les 2.0 ne me laisse pas assez d'instructions pour réaliser ma boucle

    __________________________
    Mon site

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 82
    Par défaut
    Dans le meme ordre d'idées, n'y a t il pas une limitation sur le nombre de parametres que le vertex shader peut passer au pixel shader ?

    Lorsque l'élairage est calculé par vertex, le shader accepte autant le lumiere que l'utilisateur le souhaite dans la limite du nombre de constantes autorisées je suppose. Par contre, lorsque l'éclairage est calculé dans le pixel shader, les texcoordN sont un peu juste pour passer les vecteurs lumieres (H, L, etc.) et les propriétés des lumières (couleurs).

    La solution est elle bien de générer plusieurs passes, une pour chaque groupe de lumieres ?

    Merci,
    Xter.

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

Discussions similaires

  1. [OpenGL 3.x] shader lumière sphere
    Par onigiriri dans le forum OpenGL
    Réponses: 11
    Dernier message: 24/10/2013, 08h14
  2. Réponses: 1
    Dernier message: 24/02/2012, 01h31
  3. Vertex et Pixel Shader
    Par Riko dans le forum OpenGL
    Réponses: 2
    Dernier message: 06/06/2003, 16h45
  4. carte graphique et pixels shader
    Par yeeep dans le forum DirectX
    Réponses: 2
    Dernier message: 26/04/2003, 10h54
  5. [DX9][VB] IndexBuffer
    Par Pazz dans le forum DirectX
    Réponses: 1
    Dernier message: 14/03/2003, 22h57

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