[PD] glsl effect chaining

marius schebella marius.schebella at gmail.com
Sat Mar 22 01:23:06 CET 2008


yes, but...
it works, but you have to think about a lot of things and when it really 
comes to chaining separate modules together it really gets complicated.
your gemchain has to look like this:

[gemhead 49]
  |
[shader]
  |
[gemframbuffer]
  |
[translateXYZ 0 0 -4]
  |
[some...texture]
  |
[square 4]

always give the gemhead a number smaller than the consecutive gemheads, 
so that the textures are created before they are used in the next gemchain.
in the gemchain itself the shader has to be placed *before* the framebuffer!
gemframebuffer always "resets" the viewpoint, so you have to translate 
everything into negative z to make it visible.
texture needs mode 1 on some cards and mode 0 on other cards, this also 
has to be the same as in the shader (sample2D v. sample2DRect).
the geo has to correlate with the translate and cover the whole range, 
otherwise you wil crop the image or it will be too small. gemframebuffer 
also takes an argument "dim" that will affect the quality.

if you have all that then you can send the right outlet of 
gemframebuffer (which is a number) to another texture right inlet and 
another shader can use that.

this is a little complicated but will work for a shader chain patch.

now when you think about a modular shader system, where you can just add 
shader abstraction into a chain, it gets much much more complicated. 
because when you have a combination like

[shader]
  |
[pix_image]
  |
[texture]

then the right inlet of texture can get any number, the shader will 
always take the image instead, so you cannot do your usual chains, but 
will have to refer an image from somewhere else.
it is also difficult to debug, because the gemframebuffer will not 
output a texture...
and then - if you use multiple shader modules - you also have to change 
the renderorderof the gemhead. with [set 40( or something, but how do 
you know at which position you use the shader module??...

a solution for this would be to turn gemheads off and only trigger them 
by "bang" messages.

ok, the only thing missing right now is a patch showing how this works 
in practice. I will do my best...

marius.


cyrille henry wrote:
> 
> Pepa Henzl a écrit :
>> Hello,
>> I've just started with glsl languague and Gem this week. Everything works 
>> fine, but i'd like to know what to do if i want to apply multiple effects on 
>> a texture.
>> Is it possible to render pix data to the texture, instead of current 
>> framebuffer window,  and use it for further processing?
> yes.
> you need to render in a frambuffer, and then use it as a texture.
> the gemframebuffer is almost undocumented, but there is an exemple in exemple/07.texture/10.frambuffer.
> 
> i also rembermber that i send a patch on this list (or gem-dev) regardinf the use of glsl + framebuffer.
> 
> cyrille
> 
> 
>> Thanks,
>> pcp.
>>
>> _______________________________________________
>> PD-list at iem.at mailing list
>> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
>>
>>
> 
> _______________________________________________
> PD-list at iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
> 





More information about the Pd-list mailing list