aboutsummaryrefslogtreecommitdiff
path: root/packages/noncvs/windows/extra/Gem/examples/10.glsl/10.GPGPU_Physical_model.pd
diff options
context:
space:
mode:
Diffstat (limited to 'packages/noncvs/windows/extra/Gem/examples/10.glsl/10.GPGPU_Physical_model.pd')
-rw-r--r--packages/noncvs/windows/extra/Gem/examples/10.glsl/10.GPGPU_Physical_model.pd1242
1 files changed, 1242 insertions, 0 deletions
diff --git a/packages/noncvs/windows/extra/Gem/examples/10.glsl/10.GPGPU_Physical_model.pd b/packages/noncvs/windows/extra/Gem/examples/10.glsl/10.GPGPU_Physical_model.pd
new file mode 100644
index 00000000..5f5bf7bc
--- /dev/null
+++ b/packages/noncvs/windows/extra/Gem/examples/10.glsl/10.GPGPU_Physical_model.pd
@@ -0,0 +1,1242 @@
+#N struct 1002-xy-pad-knob-1 float x0 float y0 float id;
+#N canvas 282 291 918 594 10;
+#X obj 27 380 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144 -1
+-1 0;
+#X floatatom 185 212 5 0 0 0 - - -;
+#N canvas 4 106 187 219 fps 0;
+#X obj 22 62 realtime;
+#X obj 22 41 t b b;
+#X obj 22 19 gemhead;
+#X obj 22 170 outlet;
+#X msg 22 84 1000 \$1;
+#X obj 22 105 /;
+#X obj 22 126 + 0.5;
+#X obj 22 147 i;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 1 1 0 1;
+#X connect 2 0 1 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 3 0;
+#X restore 185 192 pd fps;
+#N canvas 93 66 1183 666 shaders_PM 0;
+#X obj 718 34 gemhead;
+#X obj 718 57 route gem_state;
+#X obj 718 79 route 1 0;
+#X obj 24 477 translateXYZ 0 0 -4;
+#X obj 24 609 square 4;
+#X msg 50 399 texunit 1;
+#X obj 50 378 loadbang;
+#N canvas 573 206 607 627 shader 0;
+#X obj 126 247 change;
+#X obj 126 323 print linking;
+#X obj 32 227 glsl_fragment;
+#N canvas 0 0 450 300 load_shader 0;
+#X obj 89 99 t b b;
+#X msg 119 126 0;
+#X obj 89 154 outlet;
+#X obj 89 71 gemhead 1;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 0 0;
+#X restore 148 49 pd load_shader;
+#X obj 32 36 inlet;
+#X obj 32 423 outlet;
+#X obj 155 18 inlet;
+#N canvas 0 0 450 300 init_shader 0;
+#X obj 89 154 outlet;
+#X obj 89 45 inlet;
+#X obj 89 73 change;
+#X obj 89 100 t b;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X restore 113 378 pd init_shader;
+#X obj 278 25 inlet;
+#X obj 113 408 outlet;
+#X msg 42 203 open mass.frag;
+#X obj 32 354 glsl_program;
+#X obj 32 137 glsl_vertex;
+#X msg 42 113 open mass.vert;
+#X obj 94 74 t b b;
+#X obj 126 272 pack f f;
+#X msg 126 296 link \$1 \$2;
+#X connect 0 0 15 0;
+#X connect 2 0 11 0;
+#X connect 2 1 0 0;
+#X connect 3 0 14 0;
+#X connect 4 0 12 0;
+#X connect 6 0 14 0;
+#X connect 7 0 9 0;
+#X connect 8 0 11 0;
+#X connect 10 0 2 0;
+#X connect 11 0 5 0;
+#X connect 11 1 7 0;
+#X connect 12 0 2 0;
+#X connect 12 1 15 1;
+#X connect 13 0 12 0;
+#X connect 14 0 10 0;
+#X connect 14 1 13 0;
+#X connect 15 0 16 0;
+#X connect 16 0 1 0;
+#X connect 16 0 11 0;
+#X restore 24 257 pd shader;
+#X obj 53 234 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 506 468 translateXYZ 0 0 -4;
+#X obj 506 610 square 4;
+#X obj 261 477 translateXYZ 0 0 -4;
+#X obj 290 368 loadbang;
+#N canvas 1062 27 528 709 shader 0;
+#X obj 32 384 glsl_program;
+#X obj 32 36 inlet;
+#X obj 32 453 outlet;
+#X obj 155 18 inlet;
+#N canvas 0 0 450 300 init_shader 0;
+#X obj 89 154 outlet;
+#X obj 89 45 inlet;
+#X obj 89 73 change;
+#X obj 89 100 t b;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X restore 113 408 pd init_shader;
+#X obj 278 25 inlet;
+#X obj 113 438 outlet;
+#X obj 126 247 change;
+#X obj 126 323 print linking;
+#X obj 32 227 glsl_fragment;
+#N canvas 0 0 450 300 load_shader 0;
+#X obj 89 99 t b b;
+#X msg 119 126 0;
+#X obj 89 154 outlet;
+#X obj 89 71 gemhead 1;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 0 0;
+#X restore 148 49 pd load_shader;
+#X obj 32 137 glsl_vertex;
+#X obj 94 74 t b b;
+#X obj 126 272 pack f f;
+#X msg 126 296 link \$1 \$2;
+#X msg 42 113 open link.vert;
+#X msg 42 203 open link.frag;
+#X connect 0 0 2 0;
+#X connect 0 1 4 0;
+#X connect 1 0 11 0;
+#X connect 3 0 12 0;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 7 0 13 0;
+#X connect 9 0 0 0;
+#X connect 9 1 7 0;
+#X connect 10 0 12 0;
+#X connect 11 0 9 0;
+#X connect 11 1 13 1;
+#X connect 12 0 16 0;
+#X connect 12 1 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 8 0;
+#X connect 14 0 0 0;
+#X connect 15 0 11 0;
+#X connect 16 0 9 0;
+#X restore 261 256 pd shader;
+#X obj 292 231 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 280 539 loadbang;
+#X obj 119 448 s texture_mass;
+#X obj 359 444 s texture_link;
+#X obj 530 373 loadbang;
+#X msg 530 394 texunit 2;
+#X msg 286 390 texunit 3;
+#X obj 601 440 s texture_mass2;
+#X obj 321 229 r shader_link;
+#X obj 321 277 s init_shader_link;
+#X obj 261 612 square 4;
+#X obj 613 34 inlet;
+#X obj 24 201 gemhead 2;
+#X obj 261 185 gemhead 11;
+#X obj 506 236 gemhead 21;
+#X msg 41 561 rectangle 1 \, quality 0;
+#X msg 280 560 rectangle 1 \, quality 0;
+#X obj 615 58 t b b;
+#X obj 658 36 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 621 113 s init_shader_link;
+#X obj 84 233 r shader_mass;
+#X obj 84 281 s init_shader_mass;
+#X obj 601 140 s init_shader_mass;
+#X obj 261 589 pix_texture;
+#X obj 261 418 gemframebuffer;
+#X obj 24 588 pix_texture;
+#X obj 24 425 gemframebuffer;
+#X obj 65 310 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 506 418 gemframebuffer;
+#X obj 524 513 loadbang;
+#X msg 524 532 rectangle 1 \, quality 0;
+#X obj 506 588 pix_texture;
+#X obj 580 565 r texture_mass;
+#X obj 103 260 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 341 251 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 616 79 delay 500;
+#N canvas 0 0 446 324 init_fb 0;
+#X msg 100 173 type BYTE;
+#X msg 78 151 format RGB32;
+#X obj 46 121 t b b;
+#X obj 78 261 t a;
+#X obj 78 285 outlet;
+#X msg 137 215 rectangle 1;
+#X msg 46 196 dimen 128 128;
+#X obj 46 11 inlet;
+#X msg 137 42 0;
+#X obj 46 49 spigot 1;
+#X obj 46 72 t a b;
+#X connect 0 0 3 0;
+#X connect 1 0 3 0;
+#X connect 2 0 6 0;
+#X connect 2 1 1 0;
+#X connect 2 1 0 0;
+#X connect 2 1 5 0;
+#X connect 3 0 4 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X connect 7 0 9 0;
+#X connect 8 0 9 1;
+#X connect 9 0 10 0;
+#X connect 10 0 2 0;
+#X connect 10 1 8 0;
+#X restore 56 337 pd init_fb;
+#X obj 24 306 t a b;
+#X obj 302 300 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#N canvas 0 0 450 300 init_fb 0;
+#X msg 100 153 type BYTE;
+#X msg 78 131 format RGB32;
+#X obj 46 101 t b b;
+#X obj 78 241 t a;
+#X obj 78 265 outlet;
+#X msg 137 195 rectangle 1;
+#X msg 46 176 dimen 128 128;
+#X obj 46 11 inlet;
+#X msg 137 42 0;
+#X obj 46 49 spigot 1;
+#X obj 46 72 t a b;
+#X connect 0 0 3 0;
+#X connect 1 0 3 0;
+#X connect 2 0 6 0;
+#X connect 2 1 1 0;
+#X connect 2 1 0 0;
+#X connect 2 1 5 0;
+#X connect 3 0 4 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X connect 7 0 9 0;
+#X connect 8 0 9 1;
+#X connect 9 0 10 0;
+#X connect 10 0 2 0;
+#X connect 10 1 8 0;
+#X restore 293 327 pd init_fb;
+#X obj 261 296 t a b;
+#X obj 547 298 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#N canvas 0 0 450 300 init_fb 0;
+#X msg 100 153 type BYTE;
+#X msg 78 131 format RGB32;
+#X obj 46 101 t b b;
+#X obj 78 241 t a;
+#X obj 78 265 outlet;
+#X msg 137 195 rectangle 1;
+#X msg 46 176 dimen 128 128;
+#X obj 46 11 inlet;
+#X msg 137 42 0;
+#X obj 46 49 spigot 1;
+#X obj 46 72 t a b;
+#X connect 0 0 3 0;
+#X connect 1 0 3 0;
+#X connect 2 0 6 0;
+#X connect 2 1 1 0;
+#X connect 2 1 0 0;
+#X connect 2 1 5 0;
+#X connect 3 0 4 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X connect 7 0 9 0;
+#X connect 8 0 9 1;
+#X connect 9 0 10 0;
+#X connect 10 0 2 0;
+#X connect 10 1 8 0;
+#X restore 538 325 pd init_fb;
+#X obj 506 294 t a b;
+#X obj 32 29 gemhead 2;
+#X msg 271 106 0;
+#X obj 271 82 loadbang;
+#X msg 33 59 20;
+#X obj 32 90 until;
+#X obj 44 540 loadbang;
+#X msg 804 378 init \$1;
+#X floatatom 804 360 5 0 1 0 - - -;
+#X obj 762 371 t b;
+#X obj 762 254 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X msg 762 407 texture_link 3;
+#X msg 804 338 1;
+#X msg 950 229 gravite \$1;
+#X floatatom 948 189 5 0 0 0 - - -;
+#X floatatom 1012 190 5 0 0 0 - - -;
+#X msg 1012 206 D \$1;
+#X msg 1063 208 K1 \$1;
+#X floatatom 1062 189 5 0 0 0 - - -;
+#X obj 948 207 / 100;
+#X obj 950 251 t a;
+#X obj 950 526 s shader_link;
+#X obj 952 90 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 952 70 r init_shader_link;
+#X obj 950 146 t b;
+#X obj 952 127 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X msg 1059 168 0.05;
+#X msg 950 169 -0.0025;
+#X msg 1009 170 0.004;
+#X obj 842 314 delay 1000;
+#X msg 842 337 0;
+#X obj 762 454 s shader_mass;
+#X obj 762 225 r init_shader_mass;
+#X obj 804 286 t b;
+#X msg 992 362 init \$1;
+#X floatatom 992 344 5 0 1 0 - - -;
+#X msg 992 322 1;
+#X obj 1030 298 delay 1000;
+#X msg 1030 321 0;
+#X obj 991 270 t b;
+#X msg 1049 470 texture_mass 1;
+#X msg 1040 496 texture_mass_old 2;
+#X obj 1040 419 t b;
+#X msg 771 426 texture_mass_old 2;
+#X msg 1071 391 N \$1;
+#X msg 1071 367 0.01;
+#X msg 1121 368 0;
+#X obj 1078 340 delay 100;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 31 0;
+#X connect 3 0 39 0;
+#X connect 5 0 40 0;
+#X connect 6 0 5 0;
+#X connect 7 0 51 0;
+#X connect 7 1 35 0;
+#X connect 8 0 7 1;
+#X connect 9 0 45 0;
+#X connect 11 0 37 0;
+#X connect 12 0 20 0;
+#X connect 13 0 54 0;
+#X connect 13 1 23 0;
+#X connect 14 0 13 1;
+#X connect 15 0 30 0;
+#X connect 18 0 19 0;
+#X connect 19 0 42 0;
+#X connect 20 0 38 0;
+#X connect 22 0 13 2;
+#X connect 25 0 31 0;
+#X connect 26 0 7 0;
+#X connect 27 0 13 0;
+#X connect 28 0 57 0;
+#X connect 29 0 39 0;
+#X connect 30 0 37 0;
+#X connect 31 0 49 0;
+#X connect 31 1 8 0;
+#X connect 31 1 14 0;
+#X connect 32 0 31 0;
+#X connect 34 0 7 2;
+#X connect 37 0 24 0;
+#X connect 38 0 11 0;
+#X connect 38 1 17 0;
+#X connect 38 1 37 1;
+#X connect 39 0 4 0;
+#X connect 40 0 3 0;
+#X connect 40 1 16 0;
+#X connect 40 1 39 1;
+#X connect 41 0 50 0;
+#X connect 42 0 9 0;
+#X connect 42 1 21 0;
+#X connect 43 0 44 0;
+#X connect 44 0 45 0;
+#X connect 45 0 10 0;
+#X connect 46 0 45 1;
+#X connect 47 0 35 0;
+#X connect 48 0 23 0;
+#X connect 49 0 33 0;
+#X connect 49 0 36 0;
+#X connect 50 0 40 0;
+#X connect 51 0 40 0;
+#X connect 51 1 50 0;
+#X connect 52 0 53 0;
+#X connect 53 0 38 0;
+#X connect 54 0 38 0;
+#X connect 54 1 53 0;
+#X connect 55 0 56 0;
+#X connect 56 0 42 0;
+#X connect 57 0 42 0;
+#X connect 57 1 56 0;
+#X connect 58 0 61 0;
+#X connect 59 0 26 0;
+#X connect 59 0 27 0;
+#X connect 59 0 28 0;
+#X connect 60 0 59 0;
+#X connect 61 0 62 0;
+#X connect 62 0 26 0;
+#X connect 62 0 27 0;
+#X connect 62 0 28 0;
+#X connect 63 0 29 0;
+#X connect 64 0 88 0;
+#X connect 65 0 64 0;
+#X connect 66 0 68 0;
+#X connect 66 0 100 0;
+#X connect 67 0 66 0;
+#X connect 67 0 90 0;
+#X connect 68 0 88 0;
+#X connect 69 0 65 0;
+#X connect 70 0 77 0;
+#X connect 71 0 76 0;
+#X connect 72 0 73 0;
+#X connect 73 0 77 0;
+#X connect 74 0 77 0;
+#X connect 75 0 74 0;
+#X connect 76 0 70 0;
+#X connect 77 0 78 0;
+#X connect 79 0 82 0;
+#X connect 79 0 96 0;
+#X connect 80 0 79 0;
+#X connect 81 0 84 0;
+#X connect 81 0 85 0;
+#X connect 81 0 83 0;
+#X connect 82 0 81 0;
+#X connect 83 0 75 0;
+#X connect 84 0 71 0;
+#X connect 85 0 72 0;
+#X connect 86 0 87 0;
+#X connect 87 0 65 0;
+#X connect 89 0 67 0;
+#X connect 90 0 69 0;
+#X connect 90 0 86 0;
+#X connect 91 0 78 0;
+#X connect 92 0 91 0;
+#X connect 93 0 92 0;
+#X connect 94 0 95 0;
+#X connect 94 0 102 0;
+#X connect 94 0 104 0;
+#X connect 95 0 92 0;
+#X connect 96 0 93 0;
+#X connect 96 0 94 0;
+#X connect 96 0 99 0;
+#X connect 97 0 78 0;
+#X connect 98 0 78 0;
+#X connect 99 0 97 0;
+#X connect 99 0 98 0;
+#X connect 100 0 88 0;
+#X connect 101 0 78 0;
+#X connect 102 0 101 0;
+#X connect 103 0 101 0;
+#X connect 104 0 103 0;
+#X restore 27 323 pd shaders_PM _________________;
+#N canvas 267 495 450 300 config 0;
+#X msg 16 75 W \$1;
+#X floatatom 225 101 5 0 0 0 - - -;
+#X msg 225 120 f \$1;
+#X obj 133 155 t a;
+#X msg 133 83 N \$1;
+#X text 141 101 bruit;
+#X obj 16 53 / 11000;
+#X obj 225 78 + 5;
+#X obj 225 55 * 5;
+#X obj 133 61 / 5000;
+#X msg 338 120 t \$1;
+#X obj 338 31 gemhead 77;
+#X obj 338 56 t b;
+#X obj 338 79 f;
+#X obj 338 99 + 0.3;
+#X obj 338 141 s shader_link;
+#X obj 133 181 s shader_link;
+#X obj 16 29 r oscillation1;
+#X obj 133 31 r qqt_noise;
+#X obj 225 31 r force_wind;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 16 0;
+#X connect 4 0 3 0;
+#X connect 6 0 0 0;
+#X connect 7 0 1 0;
+#X connect 8 0 7 0;
+#X connect 9 0 4 0;
+#X connect 10 0 15 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 13 1;
+#X connect 14 0 10 0;
+#X connect 17 0 6 0;
+#X connect 18 0 9 0;
+#X connect 19 0 8 0;
+#X restore 27 361 pd config _____________________;
+#N canvas 0 0 450 300 render 0;
+#X obj 43 137 pix_texture;
+#X obj 43 181 square 4;
+#X obj 43 115 gemhead 66;
+#X obj 241 120 != 0;
+#X obj 210 119 == 0;
+#X obj 133 58 r texture_link;
+#X obj 146 77 r texture_interpol;
+#X obj 210 146 s aff_drapeau;
+#X obj 120 39 r texture_mass;
+#X msg 43 94 0;
+#X obj 43 73 loadbang;
+#N canvas 0 0 656 297 spigot4 0;
+#X obj 40 21 inlet;
+#X obj 458 22 inlet;
+#X obj 40 179 outlet;
+#X obj 113 24 inlet;
+#X obj 112 91 spigot 0;
+#X obj 196 24 inlet;
+#X obj 195 91 spigot 0;
+#X obj 86 68 == 1;
+#X obj 159 71 == 2;
+#X obj 240 71 == 3;
+#X obj 40 88 spigot 0;
+#X obj 283 29 inlet;
+#X obj 282 96 spigot 0;
+#X obj 327 76 == 4;
+#X obj 361 32 inlet;
+#X obj 360 99 spigot 0;
+#X obj 405 79 == 5;
+#X connect 0 0 10 0;
+#X connect 1 0 7 0;
+#X connect 1 0 8 0;
+#X connect 1 0 9 0;
+#X connect 1 0 13 0;
+#X connect 1 0 16 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 7 0 10 1;
+#X connect 8 0 4 1;
+#X connect 9 0 6 1;
+#X connect 10 0 2 0;
+#X connect 11 0 12 0;
+#X connect 12 0 2 0;
+#X connect 13 0 12 1;
+#X connect 14 0 15 0;
+#X connect 15 0 2 0;
+#X connect 16 0 15 1;
+#X restore 120 115 pd spigot4;
+#X obj 160 96 r texture_normal;
+#X obj 43 160 translateXYZ 0 0 -40;
+#X obj 240 27 f;
+#X obj 238 5 inlet;
+#X connect 0 0 13 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 7 0;
+#X connect 5 0 11 1;
+#X connect 6 0 11 2;
+#X connect 8 0 11 0;
+#X connect 9 0 2 0;
+#X connect 10 0 9 0;
+#X connect 11 0 0 1;
+#X connect 12 0 11 3;
+#X connect 13 0 1 0;
+#X connect 14 0 3 0;
+#X connect 14 0 4 0;
+#X connect 14 0 11 5;
+#X connect 15 0 14 0;
+#X restore 27 398 pd render _____________________;
+#X text 288 6 Made by Cyrille Henry 2008 10 24;
+#N canvas 6 50 812 549 shader_render 0;
+#X obj 315 429 pix_texture;
+#X obj 67 256 gemframebuffer;
+#X obj 67 443 pix_texture;
+#X obj 67 305 translateXYZ 0 0 -4;
+#X obj 67 462 square 4;
+#X obj 85 369 loadbang;
+#N canvas 224 312 1052 398 init 0;
+#X obj 14 130 outlet;
+#X obj 14 30 inlet;
+#X obj 14 53 spigot 1;
+#X obj 31 81 t b;
+#X msg 67 31 0;
+#X msg 14 104 rectangle 1 \, type BYTE \, format RGB32 \, dim 256 256
+;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 1;
+#X connect 5 0 0 0;
+#X restore 99 223 pd init;
+#N canvas 573 206 496 427 shader 0;
+#X obj 32 264 glsl_program;
+#X obj 126 187 change;
+#X obj 126 233 print linking;
+#X obj 32 167 glsl_fragment;
+#X msg 126 208 link \$1;
+#N canvas 0 0 450 300 load_shader 0;
+#X obj 89 99 t b b;
+#X msg 119 126 0;
+#X obj 89 154 outlet;
+#X obj 89 71 gemhead 30;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 0 0;
+#X restore 120 89 pd load_shader;
+#X obj 32 36 inlet;
+#X obj 32 333 outlet;
+#X obj 155 18 inlet;
+#N canvas 0 0 450 300 init_shader 0;
+#X obj 89 154 outlet;
+#X obj 89 45 inlet;
+#X obj 89 73 change;
+#X obj 89 100 t b;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X restore 113 288 pd init_shader;
+#X obj 278 25 inlet;
+#X obj 113 318 outlet;
+#X msg 43 143 open interpol.frag;
+#X connect 0 0 7 0;
+#X connect 0 1 9 0;
+#X connect 1 0 4 0;
+#X connect 3 0 0 0;
+#X connect 3 1 1 0;
+#X connect 4 0 0 0;
+#X connect 4 0 2 0;
+#X connect 5 0 12 0;
+#X connect 6 0 3 0;
+#X connect 8 0 12 0;
+#X connect 9 0 11 0;
+#X connect 10 0 0 0;
+#X connect 12 0 3 0;
+#X restore 67 175 pd shader;
+#X obj 92 156 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 146 134 t b;
+#X msg 146 155 texture_mass 1;
+#N canvas 4 78 301 465 shader 0;
+#X obj 110 298 pack 0 0;
+#X obj 131 278 t b f;
+#X msg 110 321 link \$1 \$2;
+#X floatatom 131 259 2 0 0 0 ID - -;
+#X floatatom 110 158 2 0 0 0 ID - -;
+#X obj 128 342 print linking;
+#X obj 74 70 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 38 213 glsl_fragment;
+#X obj 38 116 glsl_vertex;
+#X obj 110 135 change;
+#X obj 131 233 change;
+#X obj 38 371 glsl_program;
+#N canvas 703 231 450 300 load_glsl 0;
+#X obj 51 22 gemhead;
+#X obj 51 98 outlet;
+#X obj 51 50 route gem_state;
+#X obj 51 74 route 1;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X restore 74 45 pd load_glsl;
+#X obj 41 13 inlet;
+#X obj 37 397 outlet;
+#X obj 150 10 inlet;
+#X obj 265 14 inlet;
+#N canvas 0 0 450 300 init_shader 0;
+#X obj 89 154 outlet;
+#X obj 89 45 inlet;
+#X obj 89 73 change;
+#X obj 89 100 t b;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X restore 107 399 pd init_shader;
+#X obj 107 429 outlet;
+#X msg 52 94 open fetching2.vert;
+#X msg 48 183 open fetching2.frag;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 1 1 0 1;
+#X connect 2 0 5 0;
+#X connect 2 0 11 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X connect 6 0 19 0;
+#X connect 6 0 20 0;
+#X connect 7 0 11 0;
+#X connect 7 1 10 0;
+#X connect 8 0 7 0;
+#X connect 8 1 9 0;
+#X connect 9 0 4 0;
+#X connect 10 0 3 0;
+#X connect 11 0 14 0;
+#X connect 11 1 17 0;
+#X connect 12 0 6 0;
+#X connect 13 0 8 0;
+#X connect 15 0 6 0;
+#X connect 16 0 11 0;
+#X connect 17 0 18 0;
+#X connect 19 0 8 0;
+#X connect 20 0 7 0;
+#X restore 315 208 pd shader;
+#X obj 345 185 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 387 229 t b;
+#X obj 315 116 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 147 114 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 163 278 s texture_interpol;
+#X obj 315 96 r aff_drapeau;
+#X obj 67 102 gemhead 31;
+#X obj 315 135 gemhead 51;
+#X obj 410 25 inlet;
+#X obj 410 156 delay 1000;
+#X obj 315 461 mesh_square 92 64;
+#X obj 315 156 alpha;
+#X obj 315 316 scaleXYZ 15 15 15;
+#X obj 315 286 translateXYZ 0 0.55 -8;
+#X msg 327 399 quality 0;
+#X msg 521 258 draw line;
+#X msg 521 238 draw default;
+#X msg 522 279 draw point;
+#X floatatom 485 203 5 0 0 0 - - -;
+#X obj 485 28 inlet;
+#X obj 327 365 loadbang;
+#X obj 67 198 t a b;
+#X msg 410 185 texture 4;
+#X msg 85 396 rectangle 1 \, quality 0;
+#X obj 637 140 loadbang;
+#X msg 637 162 15;
+#X obj 637 184 s \$0-scale;
+#X connect 0 0 22 0;
+#X connect 1 0 3 0;
+#X connect 1 1 0 1;
+#X connect 1 1 2 1;
+#X connect 1 1 16 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 5 0 35 0;
+#X connect 6 0 1 0;
+#X connect 7 0 33 0;
+#X connect 7 1 15 0;
+#X connect 8 0 7 1;
+#X connect 9 0 10 0;
+#X connect 10 0 7 2;
+#X connect 11 0 25 0;
+#X connect 11 1 13 0;
+#X connect 12 0 11 1;
+#X connect 13 0 34 0;
+#X connect 14 0 19 0;
+#X connect 15 0 9 0;
+#X connect 17 0 14 0;
+#X connect 18 0 7 0;
+#X connect 19 0 23 0;
+#X connect 20 0 21 0;
+#X connect 20 0 12 0;
+#X connect 20 0 8 0;
+#X connect 21 0 34 0;
+#X connect 23 0 11 0;
+#X connect 24 0 0 0;
+#X connect 25 0 24 0;
+#X connect 26 0 0 0;
+#X connect 27 0 22 0;
+#X connect 28 0 22 0;
+#X connect 29 0 22 0;
+#X connect 30 0 24 1;
+#X connect 30 0 24 2;
+#X connect 30 0 24 3;
+#X connect 31 0 30 0;
+#X connect 32 0 26 0;
+#X connect 33 0 1 0;
+#X connect 33 1 6 0;
+#X connect 34 0 11 2;
+#X connect 35 0 2 0;
+#X connect 36 0 37 0;
+#X connect 37 0 38 0;
+#X restore 27 304 pd shader_render ______________;
+#X text 12 6 "Potential Flag" \, by Samuel Bianchini;
+#X floatatom 606 304 5 0 0 0 - - -;
+#X obj 606 324 * 10;
+#N canvas 830 53 450 300 Gem.init 0;
+#X obj 26 3 loadbang;
+#X msg 26 26 perspec -1 1 -1 1 10 100;
+#X obj 26 124 t a;
+#X obj 25 153 outlet;
+#X msg 55 77 dimen 800 600;
+#X msg 37 51 FSAA 5;
+#X connect 0 0 1 0;
+#X connect 0 0 5 0;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 0;
+#X restore 66 188 pd Gem.init;
+#N canvas 341 104 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 1 1;
+#X obj 102 161 r \$0-gemstart;
+#X obj 102 182 select 1 0;
+#X msg 102 214 create \, 1;
+#X msg 177 215 destroy;
+#X obj 102 239 t a;
+#X obj 318 54 inlet;
+#X obj 318 100 t a a;
+#X obj 318 287 outlet;
+#X obj 350 128 route create destroy;
+#X obj 350 150 t b;
+#X msg 350 172 1;
+#X obj 390 150 t b;
+#X msg 390 172 0;
+#X obj 350 195 t f;
+#X msg 350 219 set \$1;
+#X text 118 122 rendering;
+#X obj 318 255 gemwin 30;
+#X msg 441 219 color 0.2 0.3 0.5;
+#X msg 443 257 dimen 1024 768;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 7 0;
+#X connect 7 0 17 0;
+#X connect 7 1 9 0;
+#X connect 9 0 10 0;
+#X connect 9 1 12 0;
+#X connect 10 0 11 0;
+#X connect 11 0 14 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 0 0;
+#X connect 17 0 8 0;
+#X connect 18 0 17 0;
+#X connect 19 0 17 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 47 209 pd gemwin 30;
+#X floatatom 210 282 5 0 0 0 scale-> #0-scale -;
+#X obj 6 325 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#N canvas 290 239 395 502 shader_normal 0;
+#X obj 51 233 gemframebuffer;
+#X obj 51 347 pix_texture;
+#X obj 51 276 translateXYZ 0 0 -4;
+#X obj 51 366 square 4;
+#X obj 67 304 loadbang;
+#N canvas 0 0 1052 398 init 0;
+#X obj 14 140 outlet;
+#X obj 14 30 inlet;
+#X obj 14 55 spigot 1;
+#X obj 24 76 b;
+#X msg 67 31 0;
+#X msg 14 114 rectangle 1 \, type BYTE \, format RGB32 \, dim 128 128
+;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 1;
+#X connect 5 0 0 0;
+#X restore 83 160 pd init;
+#N canvas 555 24 496 709 shader 0;
+#X obj 32 474 glsl_program;
+#X obj 126 357 change;
+#X obj 126 443 print linking;
+#X obj 32 337 glsl_fragment;
+#N canvas 0 0 450 300 load_shader 0;
+#X obj 89 99 t b b;
+#X msg 119 126 0;
+#X obj 89 154 outlet;
+#X obj 89 71 gemhead 30;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 0 0;
+#X restore 134 96 pd load_shader;
+#X obj 32 36 inlet;
+#X obj 32 543 outlet;
+#X obj 175 28 inlet;
+#N canvas 0 0 450 300 init_shader 0;
+#X obj 89 154 outlet;
+#X obj 89 45 inlet;
+#X obj 89 73 change;
+#X obj 89 100 t b;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X restore 113 498 pd init_shader;
+#X obj 278 25 inlet;
+#X obj 113 528 outlet;
+#X msg 43 313 open normal.frag;
+#X obj 32 185 glsl_vertex;
+#X obj 96 122 t b b;
+#X obj 126 393 pack f f;
+#X msg 126 418 link \$1 \$2;
+#X msg 42 161 open normal.vert;
+#X connect 0 0 6 0;
+#X connect 0 1 8 0;
+#X connect 1 0 14 0;
+#X connect 3 0 0 0;
+#X connect 3 1 1 0;
+#X connect 4 0 13 0;
+#X connect 5 0 12 0;
+#X connect 7 0 13 0;
+#X connect 8 0 10 0;
+#X connect 9 0 0 0;
+#X connect 11 0 3 0;
+#X connect 12 0 3 0;
+#X connect 12 1 14 1;
+#X connect 13 0 11 0;
+#X connect 13 1 16 0;
+#X connect 14 0 15 0;
+#X connect 15 0 0 0;
+#X connect 15 0 2 0;
+#X connect 16 0 12 0;
+#X restore 51 112 pd shader;
+#X obj 76 93 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 143 65 t b;
+#X obj 146 45 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 157 252 s texture_normal;
+#X obj 51 39 gemhead 32;
+#X obj 78 189 loadbang;
+#X msg 78 208 texunit 4;
+#X msg 141 88 texture_mass 1;
+#X obj 51 136 t a b;
+#X msg 67 323 rectangle 1 \, quality 1;
+#X connect 0 0 2 0;
+#X connect 0 1 10 0;
+#X connect 0 1 1 1;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 4 0 16 0;
+#X connect 5 0 0 0;
+#X connect 6 0 15 0;
+#X connect 6 1 9 0;
+#X connect 7 0 6 1;
+#X connect 8 0 14 0;
+#X connect 9 0 8 0;
+#X connect 11 0 6 0;
+#X connect 12 0 13 0;
+#X connect 13 0 0 0;
+#X connect 14 0 6 2;
+#X connect 15 0 0 0;
+#X connect 15 1 5 0;
+#X connect 16 0 1 0;
+#X restore 27 342 pd shader_normal ______________;
+#X obj 6 304 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#N canvas 1468 153 767 700 \$0-pad 0;
+#X msg 158 309 clear;
+#N canvas 6 50 590 367 clear-all 0;
+#X obj 89 46 inlet;
+#X obj 89 122 s pd-\$0-work;
+#X msg 89 99 clear;
+#X obj 89 72 t b;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X restore 158 331 pd clear-all;
+#X obj 92 646 outlet;
+#X obj 72 171 loadbang;
+#X obj 191 411 metro 50;
+#N canvas 581 163 695 660 pointer-parser 0;
+#X obj 129 165 pointer;
+#X text 276 46 from metro;
+#X obj 282 346 t b f;
+#X obj 117 49 inlet;
+#X obj 237 48 inlet;
+#X obj 129 541 outlet;
+#X obj 129 398 pack 0 0;
+#X obj 129 193 get \$0-xy-pad-knob-1 x0 y0;
+#X obj 129 320 change -1;
+#X obj 282 325 change -1;
+#X obj 129 238 / 90;
+#X obj 282 236 / 90;
+#X obj 129 420 unpack 0 0;
+#X obj 129 442 * 2;
+#X obj 129 464 - 1;
+#X obj 129 516 pack;
+#X obj 169 442 * 2;
+#X obj 169 464 - 1;
+#X obj 384 202 set \$0-xy-pad-knob-1 x0 y0;
+#X obj 384 43 inlet set;
+#X obj 384 65 unpack;
+#X text 432 67 -1..+1;
+#X obj 384 112 + 1;
+#X obj 384 134 / 2;
+#X obj 384 156 * 90;
+#X obj 424 112 + 1;
+#X obj 424 134 / 2;
+#X floatatom 173 241 5 0 0 0 - - -;
+#X floatatom 245 524 5 0 0 0 - - -;
+#X obj 424 156 * 90;
+#X obj 169 486 * -1;
+#X connect 0 0 18 2;
+#X connect 0 0 7 0;
+#X connect 2 0 6 0;
+#X connect 2 1 6 1;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 6 0 12 0;
+#X connect 7 0 10 0;
+#X connect 7 0 27 0;
+#X connect 7 1 11 0;
+#X connect 8 0 6 0;
+#X connect 9 0 2 0;
+#X connect 10 0 8 0;
+#X connect 11 0 9 0;
+#X connect 12 0 13 0;
+#X connect 12 1 16 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 14 0 28 0;
+#X connect 15 0 5 0;
+#X connect 16 0 17 0;
+#X connect 17 0 30 0;
+#X connect 19 0 20 0;
+#X connect 20 0 22 0;
+#X connect 20 1 25 0;
+#X connect 22 0 23 0;
+#X connect 23 0 24 0;
+#X connect 24 0 18 0;
+#X connect 25 0 26 0;
+#X connect 26 0 29 0;
+#X connect 29 0 18 1;
+#X connect 30 0 15 1;
+#X restore 72 448 pd pointer-parser;
+#N canvas 419 563 751 371 add-controller 0;
+#X msg 520 189 traverse \$1 \, bang;
+#X obj 520 216 pointer;
+#X obj 405 322 outlet;
+#X obj 405 21 inlet;
+#X obj 405 50 t f b;
+#X obj 520 132 symbol pd-\$0-work;
+#X obj 405 285 append \$0-xy-pad-knob-1 x0 y0 id;
+#X obj 23 35 struct \$0-xy-pad-knob-1 float x0 float y0 float id;
+#X obj 22 81 filledpolygon id 999 1 x0(0:90)(0:90) y0(0:90)(0:90) x0(0:90)(10:100)
+y0(0:90)(0:90) x0(0:90)(10:100) y0(0:90)(10:100) x0(0:90)(0:90) y0(0:90)(10:100)
+;
+#X msg 405 261 45 45 \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 6 3;
+#X connect 3 0 4 0;
+#X connect 4 0 9 0;
+#X connect 4 1 5 0;
+#X connect 5 0 0 0;
+#X connect 6 0 2 0;
+#X connect 9 0 6 0;
+#X restore 72 379 pd add-controller;
+#X obj 192 391 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X msg 193 370 1;
+#X obj 72 303 t f b b;
+#X text 111 233 5/10 red;
+#X text 111 248 3/10 green;
+#X text 111 263 2/10 blue;
+#X text 522 76 (c) 2010 Thomas Musil;
+#X text 521 58 (c) -2010 Frank Barknecht;
+#X msg 72 233 900;
+#X obj 162 646 outlet;
+#X text 486 42 based on: xy-pad;
+#N canvas 1444 366 450 300 xy2rphi 0;
+#X obj 46 35 inlet x y;
+#X obj 46 272 outlet r;
+#X obj 136 266 outlet phi;
+#X text 244 77 r=sqrt(x^2+y^2);
+#X text 246 97 phi=atan2(y \, x);
+#X obj 102 106 t f f f;
+#X obj 102 129 *;
+#X obj 46 169 +;
+#X obj 46 106 t f f f;
+#X obj 46 129 *;
+#X obj 46 201 sqrt;
+#X obj 136 157 pack;
+#X obj 136 196 atan2;
+#X msg 136 177 \$2 \$1;
+#X obj 46 61 unpack 0 0;
+#X text 147 282 in rad;
+#X connect 0 0 14 0;
+#X connect 5 0 6 0;
+#X connect 5 1 6 1;
+#X connect 5 2 11 1;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 8 0 9 0;
+#X connect 8 1 9 1;
+#X connect 8 2 11 0;
+#X connect 9 0 7 0;
+#X connect 10 0 1 0;
+#X connect 11 0 13 0;
+#X connect 12 0 2 0;
+#X connect 13 0 12 0;
+#X connect 14 0 8 0;
+#X connect 14 1 5 0;
+#X restore 394 485 pd xy2rphi;
+#X obj 92 530 t l l;
+#X obj 92 552 unpack 0 0;
+#X obj 387 102 inlet r;
+#X obj 456 103 inlet phi;
+#X obj 444 333 t f f;
+#X obj 444 357 cos;
+#X obj 387 354 t f f;
+#X obj 387 390 * 1;
+#X obj 417 389 * 0;
+#X obj 387 277 unpack 0 0;
+#X obj 387 254 pack;
+#X obj 456 225 t b f;
+#X obj 471 356 sin;
+#X obj 387 412 pack;
+#X obj 387 204 t f;
+#X obj 387 226 clip 0 1;
+#X obj 304 74 cnv 10 12 12 empty empty empty 20 12 0 14 -99865 -66577
+0;
+#N canvas 493 264 450 300 \$0-work 0;
+#X scalar 1002-xy-pad-knob-1 0 42 900 \;;
+#X coords 0 100 100 0 100 100 2 0 0;
+#X restore 260 30 pd \$0-work;
+#X obj 451 532 wrap;
+#X obj 72 193 t b b;
+#X obj 608 163 atan2;
+#X msg 608 138 1 0;
+#X obj 608 185 * 4;
+#X obj 608 207 t f f;
+#X obj 378 612 s \$0-force;
+#X obj 451 632 s \$0-direction;
+#X msg 451 554 set \$1;
+#X msg 378 564 set \$1;
+#X obj 451 507 / 6.28;
+#X obj 444 309 * -6.28;
+#X obj 394 507 t f f;
+#X obj 337 537 s force_wind;
+#X connect 0 0 1 0;
+#X connect 3 0 38 0;
+#X connect 4 0 5 1;
+#X connect 5 0 19 0;
+#X connect 6 0 5 0;
+#X connect 7 0 4 0;
+#X connect 8 0 7 0;
+#X connect 9 0 6 0;
+#X connect 9 1 8 0;
+#X connect 9 2 0 0;
+#X connect 15 0 9 0;
+#X connect 18 0 49 0;
+#X connect 18 1 47 0;
+#X connect 19 0 20 0;
+#X connect 19 1 18 0;
+#X connect 20 0 2 0;
+#X connect 20 1 16 0;
+#X connect 21 0 33 0;
+#X connect 22 0 30 0;
+#X connect 23 0 24 0;
+#X connect 23 1 31 0;
+#X connect 24 0 26 1;
+#X connect 25 0 26 0;
+#X connect 25 1 27 0;
+#X connect 26 0 32 0;
+#X connect 27 0 32 1;
+#X connect 28 0 25 0;
+#X connect 28 1 48 0;
+#X connect 29 0 28 0;
+#X connect 30 0 29 0;
+#X connect 30 1 29 1;
+#X connect 31 0 27 1;
+#X connect 32 0 5 2;
+#X connect 33 0 34 0;
+#X connect 34 0 29 0;
+#X connect 37 0 45 0;
+#X connect 38 0 15 0;
+#X connect 38 1 40 0;
+#X connect 39 0 41 0;
+#X connect 40 0 39 0;
+#X connect 41 0 42 0;
+#X connect 42 0 48 1;
+#X connect 42 1 47 1;
+#X connect 45 0 44 0;
+#X connect 46 0 43 0;
+#X connect 47 0 37 0;
+#X connect 48 0 23 0;
+#X connect 49 0 50 0;
+#X connect 49 1 46 0;
+#X coords 0 -1 1 1 100 100 2 260 30;
+#X restore 445 290 pd \$0-pad;
+#X obj 445 151 vsl 15 128 0 1 0 0 empty \$0-force force 0 -9 0 10 -262144
+-1 -1 12700 1;
+#X obj 538 152 vsl 15 128 0 1 0 0 empty \$0-direction direction 0 -9
+0 10 -262144 -1 -1 6219 1;
+#N canvas 424 571 337 368 wind-control. 0;
+#X obj 41 82 pack f f;
+#X msg 41 104 wind \$1 \$2;
+#X obj 41 126 s shader_link;
+#X obj 41 30 inlet;
+#X obj 105 32 inlet;
+#X obj 181 304 s oscillation1;
+#X obj 41 58 / 11000;
+#X obj 105 58 / 11000;
+#X obj 181 187 *;
+#X obj 181 164 t f f;
+#X obj 181 212 +;
+#X obj 181 236 sqrt;
+#X obj 231 187 *;
+#X obj 231 164 t f f;
+#X obj 181 259 * 600;
+#X obj 181 281 min 300;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 3 0 6 0;
+#X connect 3 0 9 0;
+#X connect 4 0 7 0;
+#X connect 4 0 13 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 1;
+#X connect 8 0 10 0;
+#X connect 9 0 8 0;
+#X connect 9 1 8 1;
+#X connect 10 0 11 0;
+#X connect 11 0 14 0;
+#X connect 12 0 10 1;
+#X connect 13 0 12 0;
+#X connect 13 1 12 1;
+#X connect 14 0 15 0;
+#X connect 15 0 5 0;
+#X restore 445 397 pd wind-control.;
+#X text 28 20 Simple version for Gem examples;
+#X text 29 34 Did work under Linux \, with Nvidia driver. I don't know
+on other OS/hardware.;
+#X text 29 72 This patch is quite huge. the GPU compute the position
+of 64x92 masses \, and 64x92x12 links at 50x20 Hz. (about 7e+07 links/sec
+\, so about 100 time faster than what is curently possible with MSD
+on a CPU) (My GPU is old \, this patch performs 10 to 50 times faster
+on a good GPU);
+#X obj 606 346 s qqt_noise;
+#X connect 0 0 5 0;
+#X connect 2 0 1 0;
+#X connect 9 0 10 0;
+#X connect 10 0 24 0;
+#X connect 11 0 12 0;
+#X connect 13 0 7 1;
+#X connect 14 0 3 0;
+#X connect 16 0 7 0;
+#X connect 17 0 20 0;
+#X connect 17 1 20 1;
+#X connect 18 0 17 0;
+#X connect 19 0 17 1;