#N canvas 189 90 1107 668 10;
#X declare -lib Gem;
#X msg 17 131 create \, 1;
#X msg 30 154 0 \, destroy;
#X obj 160 445 pix_texture;
#X obj 169 205 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#N canvas 38 51 792 790 glsl 0;
#X obj 78 339 glsl_vertex;
#X msg 32 338 print;
#X obj 78 626 glsl_program;
#X obj 163 555 pack 0 0;
#X msg 30 476 print;
#X obj 163 511 change;
#X obj 150 358 change;
#X msg 163 579 link \$1 \$2;
#X msg 32 620 print;
#X obj 77 490 glsl_fragment;
#X floatatom 163 535 2 0 0 0 ID - -;
#X floatatom 150 381 2 0 0 0 ID - -;
#X obj 181 600 print linking;
#X obj 15 21 inlet;
#X obj 78 662 outlet;
#X obj 577 95 inlet;
#X obj 15 44 route bang;
#X obj 255 11 gemhead 1;
#X msg 255 33 1;
#X obj 255 57 change;
#X obj 255 81 t b;
#X obj 157 647 change;
#X obj 157 668 t b;
#X obj 158 690 outlet;
#X obj 90 426 symbol;
#X obj 90 401 t b;
#X msg 287 598 0;
#X obj 15 65 t b b b;
#X msg 118 307 open panoramique.vert;
#X msg 90 453 open panoramique.frag;
#X connect 0 0 9 0;
#X connect 0 1 6 0;
#X connect 1 0 0 0;
#X connect 2 0 14 0;
#X connect 2 1 21 0;
#X connect 3 0 7 0;
#X connect 4 0 9 0;
#X connect 5 0 10 0;
#X connect 6 0 11 0;
#X connect 6 0 25 0;
#X connect 7 0 2 0;
#X connect 7 0 12 0;
#X connect 8 0 2 0;
#X connect 9 0 2 0;
#X connect 9 1 5 0;
#X connect 10 0 3 0;
#X connect 11 0 3 1;
#X connect 13 0 16 0;
#X connect 15 0 2 0;
#X connect 16 0 27 0;
#X connect 16 1 0 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 19 0 20 0;
#X connect 20 0 28 0;
#X connect 21 0 22 0;
#X connect 22 0 23 0;
#X connect 24 0 29 0;
#X connect 25 0 24 0;
#X connect 26 0 21 0;
#X connect 27 0 10 0;
#X connect 27 1 28 0;
#X connect 27 2 26 0;
#X connect 28 0 0 0;
#X connect 29 0 9 0;
#X restore 160 222 pd glsl;
#X obj 175 285 loadbang;
#X obj 160 328 pix_image;
#X msg 174 419 rectangle 1;
#X obj 174 398 loadbang;
#X obj 160 357 pix_info 0 0 0;
#X msg 238 188 sizeX \$1;
#X msg 253 209 sizeY \$1;
#X obj 353 446 pix_texture;
#X obj 362 206 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#N canvas 38 51 792 790 glsl 0;
#X obj 78 339 glsl_vertex;
#X msg 32 338 print;
#X obj 78 626 glsl_program;
#X obj 163 555 pack 0 0;
#X msg 30 476 print;
#X obj 163 511 change;
#X obj 150 358 change;
#X msg 163 579 link \$1 \$2;
#X msg 32 620 print;
#X obj 77 490 glsl_fragment;
#X floatatom 163 535 2 0 0 0 ID - -;
#X floatatom 150 381 2 0 0 0 ID - -;
#X obj 181 600 print linking;
#X obj 15 21 inlet;
#X obj 78 662 outlet;
#X obj 577 95 inlet;
#X obj 15 44 route bang;
#X obj 255 11 gemhead 1;
#X msg 255 33 1;
#X obj 255 57 change;
#X obj 255 81 t b;
#X obj 157 647 change;
#X obj 157 668 t b;
#X obj 158 690 outlet;
#X obj 90 426 symbol;
#X obj 90 401 t b;
#X msg 287 598 0;
#X obj 15 65 t b b b;
#X msg 118 307 open panoramique.vert;
#X msg 90 453 open panoramique.frag;
#X connect 0 0 9 0;
#X connect 0 1 6 0;
#X connect 1 0 0 0;
#X connect 2 0 14 0;
#X connect 2 1 21 0;
#X connect 3 0 7 0;
#X connect 4 0 9 0;
#X connect 5 0 10 0;
#X connect 6 0 11 0;
#X connect 6 0 25 0;
#X connect 7 0 2 0;
#X connect 7 0 12 0;
#X connect 8 0 2 0;
#X connect 9 0 2 0;
#X connect 9 1 5 0;
#X connect 10 0 3 0;
#X connect 11 0 3 1;
#X connect 13 0 16 0;
#X connect 15 0 2 0;
#X connect 16 0 27 0;
#X connect 16 1 0 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 19 0 20 0;
#X connect 20 0 28 0;
#X connect 21 0 22 0;
#X connect 22 0 23 0;
#X connect 24 0 29 0;
#X connect 25 0 24 0;
#X connect 26 0 21 0;
#X connect 27 0 10 0;
#X connect 27 1 28 0;
#X connect 27 2 26 0;
#X connect 28 0 0 0;
#X connect 29 0 9 0;
#X restore 353 223 pd glsl;
#X obj 368 286 loadbang;
#X obj 353 329 pix_image;
#X msg 367 418 rectangle 1;
#X obj 367 399 loadbang;
#X obj 353 358 pix_info 0 0 0;
#X msg 431 184 sizeX \$1;
#X msg 446 210 sizeY \$1;
#X obj 552 447 pix_texture;
#X obj 561 207 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#N canvas 38 51 792 790 glsl 0;
#X obj 78 339 glsl_vertex;
#X msg 32 338 print;
#X obj 78 626 glsl_program;
#X obj 163 555 pack 0 0;
#X msg 30 476 print;
#X obj 163 511 change;
#X obj 150 358 change;
#X msg 163 579 link \$1 \$2;
#X msg 32 620 print;
#X obj 77 490 glsl_fragment;
#X floatatom 163 535 2 0 0 0 ID - -;
#X floatatom 150 381 2 0 0 0 ID - -;
#X obj 181 600 print linking;
#X obj 15 21 inlet;
#X obj 78 662 outlet;
#X obj 577 95 inlet;
#X obj 15 44 route bang;
#X obj 255 11 gemhead 1;
#X msg 255 33 1;
#X obj 255 57 change;
#X obj 255 81 t b;
#X obj 157 647 change;
#X obj 157 668 t b;
#X obj 158 690 outlet;
#X obj 90 426 symbol;
#X obj 90 401 t b;
#X msg 287 598 0;
#X obj 15 65 t b b b;
#X msg 118 307 open panoramique.vert;
#X msg 90 453 open panoramique.frag;
#X connect 0 0 9 0;
#X connect 0 1 6 0;
#X connect 1 0 0 0;
#X connect 2 0 14 0;
#X connect 2 1 21 0;
#X connect 3 0 7 0;
#X connect 4 0 9 0;
#X connect 5 0 10 0;
#X connect 6 0 11 0;
#X connect 6 0 25 0;
#X connect 7 0 2 0;
#X connect 7 0 12 0;
#X connect 8 0 2 0;
#X connect 9 0 2 0;
#X connect 9 1 5 0;
#X connect 10 0 3 0;
#X connect 11 0 3 1;
#X connect 13 0 16 0;
#X connect 15 0 2 0;
#X connect 16 0 27 0;
#X connect 16 1 0 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 19 0 20 0;
#X connect 20 0 28 0;
#X connect 21 0 22 0;
#X connect 22 0 23 0;
#X connect 24 0 29 0;
#X connect 25 0 24 0;
#X connect 26 0 21 0;
#X connect 27 0 10 0;
#X connect 27 1 28 0;
#X connect 27 2 26 0;
#X connect 28 0 0 0;
#X connect 29 0 9 0;
#X restore 552 224 pd glsl;
#X obj 567 287 loadbang;
#X obj 552 330 pix_image;
#X msg 566 419 rectangle 1;
#X obj 566 400 loadbang;
#X obj 552 359 pix_info 0 0 0;
#X msg 614 188 sizeX \$1;
#X msg 633 206 sizeY \$1;
#X obj 160 467 translateXYZ -3 0 0;
#X obj 352 466 translateXYZ -1 0 0;
#X obj 551 467 translateXYZ 1 0 0;
#X obj 747 448 pix_texture;
#X obj 756 208 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#N canvas 38 51 792 790 glsl 0;
#X obj 78 339 glsl_vertex;
#X msg 32 338 print;
#X obj 78 626 glsl_program;
#X obj 163 555 pack 0 0;
#X msg 30 476 print;
#X obj 163 511 change;
#X obj 150 358 change;
#X msg 163 579 link \$1 \$2;
#X msg 32 620 print;
#X obj 77 490 glsl_fragment;
#X floatatom 163 535 2 0 0 0 ID - -;
#X floatatom 150 381 2 0 0 0 ID - -;
#X obj 181 600 print linking;
#X obj 15 21 inlet;
#X obj 78 662 outlet;
#X obj 577 95 inlet;
#X obj 15 44 route bang;
#X obj 255 11 gemhead 1;
#X msg 255 33 1;
#X obj 255 57 change;
#X obj 255 81 t b;
#X obj 157 647 change;
#X obj 157 668 t b;
#X obj 158 690 outlet;
#X obj 90 426 symbol;
#X obj 90 401 t b;
#X msg 287 598 0;
#X obj 15 65 t b b b;
#X msg 118 307 open panoramique.vert;
#X msg 90 452 open panoramique.frag;
#X connect 0 0 9 0;
#X connect 0 1 6 0;
#X connect 1 0 0 0;
#X connect 2 0 14 0;
#X connect 2 1 21 0;
#X connect 3 0 7 0;
#X connect 4 0 9 0;
#X connect 5 0 10 0;
#X connect 6 0 11 0;
#X connect 6 0 25 0;
#X connect 7 0 2 0;
#X connect 7 0 12 0;
#X connect 8 0 2 0;
#X connect 9 0 2 0;
#X connect 9 1 5 0;
#X connect 10 0 3 0;
#X connect 11 0 3 1;
#X connect 13 0 16 0;
#X connect 15 0 2 0;
#X connect 16 0 27 0;
#X connect 16 1 0 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 19 0 20 0;
#X connect 20 0 28 0;
#X connect 21 0 22 0;
#X connect 22 0 23 0;
#X connect 24 0 29 0;
#X connect 25 0 24 0;
#X connect 26 0 21 0;
#X connect 27 0 10 0;
#X connect 27 1 28 0;
#X connect 27 2 26 0;
#X connect 28 0 0 0;
#X connect 29 0 9 0;
#X restore 747 225 pd glsl;
#X obj 762 288 loadbang;
#X obj 747 331 pix_image;
#X msg 761 420 rectangle 1;
#X obj 761 401 loadbang;
#X obj 747 360 pix_info 0 0 0;
#X msg 825 186 sizeX \$1;
#X msg 840 212 sizeY \$1;
#X obj 746 468 translateXYZ 3 0 0;
#X floatatom 199 108 5 0 0 0 - - -;
#X msg 199 127 dZ \$1;
#X obj 17 470 s shaders;
#X obj 206 245 s init_shader;
#X obj 399 244 s init_shader;
#X obj 600 244 s init_shader;
#X obj 794 246 s init_shader;
#X obj 399 164 r shaders;
#X obj 598 166 r shaders;
#X obj 793 167 r shaders;
#X obj 160 546 rectangle 1 0.75;
#X obj 352 547 rectangle 1 0.75;
#X obj 551 548 rectangle 1 0.75;
#X obj 746 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
-262144 -1 -1 0.12 256;
#X obj 259 486 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10
-262144 -1 -1 -0.06 256;
#X obj 352 505 translateXYZ 0 0 0;
#X obj 393 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10
-262144 -1 -1 0 256;
#X obj 451 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10
-262144 -1 -1 0 256;
#X obj 551 506 translateXYZ 0 0 0;
#X obj 592 489 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10
-262144 -1 -1 -0.11 256;
#X obj 650 489 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10
-262144 -1 -1 -0.03 256;
#X obj 746 505 translateXYZ 0 0 0;
#X obj 787 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10
-262144 -1 -1 -0.18 256;
#X obj 845 488 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10
-262144 -1 -1 -0.05 256;
#X obj 160 10 gemhead 10;
#X obj 353 11 gemhead 20;
#X obj 552 12 gemhead 30;
#X obj 747 13 gemhead 40;
#X obj 160 144 alpha;
#X obj 353 143 alpha;
#X obj 552 139 alpha;
#X obj 747 142 alpha;
#X msg 256 153 ShadeL \$1;
#X obj 199 65 r init_shader;
#X obj 256 132 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10
-262144 -1 -1 0 256;
#X msg 447 133 ShadeL \$1;
#X obj 447 112 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10
-262144 -1 -1 39 256;
#X msg 634 135 ShadeL \$1;
#X obj 634 114 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10
-262144 -1 -1 35 256;
#X msg 831 133 ShadeL \$1;
#X obj 831 112 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10
-262144 -1 -1 23 256;
#X msg 212 526 -1;
#X msg 269 525 -0.75;
#X text 163 526 invert;
#X msg 406 525 -1;
#X msg 463 524 -0.75;
#X text 357 525 invert;
#X msg 605 528 -1;
#X msg 662 527 -0.75;
#X text 556 528 invert;
#X msg 800 529 -1;
#X msg 857 528 -0.75;
#X text 751 529 invert;
#X obj 17 258 gemwin;
#X obj 37 208 loadbang;
#X obj 160 32 scaleXYZ 4 4 1;
#X obj 353 32 scaleXYZ 4 4 1;
#X obj 552 36 scaleXYZ 4 4 1;
#X obj 747 35 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 394 5 0 0 0 - - -;
#X msg 18 413 dZ \$1;
#X obj 18 351 r init_shader;
#X msg 18 373 1.62;
#X msg 199 87 1.38;
#X msg 37 232 dimen 1024 256;
#X msg 177 304 thread 0 \, open cam1.jpg;
#X msg 370 305 thread 0 \, open cam2.jpg;
#X msg 569 306 thread 0 \, open cam3.jpg;
#X msg 764 307 thread 0 \, open cam4.jpg;
#X obj 964 623 declare -lib Gem;
#X connect 0 0 101 0;
#X connect 1 0 101 0;
#X connect 2 0 32 0;
#X connect 3 0 4 0;
#X connect 4 0 6 0;
#X connect 4 1 49 0;
#X connect 4 1 82 0;
#X connect 5 0 118 0;
#X connect 6 0 9 0;
#X connect 7 0 2 0;
#X connect 8 0 7 0;
#X connect 9 0 2 0;
#X connect 9 1 10 0;
#X connect 9 2 11 0;
#X connect 10 0 4 1;
#X connect 11 0 4 1;
#X connect 12 0 33 0;
#X connect 13 0 14 0;
#X connect 14 0 16 0;
#X connect 14 1 50 0;
#X connect 14 1 84 0;
#X connect 15 0 119 0;
#X connect 16 0 19 0;
#X connect 17 0 12 0;
#X connect 18 0 17 0;
#X connect 19 0 12 0;
#X connect 19 1 20 0;
#X connect 19 2 21 0;
#X connect 20 0 14 1;
#X connect 21 0 14 1;
#X connect 22 0 34 0;
#X connect 23 0 24 0;
#X connect 24 0 26 0;
#X connect 24 1 51 0;
#X connect 24 1 86 0;
#X connect 25 0 120 0;
#X connect 26 0 29 0;
#X connect 27 0 22 0;
#X connect 28 0 27 0;
#X connect 29 0 22 0;
#X connect 29 1 30 0;
#X connect 29 2 31 0;
#X connect 30 0 24 1;
#X connect 31 0 24 1;
#X connect 32 0 60 0;
#X connect 33 0 63 0;
#X connect 34 0 66 0;
#X connect 35 0 45 0;
#X connect 36 0 37 0;
#X connect 37 0 39 0;
#X connect 37 1 52 0;
#X connect 37 1 88 0;
#X connect 38 0 121 0;
#X connect 39 0 42 0;
#X connect 40 0 35 0;
#X connect 41 0 40 0;
#X connect 42 0 35 0;
#X connect 42 1 43 0;
#X connect 42 2 44 0;
#X connect 43 0 37 1;
#X connect 44 0 37 1;
#X connect 45 0 69 0;
#X connect 46 0 47 0;
#X connect 47 0 4 1;
#X connect 53 0 14 1;
#X connect 54 0 24 1;
#X connect 55 0 37 1;
#X connect 60 0 56 0;
#X connect 61 0 60 1;
#X connect 62 0 60 2;
#X connect 63 0 57 0;
#X connect 64 0 63 1;
#X connect 65 0 63 2;
#X connect 66 0 58 0;
#X connect 67 0 66 1;
#X connect 68 0 66 2;
#X connect 69 0 59 0;
#X connect 70 0 69 1;
#X connect 71 0 69 2;
#X connect 72 0 103 0;
#X connect 73 0 104 0;
#X connect 74 0 105 0;
#X connect 75 0 106 0;
#X connect 76 0 4 0;
#X connect 77 0 14 0;
#X connect 78 0 24 0;
#X connect 79 0 37 0;
#X connect 80 0 4 1;
#X connect 81 0 116 0;
#X connect 82 0 80 0;
#X connect 83 0 14 1;
#X connect 84 0 83 0;
#X connect 85 0 24 1;
#X connect 86 0 85 0;
#X connect 87 0 37 1;
#X connect 88 0 87 0;
#X connect 89 0 56 1;
#X connect 90 0 56 2;
#X connect 92 0 57 1;
#X connect 93 0 57 2;
#X connect 95 0 58 1;
#X connect 96 0 58 2;
#X connect 98 0 59 1;
#X connect 99 0 59 2;
#X connect 102 0 117 0;
#X connect 103 0 76 0;
#X connect 104 0 77 0;
#X connect 105 0 78 0;
#X connect 106 0 79 0;
#X connect 112 0 113 0;
#X connect 113 0 48 0;
#X connect 114 0 115 0;
#X connect 115 0 112 0;
#X connect 116 0 46 0;
#X connect 117 0 101 0;
#X connect 118 0 6 0;
#X connect 119 0 16 0;
#X connect 120 0 26 0;
#X connect 121 0 39 0;
