Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2011-11-18 13:11:49 Shaders.................

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Shaders.................



Ce matin en prenant mon café et en regardant les réponses sur le topic Datamoshing, je me suis dit que ça pourrait être pas mal de se faire une collection de shaders tout prêts à utiliser....
Je reconnais que c'est fastidieux de les adapter un à un, ça prend du temps, c'est chiant, c'est pas beau, y'a beaucoup de fils, mais quand même c'est un sacré outil pour les utilisateurs de GEM...
Donc je remet ici le shader du datamoshing histoire de centraliser tout ça, plus quelques indications pour adapter les shaders glanés ici et là.... ( je précise que ces indications sont un mélange de recherches et d'empirisme donc n'hésitez pas à me reprendre si je me plante ou à me poser des questions si je ne suis pas clair...)
Deux axes de travail ( si vous le voulez bien wink ) :
   
L'adaptations de shaders glanés ici et là;
Une petite ergonomie pour les rendre un peu plus attrayant ( genre le [pix-shader] de guimo mais en mieux avec encore moins de fils au final!);

donc:

Quelques regles de base pour utiliser les shaders sous pure-data : ( et non pas pour les créer )

Deux modes pour l'objet [pix-texture] :
0 = TEXTURE_2D : à utiliser lorsque l'on voit par exemple texture2D dans les fichiers .frag
1 = TEXTURE_RECTANGLE : à utiliser lorsque l'on voit par exemple texture2Drect dans les fichiers .frag, dans ce cas, il faut rajouter "#extension GL_ARB_texture_rectangle : enable" pour le bon fonctionnement du shader.
L'argument 'texunit X' force l'openGL à mettre une certaine addresse à la texture.

les arguments de variables à balancer sur le [glsl_program] sont signifiées dans le fichier .frag par le préfixe "uniform".
On ne peut les envoyer que lorsque la fenêtre GEM est activée.

Dans le .frag :

-sampler2D(rect) nom_de_la_variable ->addresse  texture d'entrée
-vect, float, etc... ça marche pareil...
l'expression varying est une récupération de variable qui doit être déclarée au préalable à partir du fichier .vert

