hmm, sometimes writing emails brings new ideas. I replaced the two floats with one vec2 pass_other and that works. marius.
----- uniform sampler2D texture; varying vec2 texcoord0; uniform vec4 hithresh; // hi and lo threshold uniform vec4 lothresh; uniform vec2 pass_other; void main() { vec4 A = texture2D(texture, texcoord0); A.a = pass_other[0]; if ((A.r >= hithresh.r) || (A.r <= lothresh.r)) { A.a = pass_other[1]; } gl_FragColor = A; } ------------ marius schebella wrote: > hi, > is it possible to ask shader related questions on the pd list? I am > trying to write pix_alpha as a shader, but for now I have problems with > the glsl code. (maybe you can also point me to a shader forum or mailing > list that you know is good?) > I have a fragment shader, which is not working, and I don't know why. > the problem is that "A.a = other" does not set the value correct (it > always sets 0). > If I write A.a = 0.5 for example, then it is working. > The variables are passed correctly, all other variables work too, so I > think it is really a problem of how glsl works, and an error in the > code. what it should do is when the red pixel value is within a certain > range, the alpha value should be set to the pass value, and if it is > outside, it should be set to the other value. (similar to pix_alpha, but > only with red at the moment) > thanks, > marius. > > --------- > // red pix alpha > > uniform sampler2D texture; > varying vec2 texcoord0; > > uniform vec4 hithresh; // hi and lo threshold > uniform vec4 lothresh; > uniform float pass; > uniform float other; > > void main() > { > vec4 A = texture2D(texture, texcoord0); > A.a = pass; > if ((A.r >= hithresh.r) || (A.r <= lothresh.r)) > { > A.a = other; > } > gl_FragColor = A; > } > _______________________________________________ PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list