Not tested in GEM but this is working GLSL code from ATI for a type of Gaussian effect:
vertex shader:
varying vec2 texCoordM; varying vec2 texCoordB0; varying vec2 texCoordF0; varying vec2 texCoordB1; varying vec2 texCoordF1; varying vec2 texCoordB2; varying vec2 texCoordF2;
void main(){ gl_Position = gl_Vertex; vec2 texCoord = gl_MultiTexCoord0.xy;
vec2 invSize = vec2 (0.99);
texCoordM = texCoord; texCoordB0 = texCoord - invSize; texCoordF0 = texCoord + invSize; texCoordB1 = texCoord - invSize * 2.0; texCoordF1 = texCoord + invSize * 2.0; texCoordB2 = texCoord - invSize * 3.0; texCoordF2 = texCoord + invSize * 3.0; }
fragment shader:
uniform sampler2D Image;
varying vec2 texCoordM; varying vec2 texCoordB0; varying vec2 texCoordF0; varying vec2 texCoordB1; varying vec2 texCoordF1; varying vec2 texCoordB2; varying vec2 texCoordF2;
void main(){ vec4 sampleM = texture2D(Image, texCoordM); vec4 sampleB0 = texture2D(Image, texCoordB0); vec4 sampleF0 = texture2D(Image, texCoordF0); vec4 sampleB1 = texture2D(Image, texCoordB1); vec4 sampleF1 = texture2D(Image, texCoordF1); vec4 sampleB2 = texture2D(Image, texCoordB2); vec4 sampleF2 = texture2D(Image, texCoordF2);
gl_FragColor = 0.1752 * sampleM + 0.1658 * (sampleB0 + sampleF0) + 0.1403 * (sampleB1 + sampleF1) + 0.1063 * (sampleB2 + sampleF2); }
Post back a working patch if you get one going. Good luck!
cgc
On 2/16/06, B. Bogart ben@ekran.org wrote:
Hey all,
Now that I have Gem actually compiling again on my linux machine I wonder if my dream of a realtime blur could be a reality with pixelshaders. :) Anyhow know of some extreme blurring I can apply as a pixelshader to a texture loaded in gem?
Thanks Johannes for the help with the Gem compile. I remember why I needed to recompile it, to test the v4l2 support. I'll do that today and report back.
.b.
GEM-dev mailing list GEM-dev@iem.at http://lists.puredata.info/listinfo/gem-dev