diff options
author | Hans-Christoph Steiner <eighthave@users.sourceforge.net> | 2012-11-02 14:25:59 +0000 |
---|---|---|
committer | Hans-Christoph Steiner <eighthave@users.sourceforge.net> | 2012-11-02 14:25:59 +0000 |
commit | 2c0b722536a4ec2f723c289b695b983741c678f8 (patch) | |
tree | 650e06f5837b7995a60bf51b47f5ec9de4ee9ebe /packages/noncvs/windows/extra/Gem/examples/12.multi_screen_projection/soft_edge.frag | |
parent | 69101e6e7eb00acaee619d4aa815d4a85925cc60 (diff) |
commit windows binaries from old rsync auto-build setup, including Gem 0.93.1
svn path=/trunk/; revision=16520
Diffstat (limited to 'packages/noncvs/windows/extra/Gem/examples/12.multi_screen_projection/soft_edge.frag')
-rw-r--r-- | packages/noncvs/windows/extra/Gem/examples/12.multi_screen_projection/soft_edge.frag | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/packages/noncvs/windows/extra/Gem/examples/12.multi_screen_projection/soft_edge.frag b/packages/noncvs/windows/extra/Gem/examples/12.multi_screen_projection/soft_edge.frag new file mode 100644 index 00000000..43a8e6bd --- /dev/null +++ b/packages/noncvs/windows/extra/Gem/examples/12.multi_screen_projection/soft_edge.frag @@ -0,0 +1,59 @@ +// Cyrille Henry 2010 + +//#extension GL_ARB_texture_rectangle : enable +//uniform sampler2DRect MyTex; +uniform sampler2D MyTex; +uniform vec2 overlap, geometry_screen, geometry_computer; + +void main (void) +{ +// FSAA + +// change coord from computer matrix to screen matrice + vec2 coord = (gl_TextureMatrix[0] * gl_TexCoord[0]).st; + vec2 pos_new = coord; + pos_new *= geometry_computer; + float screen_num = floor(pos_new.x)+floor(pos_new.y)*geometry_computer.x; // number of the screen + pos_new = fract(pos_new); // coord in 1 screen (from 0 to 1) + pos_new.x += fract(screen_num/geometry_screen.x)*geometry_screen.x; + pos_new.y += floor(screen_num/geometry_screen.x); + pos_new /= geometry_screen; + +// compute position regarding to the overlap + vec2 pos = pos_new; + pos *= geometry_screen; + + vec2 pos_over = fract(pos); + pos_over *= overlap; + pos_over -= overlap/2.; + pos += pos_over; + pos += overlap/2.; + pos /= geometry_screen + overlap; + vec4 color = texture2D(MyTex, pos); + +// compute fade on Top and Right + vec2 black = pos_new; + black *= geometry_screen; + black = fract(black); + black *= vec2(1.)+overlap; + black -= 1.; + black = max(black,0.)/max(overlap,1.); + if ( floor(pos_new.x*geometry_screen.x) < geometry_screen.x-1. ) + color *= (1.-black.x); + if ( floor(pos_new.y*geometry_screen.y) < geometry_screen.y-1. ) + color *= (1.-black.y); + +// compute fade on Left and bottom + black = pos_new; + black *= geometry_screen; + black = fract(black); + black *= vec2(1.)+overlap; + black -= overlap; + black = max(-black,0.)/max(overlap,1.); + if ( floor(pos_new.x*geometry_screen.x) > 0. ) + color *= (1.-black.x); + if ( floor(pos_new.y*geometry_screen.y) > 0. ) + color *= (1.-black.y); + + gl_FragColor = color; +} |