On the cycling74 webpage there is an interesting article about writing shaders for jitter:
http://cycling74.com/story/2007/5/23/181113/507
is there a similar function available for GEM? Has anyone had experience with doing this?
Cypod a écrit :
you can find lot's more (and better) information about glsl with any search engine.
is there a similar function available for GEM?
yes. see gem/help/2.advence/18.gl_shading_language.pd
Has anyone had experience with doing this?
yes. shader is the best way to do very complex pixel processing without any CPU load.
cyrille
GEM is a bit easier to deal with for shaders since there is no need to do any specific wrapper. Any ARB_ vertex or fragment shader and any GLSL shader you find on the web can work in GEM without modification. In some cases you might need to change something in the shader text to deal with rectangle vs 2D textures.
On 6/16/07, Cypod cypod25@gmail.com wrote:
Hi all ! The Toon.vert and Toon.frag shaders don't seem to work quite well here. I only get some kind of darker or lighter grey depending on the value of the "Phong" variable I set it to have. I am using Pd-extended 0.39-2 test 5 on Ubuntu Linux Intel. Gem is 0.91-cvs compiled on Mar 16 2007. Should I generate something any better ?
Anyone has an other GLSL shader to suggest to try it with ?
Thanks !!
a
2007/6/16, chris clepper cgclepper@gmail.com:
hello,
Alexandre Quessy a écrit :
this is exactly what the toon shader is aiming to do. look at it's code to undersant why.
Anyone has an other GLSL shader to suggest to try it with ?
yes, google has a lot.
i have a few other exemple on my computer, tell me if you're looking for some specific stuf.
cyrille
Ooop please send any elementary examples of these things. I got confused by the Gem docs (they don't explain OpenGL as thoroughly as the vanilla Pd-docs explain DSP).
~Kyle
On 6/17/07, cyrille henry cyrille.henry@la-kitchen.fr wrote:
hello,
Kyle Klipowicz a écrit :
Ooop please send any elementary examples of these things.
i post a few very diferents shader and the pd patch to use them here :
http://drpichon.free.fr/gem_glsl_ch_200070617.zip
Gem doc aim is to explain gem specific stuf. but in order to use Gem, you also need a good openGL book. (you can find lot's of them)
cyrille
On Jun 17, 2007, at 1:14 PM, cyrille henry wrote:
Ok, no rush on getting them into CVS. I was thinking even that it
might make sense to make abstractions that wrap the Gem glsl shader
loading stuff so people could just use them as Pd objects without
knowing the details.
I think this would work well in the "externals" section, maybe as
it's own lib, with the abstractions and the shaders. And yes,
licenses are important.
Also, look for some serious shader action from vade, who's mostly
using Jitter these days. Thanks to your examples, I think he'll
start testing the shaders that he's writing with Gem in addition to
Jitter (maybe he'll chime in here on this thread).
.hc
All mankind is of one author, and is one volume; when one man dies,
one chapter is not torn out of the book, but translated into a better
language; and every chapter must be so translated.... -John Donne
Yes, please Vade, chime in!
~Kyle
---------- Forwarded message ---------- From: Hans-Christoph Steiner hans@eds.org Date: Jun 17, 2007 1:45 PM Subject: Re: [PD] [GEM]: GL Shader Language To: cyrille henry cyrille.henry@la-kitchen.fr Cc: Kyle Klipowicz kyleklip@gmail.com, pd-list@iem.at, Alexandre Quessy listes@sourcelibre.com
On Jun 17, 2007, at 1:14 PM, cyrille henry wrote:
Ok, no rush on getting them into CVS. I was thinking even that it might make sense to make abstractions that wrap the Gem glsl shader loading stuff so people could just use them as Pd objects without knowing the details.
I think this would work well in the "externals" section, maybe as it's own lib, with the abstractions and the shaders. And yes, licenses are important.
Also, look for some serious shader action from vade, who's mostly using Jitter these days. Thanks to your examples, I think he'll start testing the shaders that he's writing with Gem in addition to Jitter (maybe he'll chime in here on this thread).
.hc
All mankind is of one author, and is one volume; when one man dies, one chapter is not torn out of the book, but translated into a better language; and every chapter must be so translated.... -John Donne
Eh Jack ! Very nice examples, yes. Cyrille, do you think that one should understand C programming in order to use Pd? I don't. Of course, its low-level orientation makes it perfect for someone to learn lower level stuff.
Anyways, I added an abstraction for shaders in the PdMtlAbstractions. See https://devel.goto10.org/pdmtl/browser/trunk/pdmtl/gems
a
2007/6/19, jack@rybn.org jack@rybn.org:
Hi Jack ! Yes. This one-line is very helpful. I'd like to port it to the .pdsettings, but it needs to be parsed and processed, so this script still uses the .pdrc file. :)
a
2007/6/20, jack@rybn.org jack@rybn.org:
Alexandre Quessy a écrit :
i don't see your point here. glsl programming is not very diferent from C. So, understanding C is good for learning glsl. but you don't nead glsl in order to use pd. you just need glsl if you want to do very heavy pixel processing at 50fps / 1024x768 without using any CPU time by exemple.
cut / paste the help file is (for me) easier to use, as i usually put the shader in in the same directory as my patch, so i don't nead to provide the full path for the shader. (and the patch could run on other computer without changing all path). is there a solution for an abstraction to know the directory of it's parent patch?
cyrille
HI Cyrille and others.
I modified the abstraction to make opening the two files easier. It uses file/parentfolder from the PdMtlAbstractions. (try it !! It answers your question)
For the C programming and such, I just meant that it is nice if we can tend to make Pd easier to use for people that are not that much used to advanced programming. A good documentation and a nice structure helps a lot...
a
2007/6/23, cyrille henry cyrille.henry@la-kitchen.fr:
On 6/26/07, cyrille henry cyrille.henry@la-kitchen.fr wrote:
i strongly aggre. and from my experience, a good documentation is 80% of the job.
Me too! So much of Pd would be unuseable if the documentation weren't there. Thanks to all who include it!
~Kyle
I am hoping to learn more about programming by using PD, but it would also be nice to crank out some good looking shaders in a timely manner
On 6/25/07, Alexandre Quessy listes@sourcelibre.com wrote:
What books or webpages are out there for learning how to write glsl shaders, for use in 3D?
http://en.wikibooks.org/wiki/Programming:OpenGL
Has anyone read this one OpenGL(R) Shading Language (2nd Edition) http://tinyurl.com/ysun6z
Are there any third party applications for writing glsl shaders that can be easially ported over to PD?
On 6/26/07, Cypod cypod25@gmail.com wrote:
Cypod a écrit :
http://www.glprogramming.com/red/
Has anyone read this one OpenGL(R) Shading Language (2nd Edition) http://tinyurl.com/ysun6z
-> yes, this is my reference book.
Are there any third party applications for writing glsl shaders that can be easially ported over to PD?
you don't need anything more than a text editor to write a shader.
cyrille
On 6/26/07, cyrille henry cyrille.henry@la-kitchen.fr wrote:
The online free versions are many revisions behind. That is only version 1.1 of GL which does not cover shaders. It is still a good reference for basic GL though.
There are apps like ShaderBuilder on OSX and ATI's RenderMonkey (awful name), but GEM is more flexible. You can modify Cyrille's patches to use pix_movie or a variety of geometry. Write the shader in the text editor and reload it in GEM to see the update. You will even get error codes in the Pd console if you do something wrong.
On 6/30/07, Hans-Christoph Steiner hans@eds.org wrote:
Do you know of any example patches for varying geometries using shaders in Gem? I'd like to see that kind of stuff.
The shaders Cyrille posted includes one that deforms geometry. I think I have one that does the same as the [newWave] object but that requires uploading a mesh using a vertex_array object or a premade model.
With so much interest in shaders we will have to consider some objects to facilitate getting large amounts of geometry up to the GPU.
chris clepper a écrit :
you mean that the physical model is computed on the GPU? i'm reaaly interested to see it. my physical model on the GPU are quite limited (like the wave exemple i send).
With so much interest in shaders we will have to consider some objects to facilitate getting large amounts of geometry up to the GPU.
i think a [mesh x y] object that create a x * y flat mesh would be a good start.
i'll have time to work on it in 1 or 2 week.
cyrille
Hi. Hans pointed me to this thread off list. Im definitely interested
in porting some of my shaders to GEM, and making some easy to use
abstractions that you can plop down in the GEM processing chain.
I actually emailed Chris Clepper off list earlier in the week
regarding this. It looks like, however, that GEM and Jitter handle
some things slightly differently, enough so where I may have to
maintain more than one version of the shader code for both
environments, or, maybe im just dont get whats going on. Either way
im going to take a closer look at this friday. My goal is to have
interchangeable shaders (Jitter uses an XML file to describe the
parameters and declare what vertex and fragment program is loaded,
but besides that 'jxs' file, id like the .vert and the .frag to be
basically interchangeable). Id also include some basic abstractions
for wrapping the shaders so you could just drop a
[v001.duotone] into the gem pipeline and get two tone processing for
your textures. etc etc.
Once I get a basic set of shaders done that I am happy with, ill
definitely be releasing them to the GEM community as well. Im also
pretty new with this shader stuff, so expect some hiccups.
Right now the shaders I am working on are:
Mixers : A/B with blendmodes like overlay/hardlight etc Mixers : A/B/C where C is mask based on luma or alpha
Effects: Black and White Texture clamping (makes cool lines in the middle of the image) Color Separator (separate r g b planes in x/y) Dent Duotone Exposure Fader (fade to black/white, nice at the end of a processing chain) Light Tunnel Pinch Posterize Shred (interesting pattern/repetition creation) Stretch Threshold (high contrast colors) Twirl
and some more
3D shaders
Vertex noise
Normal Map
Sin distortion
Because Jitter has a library of already created shaders, I may port
some of those over so GEM folks have them as well, like saturation,
contrast, brightness, and so on. The basics.
Peace :)
On Jun 26, 2007, at 3:09 PM, Cypod wrote:
v a d e //
www.vade.info abstrakt.vade.info
Hi Vade ! (I met you at NIME2007 right ? ) You could write a little script that take the *.vert and *.frag files, plus the XML header that would be separate, and merge them in order to make a *.jxs file in order to use it in Jitter. The *.vert and *.frag could be used directly into Gem.
Do the shaders included with Jitter allow copying like that ? I know that some come from samples from GPU making companies and are free to use, but some others are made by the Cycling 74' folks, and are not free to distribute with something else than Jitter. We would need to rewrite them... ;)
We can use the PdMtlAbstractions SVN repository for this development. I would be quite happy about this. We could create a folder named gems/shader/* and put everything in there. I am also quite a lot into shaders these days, so I would be happy to see that happening. We would also share a lot of knowledge, you know. We could use the PdMtlAbstractions mailing list or I could create a new one. See http://wiki.dataflow.ws/PdMtlAbstractions and https://devel.goto10.org/pdmtl to know more. There is this abstraction that could be wrapped up : https://devel.goto10.org/pdmtl/browser/trunk/pdmtl/gems/glsl_shader.pd as I am getting quite good at not duplicating code, but using abstractions the right way instead. :) I plan to work a lot with shaders in the next year.
How does it sound ? Anyone else is up for this ?
a
2007/6/27, vade doktorp@mac.com:
This development would be insanely awesome! While I cannot contribute directly, I will be closely following these developments, because I am starting to see how using shaders with the GPU is about the only way to make my poor slow G4 do anything cool!
~Kyle
On 6/28/07, Alexandre Quessy listes@sourcelibre.com wrote:
These are really cool examples, thanks for sending them. They all worked for me, except the fractal one was all black and there was a uniform float maxIterations; error
On 6/17/07, cyrille henry cyrille.henry@la-kitchen.fr wrote:
GemwinMac: width - 500 height - 500 GemWindow Activate err = 0 GEM: Start rendering error: [glsl_vertex]: need to load a shader ... you might be able to track this down from the Find menu. error: [glsl_fragment]: need to load a shader linking: link 1 0 linking: link 1 2 [glsl_program]: vertex shader running in hardware [glsl_program]: fragment shader running in hardware last trackable error:
[glsl_program]: glsl_Program Hardware Info [glsl_program]: ============================ [glsl_program]: [glsl_program]: uvar#0: "zoom": [glsl_program]: GL_FLOAT [glsl_program]: uvar#1: "center": [glsl_program]: GL_FLOAT_VEC2_ARB [glsl_program]: uvar#2: "maxIterations": [glsl_program]: GL_FLOAT [glsl_program]: uvar#3: "gl_ModelViewProjectionMatrix": [glsl_program]: GL_FLOAT_MAT4_ARB
On 6/23/07, cyrille henry cyrille.henry@la-kitchen.fr wrote:
Cypod a écrit :
this is normal (it does the same on my computer).
so, i don't understand why it does not work on your computer. do you have an old graphic card (or old driver)? maybe the loop instruction are not implemented in older hardware.
cyrille
I think that the fractal patch has some initialization settings, and that I'm just putting in the wrong numbers, or there is a texture map that I don't have? By the way what is the difference between the ~ and no ~ frag & vert?
This is my graphics card:
NVIDIA GeForce 6600:
Chipset Model: GeForce 6600 Type: Display Bus: PCI Slot: SLOT-1 VRAM (Total): 256 MB Vendor: nVIDIA (0x10de) Device ID: 0x0141 Revision ID: 0x00a4 ROM Revision: 2149
Displays: DELL 2007FP: Resolution: 1600 x 1200 @ 60 Hz Depth: 32-bit Color Core Image: Supported Main Display: Yes Mirror: Off Online: Yes Quartz Extreme: Supported
On 6/25/07, cyrille henry cyrille.henry@la-kitchen.fr wrote:
Cypod a écrit :
when you start this patch, you don't need to anually initialize anything. just create the gem windows, and load the shader. there is no texture map.
By the way what is the difference between the ~ and no ~ frag & vert?
~ file are save file created by my text editor. you can delete them.
This is my graphics card:
well,
maybe we can ask Chris. he certainly know lot's more than me on this subject.
cyrille