Hello,
i want to pass a uniform vec2 array as convolution mask to a image processing shader. A former post says I should use setElement.. here my trial (it doesent work ;) ):

osg:
   Uniform* filter= new Uniform();
filter->setName("kernel"); filter->setElement(0, Vec2(-1,1));
   ...
   filter->setElement(8, Vec2(1,-1));
   meanStateSet->addUniform(filter);

shader:
   uniform sampler2DRect inTex;
   uniform vec2 kernel[9];
   void main(){
       int i;    float sum= 0.0;
       for (i = 0; i < 9; ++i){
           sum+= (texture2DRect(inTex, gl_TexCoord[0].st + kernel[i])).r;
       }
       gl_FragColor = (sum/9);
   }

when i change kernel[i] to (for instance) vec2(0,0) it works...

any ideas?
what do i forget to set?

cheers,
Fabian
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to