From 2c0b722536a4ec2f723c289b695b983741c678f8 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 2 Nov 2012 14:25:59 +0000 Subject: commit windows binaries from old rsync auto-build setup, including Gem 0.93.1 svn path=/trunk/; revision=16520 --- .../12.multi_screen_projection/soft_edge.frag | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 packages/noncvs/windows/extra/Gem/examples/12.multi_screen_projection/soft_edge.frag (limited to 'packages/noncvs/windows/extra/Gem/examples/12.multi_screen_projection/soft_edge.frag') 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; +} -- cgit v1.2.1