[PD] glsl effect chaining

marius schebella marius.schebella at gmail.com
Sat Mar 22 03:18:23 CET 2008


hi,
I put an example patch for chaining glsl shader modules at
http://www.parasitaere-kapazitaeten.net/Pd/shader_chain
it uses one of cyrille's shader examples.
marius.

marius schebella wrote:
> 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