Login
blog > developpement > Media Player Classic : pixel shaders pour les débutants!

Media Player Classic : pixel shaders pour les débutants!

Posté par : dante - Le Jeudi 29 Octobre 2009 à 10:03

Déjà première étape, posséder notre cher lecteur qui est totaltement gratuit et trés facile à trouver, mais bon je suis sympa, voilà l'URL sur clubic : http://www.clubic.com/telecharger-fiche11019-media-player-classic.html

 

Il faut avant tout activer les shaders. Pour cela il faut changer dans les options de sortie vidéo, le filtre vidéo à utiliser est le VMR9 (Video Mixing Rendered) qui supporte les shaders, et sélectionner DirectX9.

 

 

Ensuite, on peut apercevoir que dans "Play", le menu "Shaders" se dégrise ! Bien, trouvez maintenant une vidéo, et mettez la en lecture. Ensuite, ouvrez l'éditeur de shaders, enfin, le semblant d'éditeur. En effet, la seule chose qu'il fait c'est vous dire si il y a une erreur, et vous donner la ligne !

 

 

 

Voilà donc les fameux shaders, le langage est le HLSL (high level shader language), un langage qui ressemble fortement au C, et qui est supporte par Microsoft (d'où DirectX). Le but ici n'est pas de faire un cours sur le HLSL, tout simplement parce que je n'en ai pas le niveau, mais de faire découvrir ce qu'on peut faire en une ligne ou deux de code. Lorsque des données brutes sont envoyées à la carte graphique pour être rendu à l'écran, il y a deux principales étapes effectuées par la CG : le vertex shaders et le pixel shaders. Nous, c'est ce dernier qui nous intéresse, il permet le traitement des textures au pixel prés. On peut alors modifier la couleur ou l'apha de chacun d'entre eux.

 

 Voici la structure général du script :

 

// Déclaration des globales, ce sont des variables qui sont transmises par MPC

sampler s0 : register(s0);   // la structure de l'image (donc tous les px)
float4 p0 : register(c0);     // largeur, hauteur, compteur, et horloge

// Boucle principal qui va traiter chaque pixel, tex c'est la position UV (donc entre 0 et 1) du px courant
float4 main(float2 tex : TEXCOORD0) : COLOR
{

// Conversion du pixel en valeur RGBA   
    float4 c0 = tex2D(s0, tex);
   

// On va ici noircir dans le sens horizontal l'image (gauche vers droite)
    c0 = float4(tex.x* c0.r, tex.x* c0.g, tex.x* c0.b, tex.x* c0.a);
   

// On renvoie la nouvelle couleur du px
    return c0;
}

 

 Résultat :

 

 Pour passer l'image en niveau de gris il faut multiplier la couleur du pixel par la formule suivante :

Rouge * 0.3 + Vert * 0.59 + Bleu * 0.11

 

sampler s0 : register(s0);  
float4 main(float2 tex : TEXCOORD0) : COLOR
{
    float4 c0 = tex2D(s0, tex);
    c0.rgb = c0.r * 0.3 + c0.g * 0.59 + c0.b * 0.11;   
    return c0;
}

 

 

 

Voilà, amusez vous maintenant !

 

 

 



Article précédant :
Un objet qui se dirige vers un point






Commentaires 4 commentaires

Seb le 29 Octobre 2009 à 11:03

Héhé excellent, je ne savais pas qu'on pouvait s'amuser avec les shaders dans Media Player Classic, c'est un excellent exercice pour s'essayer au HLSL de manière concrète et visible. A la limité je publierai un dossier là dessus j'ai codé un peu en HLSL l'année dernière mais ça s'orientait plus vers les effets en 3D.

dante le 29 Octobre 2009 à 11:30

Ben si tu as le temps :)
Mais effectivement c'est trés facile du coup pour tester quelques effets rapidement !

Seb le 29 Octobre 2009 à 14:37

On attaque les projets Game Maker aujourd'hui donc je ne suis pas sûr d'avoir beaucoup de temps ces prochaines semaines ^^

Mais le document synthétique est déjà prêt, au pire je détaillerais le tuto plus tard si ça intéresse vraiment des gens de débuter avec ces exemples.

rom le 30 Décembre 2009 à 0:21

bonjour, mes personnages dans mes videos ont un visage bleu, je n'arrive pas à y remédier, je vous serais reconnaissant de bien vouloir m'aider
merci



.laisser un commentaire




Codes html interdits. Les liens sont convertis automatiquement.

Réalisation

Code & Design : Sébastien Cardona

Page générée en : 0.030506s