L'objet [pix_texture] dépendant de la chaine contenant le shader n'est pas "initialisé" à proprement parlé (sauf si on intercale un objet [pix_image,film,video etc...];
on peut utiliser [pix-set] pour lui donner les coordonnées de texture ou bien lui addresser d'autres coordonées de textures provenant d'autres objets (lien entre deux [pix-texture] comme j'ai fait dans optical : le rendu sera différent si on met les coordonées de [pix-vidéo] ou [pix-image])

ce que doit contenir le shader :

varying vec2 blablabla;
uniform vec4 blublublu;

void main()
{
   blobloblo;
}


exemple de fichier max (ici ab.hsflow.jsx)



<jittershader name="hsflow">
    <description>
    Basic Horn-Schunke Optical Flow Implementation. Not textbook, but good enough for experimental video...
    </description>
    <param name="lambda" type="float" default="0.">
        <description>noise limiting (lambda) </description>
    </param>
    <param name="scale" type="vec2" default="1. 1.">
        <description>scales the calculation result</description>
    </param>
    <param name="offset" type="vec2" default="1. 1.">
        <description>distance between texel samples for gradient calculation</description>
    </param>
    <param name="tex0" type="int" default="0" />
    <param name="tex1" type="int" default="1" />   
    <language name="glsl" version="1.0">
        <bind param="lambda" program="fp" />
        <bind param="scale" program="fp" />
        <bind param="offset" program="fp" />
        <bind param="tex0" program="fp" />
        <bind param="tex1" program="fp" />
        <program name="vp" type="vertex" source="sh.passthru.xform.vp.glsl" /> =>source du fichier .vert
        <program name="fp" type="fragment">
<![CDATA[

//Andrew Benson - andrewb@cycling74.com
//2009

// texcoords
varying vec2 texcoord0;
varying vec2 texcoord1;

// samplers
uniform sampler2DRect tex0;
uniform sampler2DRect tex1;

//variables
uniform vec2 scale;
uniform vec2 offset;
uniform float lambda;
const vec4 lumcoeff = vec4(0.299,0.587,0.114,0.);

// entry point
void main()
{   
    vec4 a = texture2DRect(tex0, texcoord0);
    vec4 b = texture2DRect(tex1, texcoord1);
    vec2 x1 = vec2(offset.x,0.);
    vec2 y1 = vec2(0.,offset.y);

    //get the difference
    vec4 curdif = b-a;
   
    //calculate the gradient
    vec4 gradx = texture2DRect(tex1, texcoord1+x1)-texture2DRect(tex1, texcoord1-x1);
    gradx += texture2DRect(tex0, texcoord0+x1)-texture2DRect(tex0, texcoord0-x1);
    vec4 grady = texture2DRect(tex1, texcoord1+y1)-texture2DRect(tex1, texcoord1-y1);
    grady += texture2DRect(tex0, texcoord0+y1)-texture2DRect(tex0, texcoord0-y1);
    vec4 gradmag = sqrt((gradx*gradx)+(grady*grady)+vec4(lambda));

    vec4 vx = curdif*(gradx/gradmag);
    float vxd = vx.r;//assumes greyscale
    //format output for flowrepos, out(-x,+x,-y,+y)
    vec2 xout = vec2(max(vxd,0.),abs(min(vxd,0.)))*scale.x;

    vec4 vy = curdif*(grady/gradmag);
    float vyd = vy.r;//assumes greyscale
    //format output for flowrepos, out(-x,+x,-y,+y)
    vec2 yout = vec2(max(vyd,0.),abs(min(vyd,0.)))*scale.y;
   
    gl_FragColor = vec4(xout.xy,yout.xy);
}

         =>fichier .frag
]]>
        </program>
    </language>
</jittershader>

Voilou, y'en a qui sont chauds??? ( olivier?! sad neutral smile big_smile lol )

Dernière modification par nononononono (2011-11-21 10:49:56)

Hors ligne

 

#2 2011-11-18 13:26:44 Re : Shaders.................

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: Shaders.................



S'il y avait des smileys qui sautent sur place sur Codelab, j'en aurais posté une ligne... tongue

Avec Benjamin, nous avions dans l'idée de nous caler une session intensive sur la question avant la fin de l'année...
La victoire n'est qu'une formalité... (mais bon, pour l'instant, je pars de loin...)


L'Amour au Peuple !

Hors ligne

 

#3 2011-11-18 14:08:57 Re : Shaders.................

pob
Exterminator
Lieu: Rennes
Date d'inscription: 2009-10-13
Messages: 765
Site web

Re: Shaders.................



De mémoire, il n'y a pas déjà un site qui récupère plein de codes de shaders ? Il me semble qu''il en a déjà été question. Pas un truc spécifique à Pd.
D'autre part, il a été question de porter une grosse quantité de d'objets de GEM (les pix_*) en shaders pour alléger les rendus au niveau CPU. Il me semble avoir lu ça soit ici, soit sur #dataflow, soit sur la pd-list soit sur le forum "hurleur"... yénéséplou...
Il y a Guido qui peut être chaud aussi pour ce genre de truc si on ne se limite pas à a communauté codelab. Et on peut aussi demander à Cyrille Henry je pense.

Hors ligne

 

#4 2011-11-18 14:47:08 Re : Shaders.................

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Re: Shaders.................



Pour remplacer les [pix-...], il y a pas mal de choses dans les shaders de base de max ( genre convolution qui dépense un max de ressources ), du coup, je me disais si on pouvais faire une abstraction par shader, histoire de pouvoir les utiliser comme un pix ( du genre [glsl-convolve] avec des inlet et des outlets un peu partout!.... )
Sinon si tu veux brancher guido ou cyrille henry ben c'est encore mieux...

Dernière modification par nononononono (2011-11-18 16:38:22)

Hors ligne

 

#5 2011-11-18 15:12:09 Re : Shaders.................

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: Shaders.................



Sur les shaders GLSL en général, et pas spécifiquement pure-data, jetez un oeil là-dessus

http://www.iquilezles.org/apps/shadertoy (avec un nav. qui supporte WebGL)
http://mrdoob.com/projects/glsl_sandbox

et aussi

http://en.wikibooks.org/wiki/GLSL_Programming

et d'autres bookmarks en cherchant glsl ou opengl dans http://codelab.fr/liens smile

Hors ligne

 

#6 2011-11-18 16:51:57 Re : Shaders.................

rep
modérateur
Lieu: Toulouse
Date d'inscription: 2008-02-27
Messages: 1444
Site web

Re: Shaders.................



Y'a aussi le shader de profondeur de champ (<3) qui est juste ENORME :
http://puredata.hurleur.com/sujet-6263-gem-depth-field

Hors ligne

 

#7 2011-11-20 12:42:55 Re : Shaders.................

philippe boisnard
membre
Date d'inscription: 2008-09-23
Messages: 478

Re: Shaders.................



hello
je suis partant.
toujours unpeu débordman, mais ce serait bien en effet de faire un librairie dédié à cela.

Hors ligne

 

#8 2011-11-20 14:21:19 Re : Shaders.................

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Re: Shaders.................



Cool,
Après, un problème se pose, c'est celui de droit d'auteur je suis pas sur que pomper les shaders de Max par exemple soit d'une légalité à toute épreuve...
Qu'en pensez vous?

Hors ligne

 

#9 2011-11-20 18:33:08 Re : Shaders.................

philippe boisnard
membre
Date d'inscription: 2008-09-23
Messages: 478

Re: Shaders.................



ohhhhh lalalalalalalalala .............. c'est vrai que sur max ils sont à donf © .... beurk ... pas de réponse sur ce sujet ?

Hors ligne

 

#10 2011-11-21 10:48:34 Re : Shaders.................

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Re: Shaders.................



Pas de réponse pour ma part, à part si une âme charitable se dévouait pour le leur demander directement?
( Je le ferai bien, mais moi et mon anglais et ma diplomatie légendaire ferait tout capoter dès ma première demande lol )
Ou alors juste en changeant les noms des variables et en changeant le mode (y sont tous en TEXTURE_RECTANGLE; y'a cas les paser en TEXTURE_2D....)

Sinon dans max, j'ai fini les convolutions, fait la moitié des composites, et commencé les colors, j'attend de savoir avant de poster tout ça...

NB; je me suis planté, pas besoin de "#extension GL_ARB_texture_rectangle : enable" tout marche au poil sans rien changer au chimiliblik; je rature de ce pas mon premier post.

Dernière modification par nononononono (2011-11-21 10:51:38)

Hors ligne

 

#11 2011-11-21 16:32:08 Re : Shaders.................

{yv}
membre
Lieu: Berlin
Date d'inscription: 2011-04-01
Messages: 219
Site web

Re: Shaders.................



nononononono a écrit:

Ou alors juste en changeant les noms des variables et en changeant le mode (y sont tous en TEXTURE_RECTANGLE; y'a cas les paser en TEXTURE_2D....

si la license n'est pas compatible tu n'as évidement pas le droit de faire ca...

sinon j'ai vu que certains shaders de max ont une license (ceux dans le dossier shared notament), mais pour les autres je ne sais pas.

y a aussi pas mal de shaders pour max dispo sur le web (avec et/ou sans license):
http://www.huesforalice.com/project/jitter_shader
http://001.vade.info/?page_id=20
etc...

++
_y

Hors ligne

 

#12 2011-11-21 18:12:48 Re : Shaders.................

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Re: Shaders.................



Je m'en doutais un peu... wink
ci joint les shaders open source de ton premier lien {yv}!

Hors ligne

 

#13 2011-11-23 16:47:06 Re : Shaders.................

nononononono
membre
Lieu: Toulouse
Date d'inscription: 2011-02-04
Messages: 614

Re: Shaders.................



par contre sur le deuxième, alors qu'is sont soit disant open source, j'apperçoit :

/*
*
* Andrew Benson - andrewb@cycling74.com
* Copyright 2005 - Cycling '74
*
* GLSL vertex program for doing a standard vertex transform
* with texture coordinates, also passing the texture dimensions to the fragment shader.
*
*/
sadsad

Hors ligne

 

#14 2011-11-24 01:45:35 Re : Shaders.................

pob
Exterminator
Lieu: Rennes
Date d'inscription: 2009-10-13
Messages: 765
Site web

Re: Shaders.................



Grosse discussion shader ce soir au Tetalab avec rep, nonononono et pob. C'est bon à trois on va pouvoir faire des patching circles à Toulouse ! smile

Hors ligne

 

#15 2011-11-24 02:00:10 Re : Shaders.................

rep
modérateur
Lieu: Toulouse
Date d'inscription: 2008-02-27
Messages: 1444
Site web

Re: Shaders.................



éééh ouais ça fait plaisir aussi de voir les gens du forum en vrai smile
Le lien dont je te parlais nonononooooonono :
http://3dshaders.com/home/index.php?opt … ;Itemid=34
avec en autres, en bas de page, tous les exemples de l'orange book.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024