hello,
if this is the best solution for the future of Gem, i'm ok to manually check
all my shaders and adapt them like you describe.
i'll have a look next week...
c
IOhannes m zmoelnig a écrit :
cyrille henry wrote:
hello,
i just did an svn update. lots of file have changed. (last update was 21
december)
after building gem, i realized that few shaders example did not work
any-more.
it look to be related with rectangular texture : if you open shader
example 1 : simple texture : it work ok with non rectangular texture
(but the texture is upside down), but it does not work at all in
rectangular mode...
hmm, the solution is "simple": you have to pre-multiply the texture
matrix with the current tex-coords.
something like
<diff>
Index: texture_rect.frag
===================================================================
--- texture_rect.frag (Revision 3085)
+++ texture_rect.frag (Arbeitskopie)
@@ -7,8 +7,7 @@
void main (void)
{
-vec4 color = texture2DRect(MyTex, gl_TexCoord[0].st);
-// vec4 color = texture2D(MyTex, gl_TexCoord[0].st);
+ vec4 color = texture2DRect(MyTex, (gl_TextureMatrix[0] *
gl_TexCoord[0]).st);
color *= B+1.; // brightness
vec4 gray = vec4(dot(color.rgb,vec3(0.2125, 0.7154, 0.0721)));
color = mix(gray, color, C+1.); // contrast
</diff>
now i know that this breaks about each shader written so far for Gem.
the change is rather trivial, but it has to be done for each shader (to
fix the upside down issue, it has also to be done for normalized
(sampler2D) textures.
the change in the shader code should (to the best of my knowledge) be
compatible with older versions of Gem.
i don't see a way how this change could be automated (without parsing
the shader and dynamically modifying it, which i would rather not :-)
the alternative would be to go back, which is also a bit problematic, as
the change did fix inconsistencies and bugs between various platforms.
does anybody have any other ideas how this could be handled with the
least annoyance for everybody?
fmgasdr
IOhannes
PS: a hackish solution could also be the use of [pix_coordinate] to
explicitely set the texture coordinates to "rectangular" values. this
has the main drawback that it only works for the most primitive Geos.
personally, i would not really recommend this, but i mention it for
completeness' sake.
_______________________________________________
GEM-dev mailing list
[email protected]
http://lists.puredata.info/listinfo/gem-dev