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 :

Pixel Shaders (en Managed)


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut Pixel Shaders (en Managed)
    Bonsoir,

    J'ai voulu m'essayer aux pixel shaders pour voir, ayant lu sur ce forum que c'était assez simple à mettre en oeuvre
    Mais je n'ai pas trouvé comment utiliser mes pixel shaders (je programme en C#, donc DirectX Managed)...

    J'ai essayé de faire ce qui me semblait le plus logique

    Je créé une fonction "SetPS":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    string sdebug, pixelShaderCode; 
    GraphicsStream ps; 
     
    pixelShaderCode =
    "ps_1_1\n"+
    "tex t0\n"+
    "mov r0, 1-t0";
     
    ps = ShaderLoader.FromString(pixelShaderCode, null, ShaderFlags.Debug, out sdebug); 
    if(sdebug != null)
        throw new Exception("Erreur de compilation");
     
    PixelShader pixelShader = new PixelShader(d3ddevice, ps);
    ps.Close(); 
     
    d3ddevice.PixelShader = pixelShader;
    J'appelle cette fonction juste apres mon d3ddevice.BeginScene(), donc avant l'affichage des objets ...

    Le résultat ? Mon image n'est pas du tout inversée (c'est ce qu'est censé faire le PS pourtant), j'ai juste un objet tout blanc comme si l'éclairage avait été désactivé

    Aie-je raté quelque chose ?
    J'espère que vous pourrez me guider pour trouver mon erreur, et si vous avez un lien vers un tutorial pour débuter avec les pixel shaders en Managed n'hésitez pas

    Merci d'avance

    Ingham (qui espere que ce topic aura plus de succès que le précédent )

  2. #2
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut Re: Pixel Shaders (en Managed)
    Citation Envoyé par Ingham
    espere que ce topic aura plus de succès que le précédent
    Pas vraiment on dirait

  3. #3
    Membre éprouvé
    Inscrit en
    Mai 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 99
    Par défaut
    Ce pixel shader ne va certainement pas inverser l'image.

    ps.1.1
    mov r0,1-v0

    devrait mieux marcher.

    Telecharger MFCPixelShader depuis jeux-directx.com pour des examples de shaders.

  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
    Si ses triangles sont texturés et n'ont pas de couleur diffuse, pourquoi son shader ne marcherait pas :

  5. #5
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut
    Oops

    Non non Laurent a raison, son code marche ...
    En effet je ne cherchais pas à appliquer un filtre sur une texture mais directement sur le résultat qui est affiché à l'écran

    Je crois qu'il va falloir que j'étudie ça plus convenablement
    Par contre ... Pourquoi le fond n'est-il pas affecté ? Le "filtre" n'est pas appliqué sur l'image complete ?

    Aussi, connaissez vous des adresses avec de nombreux exemples de pixel shaders, comme des flous, des blooms etc ?
    Laurent, j'ai téléchargé votre programme, c'est en effet très interessant et il m'a aidé à comprendre le principe des Pixel Shader (Et oui il y a quelque jour je ne savais même pas en quoi ca consistait )

    Merci à vous 2

    Ingham (qui a soif d'apprendre )

  6. #6
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut
    Toujours pas de réponse ? ^^

    J'ai une autre mini-question ...
    Le moment où je fais "d3ddevice.PixelShader = pixelShader;" change quelque chose ou je peux le faire à n'importe quel moment dans le rendu sans que ça change quoi que ce soit ?

    J'ai utilisé Google pendant des heures hier sans trouver un bon site permettant de se mettre doucement aux vertex/pixel shaders (c'est encore très flou pour moi lol)
    Pas d'adresses sympas à proposer ?

    Merci à vous 2, et merci par avance aussi pour les (j'espère) futures réponses

    Ingham

  7. #7
    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
    Par contre ... Pourquoi le fond n'est-il pas affecté ? Le "filtre" n'est pas appliqué sur l'image complete ?
    Le shader ne s'applique qu'aux pixels des triangles que tu afficheras après le changement de Device.PixelShader. Le "fond" n'en fais pas partie, c'est juste une couleur de remplissage que ton hardware place directement dans ton backbuffer sans passer par le pipeline.

    Le moment où je fais "d3ddevice.PixelShader = pixelShader;" change quelque chose ou je peux le faire à n'importe quel moment dans le rendu sans que ça change quoi que ce soit ?
    Cf ma phrase du dessus : peu importe du moment que tu le fais avant d'effectuer le rendu de ta géometrie. Ensuite si tu veux afficher des triangles sans passer par ce shader il faudra changer Device.PixelShader juste avant.

  8. #8
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut
    Ah ok ! Merci bien
    Au départ, je pensais que le filtre du pixel shader s'effectuait sur l'image finale, affichée à l'utilisateur

    Pour les adresses, rien à proposer ?

  9. #9
    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
    Ah si tiens, j'avais zappé cette question. J'ai un excellent tutoriel en 4 parties qui explique les bases des vertex / pixel shaders, les instructions, les registres, les effets de base, mais c'est de l'asm et ça ne va pas plus que les shaders 1.4 je crois.

    Ca se trouve sur Gamedev :
    http://www.gamedev.net/reference/articles/article1496.asp

    Pour la partie II, III et IV c'est au même endroit.

    Mais bon après faut voir ce que tu souhaites utiliser : shaders évolués style 2.0 ou 3.0, langage plus haut niveau genre Cg ou HLSL, ....

  10. #10
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut
    Merci ! ^^ J'ai trouvé ma lecture pour ce soir

    Pour ce que je souhaite utiliser, ben pour commencer, simplement des shaders en 1.4, ma carte ne supportant pas plus, je ne pourrais pas tester mon code si je vais au délà héhé ...

    Mais je pense qu'il y a moyen de faire des bon trucs quand meme avec ca non ?

  11. #11
    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
    Bien sûr, il y a largement de quoi s'amuser avec les shaders 1.4, t'inquiète pas pour ça

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

Discussions similaires

  1. Pixel shader 1.1
    Par toinedav dans le forum DirectX
    Réponses: 1
    Dernier message: 10/02/2005, 12h08
  2. effets de pixel shaders 1.1
    Par cemoi dans le forum DirectX
    Réponses: 11
    Dernier message: 12/12/2003, 15h13
  3. pixel shader 2.0
    Par trois_1 dans le forum DirectX
    Réponses: 3
    Dernier message: 20/10/2003, 15h39
  4. Vertex et Pixel Shader
    Par Riko dans le forum OpenGL
    Réponses: 2
    Dernier message: 06/06/2003, 16h45
  5. carte graphique et pixels shader
    Par yeeep dans le forum DirectX
    Réponses: 2
    Dernier message: 26/04/2003, 10h54

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