#N canvas 443 115 1107 668 10;
#X declare -lib Gem;
#X msg 17 131 create \, 1;
#X msg 30 154 0 \, destroy;
#X obj 169 205 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 362 206 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 561 207 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 160 467 translateXYZ -3 0 0;
#X obj 353 466 translateXYZ -1 0 0;
#X obj 552 467 translateXYZ 1 0 0;
#X obj 756 208 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 747 468 translateXYZ 3 0 0;
#X floatatom 199 158 5 0 0 0 - - - 0;
#X msg 199 177 dZ \$1;
#X obj 18 470 s shaders;
#X obj 399 214 r shaders;
#X obj 598 216 r shaders;
#X obj 793 217 r shaders;
#X obj 160 546 rectangle 1 0.75;
#X obj 353 547 rectangle 1 0.75;
#X obj 552 548 rectangle 1 0.75;
#X obj 747 549 rectangle 1 0.75;
#X obj 160 503 translateXYZ 0 0 0;
#X obj 201 486 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 0.12 256;
#X obj 259 486 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 -0.06 256;
#X obj 353 505 translateXYZ 0 0 0;
#X obj 394 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 0 256;
#X obj 452 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 0 256;
#X obj 552 506 translateXYZ 0 0 0;
#X obj 593 489 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 -0.11 256;
#X obj 651 489 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 -0.03 256;
#X obj 747 505 translateXYZ 0 0 0;
#X obj 788 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 -0.18 256;
#X obj 846 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 -0.05 256;
#X obj 160 11 gemhead 10;
#X obj 353 11 gemhead 20;
#X obj 552 11 gemhead 30;
#X obj 747 11 gemhead 40;
#X obj 160 53 alpha;
#X obj 353 53 alpha;
#X obj 552 53 alpha;
#X obj 747 53 alpha;
#X msg 276 183 ShadeL \$1;
#X obj 199 115 r init_shader;
#X obj 276 162 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 0 256;
#X msg 447 183 ShadeL \$1;
#X obj 447 162 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 39 256;
#X msg 634 185 ShadeL \$1;
#X obj 634 164 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 35 256;
#X msg 831 183 ShadeL \$1;
#X obj 831 162 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 23 256;
#X msg 212 526 -1;
#X msg 269 525 -0.75;
#X text 163 526 invert;
#X msg 407 525 -1;
#X msg 464 524 -0.75;
#X text 358 525 invert;
#X msg 606 528 -1;
#X msg 663 527 -0.75;
#X text 557 528 invert;
#X msg 801 529 -1;
#X msg 858 528 -0.75;
#X text 752 529 invert;
#X obj 160 32 scaleXYZ 4 4 1;
#X obj 353 32 scaleXYZ 4 4 1;
#X obj 552 32 scaleXYZ 4 4 1;
#X obj 747 32 scaleXYZ 4 4 1;
#X text 21 588 This patch allow multiples images to be assembled in order to create a panoramic image.;
#X text 20 615 A shader distord the image to correct distance distortion \, and allow a fade between 2 images;
#X text 17 642 "dz" depend on the angles between images.;
#X text 462 619 copyright cyrille Henry and iem.;
#X text 463 636 This development was supported by the COMEDIA project;
#X floatatom 18 424 5 0 0 0 - - - 0;
#X msg 18 443 dZ \$1;
#X obj 18 381 r init_shader;
#X msg 18 403 1.62;
#X msg 199 137 1.38;
#X obj 964 623 declare -lib Gem;
#X obj 160 243 glsl shader/panoramique;
#X obj 19 312 loadbang;
#X obj 19 335 s init_shader;
#X obj 353 243 glsl shader/panoramique;
#X obj 552 244 glsl shader/panoramique;
#X obj 747 245 glsl shader/panoramique;
#N canvas 735 461 450 300 getdimen 0;
#X obj 49 37 inlet;
#X obj 49 60 pix_info -m;
#X obj 49 83 outlet;
#X obj 140 60 route dimen;
#X obj 140 106 outlet;
#X msg 140 83 sizeX \$1 \, sizeY \$2;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 3 0;
#X connect 3 0 5 0;
#X connect 5 0 4 0;
#X restore 160 357 pd getdimen;
#N canvas 735 461 450 300 getdimen 0;
#X obj 49 37 inlet;
#X obj 49 60 pix_info -m;
#X obj 49 83 outlet;
#X obj 140 60 route dimen;
#X obj 140 106 outlet;
#X msg 140 83 sizeX \$1 \, sizeY \$2;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 3 0;
#X connect 3 0 5 0;
#X connect 5 0 4 0;
#X restore 552 359 pd getdimen;
#N canvas 735 461 450 300 getdimen 0;
#X obj 49 37 inlet;
#X obj 49 60 pix_info -m;
#X obj 49 83 outlet;
#X obj 140 60 route dimen;
#X obj 140 106 outlet;
#X msg 140 83 sizeX \$1 \, sizeY \$2;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 3 0;
#X connect 3 0 5 0;
#X connect 5 0 4 0;
#X restore 747 360 pd getdimen;
#N canvas 735 461 450 300 getdimen 0;
#X obj 49 37 inlet;
#X obj 49 60 pix_info -m;
#X obj 49 83 outlet;
#X obj 140 60 route dimen;
#X obj 140 106 outlet;
#X msg 140 83 sizeX \$1 \, sizeY \$2;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 3 0;
#X connect 3 0 5 0;
#X connect 5 0 4 0;
#X restore 353 358 pd getdimen;
#X obj 160 308 pix_image \; thread 0 \; open ../data/cam1.jpg;
#X obj 353 309 pix_image \; thread 0 \; open ../data/cam2.jpg;
#X obj 552 310 pix_image \; thread 0 \; open ../data/cam3.jpg;
#X obj 747 311 pix_image \; thread 0 \; open ../data/cam4.jpg;
#X obj 160 425 pix_texture \; rectangle 1;
#X obj 353 426 pix_texture \; rectangle 1;
#X obj 552 427 pix_texture \; rectangle 1;
#X obj 747 428 pix_texture \; rectangle 1;
#X obj 17 258 gemwin \; dimen 1024 256;
#X connect 0 0 94 0;
#X connect 1 0 94 0;
#X connect 2 0 76 0;
#X connect 3 0 79 0;
#X connect 4 0 80 0;
#X connect 5 0 20 0;
#X connect 6 0 23 0;
#X connect 7 0 26 0;
#X connect 8 0 81 0;
#X connect 9 0 29 0;
#X connect 10 0 11 0;
#X connect 11 0 76 1;
#X connect 13 0 79 1;
#X connect 14 0 80 1;
#X connect 15 0 81 1;
#X connect 20 0 16 0;
#X connect 21 0 20 1;
#X connect 22 0 20 2;
#X connect 23 0 17 0;
#X connect 24 0 23 1;
#X connect 25 0 23 2;
#X connect 26 0 18 0;
#X connect 27 0 26 1;
#X connect 28 0 26 2;
#X connect 29 0 19 0;
#X connect 30 0 29 1;
#X connect 31 0 29 2;
#X connect 32 0 61 0;
#X connect 33 0 62 0;
#X connect 34 0 63 0;
#X connect 35 0 64 0;
#X connect 36 0 76 0;
#X connect 37 0 79 0;
#X connect 38 0 80 0;
#X connect 39 0 81 0;
#X connect 40 0 76 1;
#X connect 41 0 74 0;
#X connect 42 0 40 0;
#X connect 43 0 79 1;
#X connect 44 0 43 0;
#X connect 45 0 80 1;
#X connect 46 0 45 0;
#X connect 47 0 81 1;
#X connect 48 0 47 0;
#X connect 49 0 16 1;
#X connect 50 0 16 2;
#X connect 52 0 17 1;
#X connect 53 0 17 2;
#X connect 55 0 18 1;
#X connect 56 0 18 2;
#X connect 58 0 19 1;
#X connect 59 0 19 2;
#X connect 61 0 36 0;
#X connect 62 0 37 0;
#X connect 63 0 38 0;
#X connect 64 0 39 0;
#X connect 70 0 71 0;
#X connect 71 0 12 0;
#X connect 72 0 73 0;
#X connect 73 0 70 0;
#X connect 74 0 10 0;
#X connect 76 0 86 0;
#X connect 77 0 78 0;
#X connect 79 0 87 0;
#X connect 80 0 88 0;
#X connect 81 0 89 0;
#X connect 82 0 90 0;
#X connect 82 1 76 1;
#X connect 83 0 92 0;
#X connect 83 1 80 1;
#X connect 84 0 93 0;
#X connect 84 1 81 1;
#X connect 85 0 91 0;
#X connect 85 1 79 1;
#X connect 86 0 82 0;
#X connect 87 0 85 0;
#X connect 88 0 83 0;
#X connect 89 0 84 0;
#X connect 90 0 5 0;
#X connect 91 0 6 0;
#X connect 92 0 7 0;
#X connect 93 0 9 0;
