aboutsummaryrefslogtreecommitdiff
path: root/Gem/examples/02.advanced
diff options
context:
space:
mode:
authorTravis CI <zmoelnig@travis-ci.umlaeute.mur.at>2015-03-14 20:32:26 +0000
committerTravis CI <zmoelnig@travis-ci.umlaeute.mur.at>2015-03-14 20:32:26 +0000
commitc6030846f5c1e34048774d60ca4c15e804bee839 (patch)
treefb75f89275a78ea383c0fd64e8fe5b3ae57cc898 /Gem/examples/02.advanced
Gem linux/amd64
built '' for linux/amd64
Diffstat (limited to 'Gem/examples/02.advanced')
-rw-r--r--Gem/examples/02.advanced/00.gemwin-subpatch.pd61
-rw-r--r--Gem/examples/02.advanced/01.Separator.pd143
-rw-r--r--Gem/examples/02.advanced/02.Ortho.pd87
-rw-r--r--Gem/examples/02.advanced/03.View.pd85
-rw-r--r--Gem/examples/02.advanced/03.View_OSD.pd317
-rw-r--r--Gem/examples/02.advanced/04.Fog.pd99
-rw-r--r--Gem/examples/02.advanced/05.Stereo.pd97
-rw-r--r--Gem/examples/02.advanced/06.StereoParticle.pd88
-rw-r--r--Gem/examples/02.advanced/07.Snapshot1.pd87
-rw-r--r--Gem/examples/02.advanced/08.Snapshot2.pd138
-rw-r--r--Gem/examples/02.advanced/09.SnapshotSave.pd145
-rw-r--r--Gem/examples/02.advanced/09.SnapshotSaveHD.pd44
-rw-r--r--Gem/examples/02.advanced/10.LinearPath.pd87
-rw-r--r--Gem/examples/02.advanced/11.SplinePath.pd87
-rw-r--r--Gem/examples/02.advanced/12.Hsv.pd105
-rw-r--r--Gem/examples/02.advanced/13.ModelRescale.pd107
-rw-r--r--Gem/examples/02.advanced/14.RenderOrder.pd149
-rw-r--r--Gem/examples/02.advanced/15.GemWin.pd73
-rw-r--r--Gem/examples/02.advanced/16.vertex_program.pd189
-rw-r--r--Gem/examples/02.advanced/17.fragment_program.pd126
-rw-r--r--Gem/examples/02.advanced/18.gl_shading_language.pd182
-rw-r--r--Gem/examples/02.advanced/19.pointer.pd217
-rw-r--r--Gem/examples/02.advanced/20.double-gemhead_vs_repeat.pd184
-rw-r--r--Gem/examples/02.advanced/21.basic_LSystem.pd138
-rw-r--r--Gem/examples/02.advanced/22.double-iterative.pd118
-rw-r--r--Gem/examples/02.advanced/23.SplitScreen.pd342
-rw-r--r--Gem/examples/02.advanced/snapshotHD.pd114
27 files changed, 3609 insertions, 0 deletions
diff --git a/Gem/examples/02.advanced/00.gemwin-subpatch.pd b/Gem/examples/02.advanced/00.gemwin-subpatch.pd
new file mode 100644
index 0000000..5f0fc8f
--- /dev/null
+++ b/Gem/examples/02.advanced/00.gemwin-subpatch.pd
@@ -0,0 +1,61 @@
+#N canvas 0 0 725 412 10;
+#N canvas 95 194 290 179 Gem.init 0;
+#X obj 83 30 loadbang;
+#X msg 83 67 reset;
+#X obj 83 107 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 100 115 pd Gem.init;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 100 134 pd gemwin;
+#X text 247 146 just enable the toggle labeled "rendering" to create
+a window and start rendering \; switching the toggle off will destroy
+the window;
+#X text 260 60 by now we assume that you know how to control a Gem-window
+;
+#X text 252 268 apart from that \, the subpatch is really the same
+as [gemwin] itself \; e.g. you can send any message to it that [gemwin]
+understands.;
+#X text 249 204 thus you don't have to click on [create( and then [1(
+anymore...;
+#X text 249 113 for the sake of simplicity \, from now on the examples
+will use the subpatch on the left side to control the Gem-window.;
+#X connect 0 0 1 0;
diff --git a/Gem/examples/02.advanced/01.Separator.pd b/Gem/examples/02.advanced/01.Separator.pd
new file mode 100644
index 0000000..06d4c7a
--- /dev/null
+++ b/Gem/examples/02.advanced/01.Separator.pd
@@ -0,0 +1,143 @@
+#N canvas 215 32 781 537 10;
+#X obj 607 137 separator;
+#X msg 697 200 1;
+#X msg 734 199 0;
+#X text 206 264 on;
+#X text 243 262 off;
+#X msg 19 288 1;
+#X msg 55 290 0;
+#X msg 200 290 1;
+#X msg 238 290 0;
+#X obj 276 308 gemhead 1;
+#X obj 482 240 int 0;
+#X obj 534 241 + 2;
+#X floatatom 646 302 0 0 0 0 - - -;
+#X obj 607 464 sphere;
+#X obj 488 19 gemhead;
+#X floatatom 482 273 0 0 0 0 - - -;
+#X obj 97 350 world_light;
+#X obj 97 295 gemhead 1;
+#X obj 443 418 sphere;
+#X obj 646 275 int 0;
+#X obj 276 364 light;
+#X msg 644 431 20;
+#X msg 480 388 5;
+#X text 31 246 global light;
+#X text 242 236 local light;
+#X text 25 266 on;
+#X text 55 267 off;
+#X obj 482 206 metro 50;
+#X msg 482 176 1;
+#X msg 519 178 0;
+#X obj 646 241 metro 100;
+#X obj 708 273 + 1;
+#X obj 443 142 separator;
+#X obj 443 338 translateXYZ 2 0 0;
+#X obj 443 301 rotate 0 1 0;
+#X obj 607 341 rotate 1 0 0;
+#X obj 607 374 translateXYZ 0 2 0;
+#X obj 607 179 color 0 1 0;
+#X obj 644 401 r initstuff;
+#X obj 480 362 r initstuff;
+#X obj 94 473 s initstuff;
+#X obj 94 443 loadbang;
+#X obj 488 99 translateXYZ;
+#X floatatom 540 62 0 0 0 0 - - -;
+#X text 582 60 change this number;
+#N canvas 95 194 290 179 Gem.init 0;
+#X obj 83 30 loadbang;
+#X msg 161 76 reset;
+#X obj 45 107 outlet;
+#X msg 45 75 dimen 300 300;
+#X obj 88 51 t b b;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 1 1 0;
+#X restore 230 117 pd Gem.init;
+#X msg 100 102 lighting \$1;
+#X text 89 60 turn lighting on/off;
+#X obj 100 78 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 100 134 pd gemwin;
+#X connect 0 0 37 0;
+#X connect 1 0 30 0;
+#X connect 2 0 30 0;
+#X connect 2 0 19 0;
+#X connect 5 0 16 0;
+#X connect 6 0 16 0;
+#X connect 7 0 20 0;
+#X connect 8 0 20 0;
+#X connect 9 0 20 0;
+#X connect 10 0 11 0;
+#X connect 10 0 15 0;
+#X connect 11 0 10 1;
+#X connect 12 0 35 1;
+#X connect 14 0 42 0;
+#X connect 15 0 34 1;
+#X connect 17 0 16 0;
+#X connect 19 0 12 0;
+#X connect 19 0 31 0;
+#X connect 21 0 13 2;
+#X connect 22 0 18 2;
+#X connect 27 0 10 0;
+#X connect 28 0 27 0;
+#X connect 29 0 27 0;
+#X connect 29 0 10 0;
+#X connect 30 0 19 0;
+#X connect 31 0 19 1;
+#X connect 32 0 34 0;
+#X connect 33 0 18 0;
+#X connect 34 0 33 0;
+#X connect 35 0 36 0;
+#X connect 36 0 13 0;
+#X connect 37 0 35 0;
+#X connect 38 0 21 0;
+#X connect 39 0 22 0;
+#X connect 41 0 40 0;
+#X connect 42 0 32 0;
+#X connect 42 0 0 0;
+#X connect 43 0 42 2;
+#X connect 45 0 49 0;
+#X connect 46 0 49 0;
+#X connect 48 0 46 0;
diff --git a/Gem/examples/02.advanced/02.Ortho.pd b/Gem/examples/02.advanced/02.Ortho.pd
new file mode 100644
index 0000000..329b2f8
--- /dev/null
+++ b/Gem/examples/02.advanced/02.Ortho.pd
@@ -0,0 +1,87 @@
+#N canvas 396 100 600 500 10;
+#X obj 358 140 gemhead;
+#X floatatom 377 222 0 0 0 0 - - -;
+#X obj 358 256 rotateXYZ;
+#X obj 150 135 gemhead 60;
+#X obj 150 162 ortho;
+#X obj 150 314 colorRGB 0 1 0;
+#X obj 358 332 model ../data/venus.obj;
+#X obj 150 347 model ../data/venus.obj;
+#X obj 12 257 gemhead 1;
+#X obj 12 296 world_light;
+#X floatatom 169 213 0 0 0 0 - - -;
+#X obj 150 249 rotateXYZ;
+#X obj 358 182 translateXYZ 1 0 0;
+#X obj 150 189 translateXYZ -1 0 0;
+#X obj 358 301 scale 3;
+#X obj 150 282 scale 3;
+#X text 168 6 display two models;
+#X text 136 85 rotate the two models to see the effect;
+#N canvas 22 20 213 300 Gem.init 0;
+#X obj 71 191 outlet;
+#X obj 71 81 loadbang;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 lighting 1;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 0;
+#X restore 43 61 pd Gem.init;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 18 95 pd gemwin;
+#X text 142 32 one model is in "perspective" mode;
+#X text 159 54 the other is in "orthographic" mode;
+#X connect 0 0 12 0;
+#X connect 1 0 2 1;
+#X connect 2 0 14 0;
+#X connect 3 0 4 0;
+#X connect 4 0 13 0;
+#X connect 5 0 7 0;
+#X connect 8 0 9 0;
+#X connect 10 0 11 1;
+#X connect 11 0 15 0;
+#X connect 12 0 2 0;
+#X connect 13 0 11 0;
+#X connect 14 0 6 0;
+#X connect 15 0 5 0;
+#X connect 18 0 19 0;
diff --git a/Gem/examples/02.advanced/03.View.pd b/Gem/examples/02.advanced/03.View.pd
new file mode 100644
index 0000000..835e551
--- /dev/null
+++ b/Gem/examples/02.advanced/03.View.pd
@@ -0,0 +1,85 @@
+#N canvas 55 43 729 499 10;
+#X obj 309 426 gemhead;
+#X obj 179 426 gemhead 1;
+#X obj 179 464 world_light;
+#X obj 309 464 model ../data/venus.obj;
+#X msg 240 111 view 0 0 \$1;
+#X floatatom 240 85 0 0 0 0 - - -;
+#X text 344 85 move the camera;
+#X msg 240 183 view 0 0 4 \$1;
+#X floatatom 240 147 0 0 0 0 - - -;
+#X text 343 106 default is 0 \, 0 \, 4;
+#X text 370 168 turn left and right;
+#X floatatom 236 220 0 0 0 0 - - -;
+#X msg 236 256 view 0 0 4 0 \$1;
+#X text 363 237 turn up and down;
+#X floatatom 237 294 0 0 0 0 - - -;
+#X msg 237 330 view 0 0 4 \$1 \$1;
+#X text 296 301 turn left and right and up and down;
+#N canvas 22 20 213 300 Gem.init 0;
+#X obj 71 191 outlet;
+#X obj 71 81 loadbang;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 lighting 1;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 0;
+#X restore 29 176 pd Gem.init;
+#X text 185 21 change the view-point;
+#X msg 542 107 view x y z;
+#X msg 547 184 view x y z phi;
+#X msg 550 267 view x y z phi theta;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 29 200 pd gemwin;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 4 0 22 0;
+#X connect 5 0 4 0;
+#X connect 7 0 22 0;
+#X connect 8 0 7 0;
+#X connect 11 0 12 0;
+#X connect 12 0 22 0;
+#X connect 14 0 15 0;
+#X connect 15 0 22 0;
+#X connect 17 0 22 0;
diff --git a/Gem/examples/02.advanced/03.View_OSD.pd b/Gem/examples/02.advanced/03.View_OSD.pd
new file mode 100644
index 0000000..e376276
--- /dev/null
+++ b/Gem/examples/02.advanced/03.View_OSD.pd
@@ -0,0 +1,317 @@
+#N canvas 50 151 946 464 10;
+#N canvas 50 173 290 229 Gem.init 0;
+#X obj 71 191 outlet;
+#X obj 71 81 loadbang;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 lighting 1;
+#X msg 155 164 lighting 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X restore 48 98 pd Gem.init;
+#X obj 249 195 cube;
+#X msg 249 121 set \$1;
+#X floatatom 249 98 5 0 0 0 - - -;
+#X obj 249 169 translateXYZ 1 2 -3;
+#X obj 77 130 r view_mess;
+#N canvas 298 685 450 300 lighting 0;
+#X obj 214 196 world_light;
+#X obj 214 136 gemhead 1;
+#X obj 65 157 world_light;
+#X obj 65 105 gemhead 1;
+#X msg 278 97 0.5 0.8 0.6;
+#X obj 271 67 loadbang;
+#X obj 65 129 rotateXYZ -104 160 0;
+#X obj 214 164 rotateXYZ 104 -100 0;
+#X msg 137 98 1 1 1;
+#X obj 65 44 - 1;
+#X obj 65 18 inlet;
+#X msg 65 68 set \$1;
+#X connect 1 0 7 0;
+#X connect 3 0 6 0;
+#X connect 4 0 0 1;
+#X connect 5 0 8 0;
+#X connect 5 0 4 0;
+#X connect 6 0 2 0;
+#X connect 7 0 0 0;
+#X connect 8 0 2 1;
+#X connect 9 0 11 0;
+#X connect 10 0 9 0;
+#X connect 11 0 3 0;
+#X connect 11 0 1 0;
+#X restore 604 108 pd lighting;
+#X obj 271 291 translateXYZ 0 -2 -2;
+#X obj 271 265 gemhead -50;
+#X obj 550 108 gemhead;
+#X obj 550 131 model ../data/venus.obj;
+#X obj 249 145 gemhead -50;
+#X obj 271 315 text2d;
+#N canvas 6 51 381 205 textinit 0;
+#X obj 85 140 outlet;
+#X obj 94 63 loadbang;
+#X msg 100 107 text press left button and move mouse;
+#X msg 82 86 font ../data/vera.ttf;
+#X connect 1 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X restore 469 297 pd textinit;
+#X obj 249 56 tgl 15 0 empty stay_cube empty 0 -6 0 8 -262144 -1 -1
+0 100;
+#X obj 249 76 - 50;
+#X text 125 6 change the view-point \, but keep some objects at a fixed
+position;
+#X text 307 120 set the priority for rendering;
+#X text 431 188 a priority<0 will be rendered AFTER all other things
+\, and with viewpoint set to the origin! (objects will not be affected
+by a change of view);
+#X text 431 240 this is good for displaying logos \, help messages
+and cetera...;
+#X obj 588 282 gemhead -50;
+#N canvas 108 327 419 265 textinit 0;
+#X obj 82 198 outlet;
+#X obj 78 82 loadbang;
+#X msg 97 165 text occasionally press right button;
+#X obj 225 10 gemhead -1;
+#X obj 225 80 spigot;
+#X obj 225 39 t b b;
+#X obj 225 102 t b f;
+#X obj 264 60 f 1;
+#X msg 225 126 font ../data/vera.ttf;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 5 1 7 0;
+#X connect 6 0 8 0;
+#X connect 6 1 7 1;
+#X connect 7 0 4 1;
+#X connect 8 0 0 0;
+#X restore 786 389 pd textinit;
+#X obj 588 407 text3d;
+#X obj 588 380 rotateXYZ;
+#X obj 588 332 render_trigger;
+#X obj 634 353 i;
+#X obj 687 353 % 360;
+#X obj 660 353 - 5;
+#X obj 588 308 translateXYZ 0 -7 -10;
+#N canvas 231 652 445 426 mousemove 0;
+#X obj 129 8 gemmouse;
+#X obj 136 88 pack;
+#X obj 136 110 spigot;
+#X obj 136 131 unpack;
+#X obj 136 196 t f f;
+#X obj 36 16 gemkeyname;
+#X obj 36 39 pack 0 s;
+#X obj 36 62 route 1;
+#X msg 36 107 0;
+#X msg 136 365 view \$2 \$3 \$1 0 0 0 0 1 0;
+#X obj 136 173 +;
+#X obj 136 221 * -1;
+#X obj 201 237 t f f;
+#X obj 201 174 +;
+#X obj 201 262 * -1;
+#X obj 36 129 t f f f;
+#X obj 136 388 s view_mess;
+#X text 61 106 reset;
+#N canvas 292 198 304 356 coordinates 0;
+#X obj 89 52 inlet;
+#X obj 94 331 outlet;
+#X obj 193 62 atan;
+#X msg 193 41 1;
+#X obj 193 84 / 45;
+#X obj 193 20 loadbang;
+#X text 94 29 r phi theta;
+#X obj 89 78 unpack 0 0 0;
+#X obj 128 123 *;
+#X obj 168 123 *;
+#X obj 120 197 cos;
+#X obj 150 198 sin;
+#X obj 120 166 t f f;
+#X obj 183 198 cos;
+#X obj 213 199 sin;
+#X obj 183 167 t f f;
+#X obj 120 230 *;
+#X obj 150 231 *;
+#X obj 85 275 *;
+#X obj 125 275 *;
+#X obj 174 277 *;
+#X obj 66 242 t f f f;
+#X obj 91 308 pack 0 0 0;
+#X connect 0 0 7 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 9 1;
+#X connect 4 0 8 1;
+#X connect 5 0 3 0;
+#X connect 7 0 21 0;
+#X connect 7 1 8 0;
+#X connect 7 2 9 0;
+#X connect 8 0 12 0;
+#X connect 9 0 15 0;
+#X connect 10 0 16 0;
+#X connect 11 0 17 0;
+#X connect 12 0 10 0;
+#X connect 12 1 11 0;
+#X connect 13 0 16 1;
+#X connect 13 0 17 1;
+#X connect 14 0 20 1;
+#X connect 15 0 13 0;
+#X connect 15 1 14 0;
+#X connect 16 0 18 1;
+#X connect 17 0 19 1;
+#X connect 18 0 22 0;
+#X connect 19 0 22 1;
+#X connect 20 0 22 2;
+#X connect 21 0 18 0;
+#X connect 21 1 19 0;
+#X connect 21 2 20 0;
+#X connect 22 0 1 0;
+#X restore 136 310 pd coordinates;
+#X obj 136 249 t b f;
+#X obj 136 289 pack 4 0 0;
+#X obj 177 46 t f f;
+#X obj 177 67 -;
+#X obj 136 45 t f f;
+#X obj 136 66 -;
+#X obj 278 57 s stay_cube;
+#X obj 278 35 select 1;
+#X obj 201 151 * 0.5;
+#X obj 136 153 * 0.5;
+#X obj 201 209 clip -90 90;
+#N canvas 1020 394 450 300 space 0;
+#X obj 42 13 inlet;
+#X obj 42 35 symbol;
+#X obj 42 87 select space;
+#X obj 123 111 select space;
+#X obj 204 87 makefilename %c;
+#X msg 204 59 32;
+#X obj 42 57 t s b;
+#X obj 42 159 t b;
+#X obj 42 181 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 6 0;
+#X connect 2 0 7 0;
+#X connect 2 1 3 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 1;
+#X connect 5 0 4 0;
+#X connect 6 0 2 0;
+#X connect 6 1 5 0;
+#X connect 7 0 8 0;
+#X restore 36 85 pd space;
+#X connect 0 0 23 0;
+#X connect 0 1 21 0;
+#X connect 0 2 2 1;
+#X connect 0 4 26 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 28 0;
+#X connect 3 1 27 0;
+#X connect 4 0 11 0;
+#X connect 4 1 10 1;
+#X connect 5 0 6 0;
+#X connect 5 1 6 1;
+#X connect 6 0 7 0;
+#X connect 7 0 30 0;
+#X connect 8 0 15 0;
+#X connect 9 0 16 0;
+#X connect 10 0 4 0;
+#X connect 11 0 19 0;
+#X connect 12 0 14 0;
+#X connect 12 1 13 1;
+#X connect 13 0 29 0;
+#X connect 14 0 20 2;
+#X connect 15 0 10 0;
+#X connect 15 1 10 1;
+#X connect 15 1 13 0;
+#X connect 15 2 13 1;
+#X connect 18 0 9 0;
+#X connect 19 0 20 0;
+#X connect 19 1 20 1;
+#X connect 20 0 18 0;
+#X connect 21 0 22 1;
+#X connect 21 1 22 0;
+#X connect 22 0 1 1;
+#X connect 23 0 24 1;
+#X connect 23 1 24 0;
+#X connect 24 0 1 0;
+#X connect 26 0 25 0;
+#X connect 27 0 13 0;
+#X connect 28 0 10 0;
+#X connect 29 0 12 0;
+#X connect 30 0 8 0;
+#X restore 731 34 pd mousemove;
+#X text 275 48 0...[cube] is rendered OSD;
+#X text 275 60 1...[cube] is rendered at "view";
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 48 204 pd gemwin;
+#X obj 604 88 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 2
+2;
+#X text 632 87 <- should the view affect light position or not;
+#X connect 0 0 32 0;
+#X connect 2 0 11 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 5 0 32 0;
+#X connect 7 0 12 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 11 0 4 0;
+#X connect 13 0 12 0;
+#X connect 14 0 15 0;
+#X connect 15 0 3 0;
+#X connect 20 0 28 0;
+#X connect 21 0 22 0;
+#X connect 23 0 22 0;
+#X connect 24 0 23 0;
+#X connect 24 1 25 0;
+#X connect 25 0 27 0;
+#X connect 25 0 23 1;
+#X connect 26 0 25 1;
+#X connect 27 0 26 0;
+#X connect 28 0 24 0;
+#X connect 33 0 6 0;
diff --git a/Gem/examples/02.advanced/04.Fog.pd b/Gem/examples/02.advanced/04.Fog.pd
new file mode 100644
index 0000000..28991af
--- /dev/null
+++ b/Gem/examples/02.advanced/04.Fog.pd
@@ -0,0 +1,99 @@
+#N canvas 275 99 721 506 10;
+#X floatatom 414 85 0 0 0 0 - - -;
+#X obj 385 44 gemhead;
+#X floatatom 403 165 0 0 0 0 - - -;
+#X obj 268 149 gemhead 1;
+#X obj 268 187 world_light;
+#X obj 385 279 model ../data/venus.obj;
+#X obj 385 134 translateXYZ;
+#X obj 385 205 rotateXYZ;
+#X obj 385 238 scale 3;
+#X obj 40 198 r fogmess;
+#X msg 335 395 \; fogmess fogmode 2 \; fogmess fog 0.1;
+#X msg 11 394 \; fogmess fogmode 0;
+#X msg 172 393 \; fogmess fogmode 1 \; fogmess fog 0.7;
+#X text 39 349 no fog;
+#X text 190 354 linear fog;
+#X text 371 353 exp fog;
+#X text 520 357 exp^2 fog;
+#X msg 485 399 \; fogmess fogmode 3 \; fogmess fog 0.1;
+#X text 184 21 various fog types;
+#X obj 522 132 gemhead;
+#X floatatom 458 97 5 0 0 0 - - -;
+#X obj 522 170 rotateXYZ 0 -117 0;
+#X obj 522 189 square 5;
+#X obj 522 151 translateXYZ -3.5 0 -6.57;
+#X obj 385 22 tgl 15 1 empty empty empty 20 8 0 8 -262144 -1 -1 1 1
+;
+#X obj 522 113 tgl 15 1 empty empty empty 20 8 0 8 -262144 -1 -1 1
+1;
+#N canvas 26 40 290 300 Gem.init 0;
+#X obj 71 191 outlet;
+#X obj 71 81 loadbang;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 lighting 1;
+#X msg 131 165 fogcolor 1 0 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 0 5 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X restore 59 219 pd Gem.init;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 40 258 pd gemwin;
+#X connect 0 0 6 3;
+#X connect 1 0 6 0;
+#X connect 2 0 7 1;
+#X connect 3 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 5 0;
+#X connect 9 0 27 0;
+#X connect 19 0 23 0;
+#X connect 20 0 6 1;
+#X connect 21 0 22 0;
+#X connect 23 0 21 0;
+#X connect 24 0 1 0;
+#X connect 25 0 19 0;
+#X connect 26 0 27 0;
diff --git a/Gem/examples/02.advanced/05.Stereo.pd b/Gem/examples/02.advanced/05.Stereo.pd
new file mode 100644
index 0000000..8fc351e
--- /dev/null
+++ b/Gem/examples/02.advanced/05.Stereo.pd
@@ -0,0 +1,97 @@
+#N canvas 631 50 600 504 10;
+#X obj 426 54 gemhead;
+#X floatatom 464 134 0 0 0 0 - - -;
+#X obj 464 307 gemhead 1;
+#X obj 464 332 world_light;
+#X obj 426 181 model ../data/venus.obj;
+#X text 185 21 load in a model file;
+#X obj 426 81 translateXYZ 0 0 2;
+#X obj 426 157 rotateXYZ;
+#X text 149 40 and display it stereoscopically;
+#X msg 221 130 stereoSep \$1;
+#X msg 318 129 stereoFoc \$1;
+#X floatatom 221 92 0 0 0 0 - - -;
+#X floatatom 318 87 0 0 0 0 - - -;
+#X text 23 295 The default stereoSep is -15;
+#X text 23 315 The model may appear inside out depending on what viewing
+method you use.;
+#X text 23 350 If it does \, change the stereoSep to 15;
+#N canvas 30 60 290 300 Gem.init 0;
+#X obj 71 191 outlet;
+#X obj 71 81 loadbang;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 lighting 1;
+#X msg 148 165 stereo 1;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 0 5 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X restore 58 173 pd Gem.init;
+#X msg 271 206 stereo 1;
+#X msg 271 228 stereo 2;
+#X msg 271 271 stereo 0;
+#X text 335 207 2 separate images;
+#X text 338 230 red/green stereo;
+#X text 336 273 no stereo;
+#X msg 271 248 stereo 3;
+#X text 338 250 crystal eyes stereo;
+#X text 32 402 NOTE: you need special hardware to use "crystal eyes
+stereo";
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 58 207 pd gemwin;
+#X connect 0 0 6 0;
+#X connect 1 0 7 2;
+#X connect 2 0 3 0;
+#X connect 6 0 7 0;
+#X connect 7 0 4 0;
+#X connect 9 0 26 0;
+#X connect 10 0 26 0;
+#X connect 11 0 9 0;
+#X connect 12 0 10 0;
+#X connect 16 0 26 0;
+#X connect 17 0 26 0;
+#X connect 18 0 26 0;
+#X connect 19 0 26 0;
+#X connect 23 0 26 0;
diff --git a/Gem/examples/02.advanced/06.StereoParticle.pd b/Gem/examples/02.advanced/06.StereoParticle.pd
new file mode 100644
index 0000000..80b1f06
--- /dev/null
+++ b/Gem/examples/02.advanced/06.StereoParticle.pd
@@ -0,0 +1,88 @@
+#N canvas 396 160 600 500 10;
+#X obj 198 50 gemhead;
+#X obj 198 82 part_head;
+#X obj 198 136 part_color;
+#X obj 198 447 part_draw;
+#X msg 335 69 0 1 0;
+#X text 329 37 set the color range;
+#X obj 198 331 part_gravity 0 -0.01 0;
+#X obj 198 206 part_velsphere 0 0.2 0 0.2;
+#X text 310 269 set the number per frame;
+#X text 310 378 set the age to kill at;
+#X text 366 327 gravity to affect the particles;
+#X text 408 174 the velocity domain;
+#X text 406 191 a sphere at 0 \, 0.2 \, 0;
+#X msg 219 413 draw line;
+#X msg 298 413 draw point;
+#X msg 393 69 1 0 0;
+#X obj 198 270 part_source 25;
+#X obj 198 381 part_killold 45;
+#X text 406 208 radius = 0.2;
+#X msg 31 131 stereoSep 15;
+#X obj 198 174 part_size 2;
+#N canvas 26 40 290 300 Gem.init 0;
+#X obj 71 191 outlet;
+#X obj 71 81 loadbang;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 stereo 1;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 0;
+#X restore 87 170 pd Gem.init;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 31 187 pd gemwin;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 20 0;
+#X connect 4 0 2 1;
+#X connect 6 0 17 0;
+#X connect 7 0 16 0;
+#X connect 13 0 3 0;
+#X connect 14 0 3 0;
+#X connect 15 0 2 2;
+#X connect 16 0 6 0;
+#X connect 17 0 3 0;
+#X connect 19 0 22 0;
+#X connect 20 0 7 0;
+#X connect 21 0 22 0;
diff --git a/Gem/examples/02.advanced/07.Snapshot1.pd b/Gem/examples/02.advanced/07.Snapshot1.pd
new file mode 100644
index 0000000..55b7776
--- /dev/null
+++ b/Gem/examples/02.advanced/07.Snapshot1.pd
@@ -0,0 +1,87 @@
+#N canvas 396 100 600 375 10;
+#X obj 210 252 gemhead;
+#X obj 210 312 model ../data/venus.obj;
+#X text 117 4 snap a portion of the graphics window into a texture
+;
+#X obj 210 278 translateXYZ 0 0 2;
+#X obj 423 193 gemhead;
+#X obj 423 255 pix_texture;
+#X msg 294 88 snap;
+#X msg 275 56 bang;
+#X msg 355 148 bang;
+#X msg 328 120 bang;
+#X obj 423 226 pix_snap 0 0 256 256;
+#X obj 423 284 rotateXYZ 0 45 25;
+#X obj 423 317 square 4;
+#X text 327 54 draw the model;
+#X text 348 87 snap the frame buffer;
+#X text 390 120 clear the frame buffer;
+#X text 407 146 draw the snapped texture;
+#N canvas 26 40 290 300 Gem.init 0;
+#X obj 71 191 outlet;
+#X obj 71 81 loadbang;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 dimen 256 256;
+#X msg 179 165 buffer 1;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 0 5 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X restore 30 120 pd Gem.init;
+#X text 123 20 notice that this is using single buffered (see Gem.init)
+drawing!;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 30 137 pd gemwin;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 10 0;
+#X connect 5 0 11 0;
+#X connect 6 0 10 0;
+#X connect 7 0 0 0;
+#X connect 8 0 4 0;
+#X connect 9 0 19 0;
+#X connect 10 0 5 0;
+#X connect 11 0 12 0;
+#X connect 17 0 19 0;
diff --git a/Gem/examples/02.advanced/08.Snapshot2.pd b/Gem/examples/02.advanced/08.Snapshot2.pd
new file mode 100644
index 0000000..ef84f34
--- /dev/null
+++ b/Gem/examples/02.advanced/08.Snapshot2.pd
@@ -0,0 +1,138 @@
+#N canvas 389 0 635 537 10;
+#X obj 64 405 gemhead;
+#X obj 64 509 model ../data/venus.obj;
+#X text 115 2 snap a portion of the graphics window into a texture
+;
+#X obj 399 365 pix_texture;
+#X obj 399 430 rotateXYZ;
+#X floatatom 500 399 0 0 0 0 - - -;
+#X msg 339 350 snap;
+#X msg 110 370 0;
+#X obj 399 256 render_trigger;
+#X obj 399 329 pix_snap 0 0 256 256;
+#X obj 399 219 gemhead 60;
+#X obj 399 453 square 3;
+#X msg 34 94 \; render 1;
+#X msg 32 50 \; render 0;
+#X obj 18 181 r render;
+#X obj 180 360 r render;
+#X obj 295 322 t b b;
+#X obj 295 197 r render;
+#X msg 295 260 clear;
+#X obj 295 229 sel 1;
+#X obj 233 400 gemhead;
+#X obj 233 510 model ../data/venus.obj;
+#X obj 233 472 color 1 0 0;
+#X obj 64 478 color 0 1 0;
+#X obj 233 432 translateXYZ 1 0 1;
+#X obj 64 438 translateXYZ -1 0 1;
+#X text 369 155 notice that we use render_trigger;
+#X text 369 172 to make sure that we snap before;
+#X text 373 190 the square is drawn;
+#X text 126 42 you may need to turn rendering off \, then on;
+#X text 128 59 to get the snap to work right. This is because;
+#X text 127 77 the first time rendering is turned on \, we might;
+#X text 128 95 have garbage in the frame buffer;
+#X text 127 126 rotate the square to see the texture;
+#N canvas 26 40 290 300 Gem.init 0;
+#X obj 71 191 outlet;
+#X obj 71 81 loadbang;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 dimen 256 256;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 0;
+#X restore 84 181 pd Gem.init;
+#N canvas 0 0 450 300 oneshot 0;
+#X obj 93 82 inlet;
+#X obj 187 148 bang;
+#X msg 187 167 1;
+#X obj 93 214 spigot;
+#X msg 155 168 0;
+#X obj 93 172 t a b;
+#X obj 93 240 t a b;
+#X obj 136 192 i 1;
+#X obj 93 107 route clear;
+#X obj 93 262 outlet;
+#X connect 0 0 8 0;
+#X connect 1 0 2 0;
+#X connect 2 0 7 1;
+#X connect 3 0 6 0;
+#X connect 4 0 7 1;
+#X connect 5 0 3 0;
+#X connect 5 1 7 0;
+#X connect 6 0 9 0;
+#X connect 6 1 4 0;
+#X connect 7 0 3 1;
+#X connect 8 0 1 0;
+#X connect 8 1 5 0;
+#X restore 295 287 pd oneshot;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 18 206 pd gemwin;
+#X connect 0 0 25 0;
+#X connect 3 0 4 0;
+#X connect 4 0 11 0;
+#X connect 5 0 4 2;
+#X connect 6 0 9 0;
+#X connect 7 0 0 0;
+#X connect 7 0 20 0;
+#X connect 8 0 9 0;
+#X connect 8 1 35 0;
+#X connect 9 0 3 0;
+#X connect 10 0 8 0;
+#X connect 14 0 36 0;
+#X connect 15 0 0 0;
+#X connect 15 0 20 0;
+#X connect 16 0 7 0;
+#X connect 16 1 6 0;
+#X connect 17 0 19 0;
+#X connect 18 0 35 0;
+#X connect 19 0 18 0;
+#X connect 20 0 24 0;
+#X connect 22 0 21 0;
+#X connect 23 0 1 0;
+#X connect 24 0 22 0;
+#X connect 25 0 23 0;
+#X connect 34 0 36 0;
+#X connect 35 0 16 0;
diff --git a/Gem/examples/02.advanced/09.SnapshotSave.pd b/Gem/examples/02.advanced/09.SnapshotSave.pd
new file mode 100644
index 0000000..92bc2eb
--- /dev/null
+++ b/Gem/examples/02.advanced/09.SnapshotSave.pd
@@ -0,0 +1,145 @@
+#N canvas 54 216 940 412 10;
+#N canvas 338 262 290 225 Gem.init 0;
+#X obj 83 30 loadbang;
+#X msg 161 76 reset;
+#X obj 45 184 outlet;
+#X obj 88 51 t b b;
+#X msg 45 75 dimen 128 128;
+#X msg 71 109 lighting 1;
+#X msg 127 171 color 0.5 0.3 1;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 3 0 4 0;
+#X connect 3 0 5 0;
+#X connect 3 0 6 0;
+#X connect 3 1 1 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 0;
+#X connect 6 0 2 0;
+#X restore 51 96 pd Gem.init;
+#X obj 255 118 gemhead;
+#X obj 255 144 render_trigger;
+#X obj 332 256 + 1;
+#X obj 362 256 % 360;
+#X obj 255 279 rotateXYZ;
+#X obj 255 359 pix_texture;
+#X obj 62 265 gemhead;
+#X obj 62 291 world_light;
+#X obj 652 251 gemhead 99;
+#X obj 548 154 savepanel;
+#X msg 673 293 file \$1;
+#X obj 420 182 symbol /tmp/gemshot;
+#X obj 420 110 bng 30 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 420 280 makefilename %s00000.tif;
+#X msg 420 308 open \$1;
+#X obj 255 387 square 4;
+#X obj 255 334 pix_image;
+#X msg 134 269 list 1 1 0.4;
+#X obj 255 306 color 1 0.3 1;
+#X obj 134 248 loadbang;
+#X obj 420 210 t b s b s;
+#X obj 420 258 symbol;
+#X obj 420 234 del 500;
+#X obj 301 188 spigot;
+#X obj 338 165 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X floatatom 301 238 5 0 0 0 - - -;
+#X obj 301 216 i;
+#X obj 548 134 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 338 123 loadbang;
+#X text 186 22 similar to the previous example: [pix_write] gets the
+current output window and writes it not into a texture but into a file
+(TIFF or JPEG);
+#X text 492 364 mind the 99: [pix_write] has to be called late \, to
+ensure that all that you want is already rendered onto the screen.
+;
+#X msg 789 285 auto \$1;
+#X obj 793 263 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#N canvas 340 107 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 51 113 pd gemwin;
+#X obj 60 321 gemhead;
+#X obj 60 341 translate 1 0 1 0;
+#X obj 60 362 color 0 1 0;
+#X obj 60 382 sphere 0.5;
+#X obj 652 326 pix_write;
+#X connect 0 0 34 0;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 2 1 24 0;
+#X connect 3 0 4 0;
+#X connect 4 0 27 1;
+#X connect 5 0 19 0;
+#X connect 6 0 16 0;
+#X connect 7 0 8 0;
+#X connect 9 0 39 0;
+#X connect 10 0 12 1;
+#X connect 11 0 39 0;
+#X connect 12 0 21 0;
+#X connect 13 0 12 0;
+#X connect 14 0 15 0;
+#X connect 15 0 17 0;
+#X connect 17 0 6 0;
+#X connect 18 0 8 1;
+#X connect 19 0 17 0;
+#X connect 20 0 18 0;
+#X connect 21 0 23 0;
+#X connect 21 1 22 1;
+#X connect 21 2 39 0;
+#X connect 21 3 11 0;
+#X connect 22 0 14 0;
+#X connect 23 0 22 0;
+#X connect 24 0 27 0;
+#X connect 25 0 24 1;
+#X connect 26 0 3 0;
+#X connect 26 0 5 1;
+#X connect 26 0 5 2;
+#X connect 26 0 5 3;
+#X connect 27 0 26 0;
+#X connect 28 0 10 0;
+#X connect 29 0 25 0;
+#X connect 32 0 39 0;
+#X connect 33 0 32 0;
+#X connect 35 0 36 0;
+#X connect 36 0 37 0;
+#X connect 37 0 38 0;
diff --git a/Gem/examples/02.advanced/09.SnapshotSaveHD.pd b/Gem/examples/02.advanced/09.SnapshotSaveHD.pd
new file mode 100644
index 0000000..b14083b
--- /dev/null
+++ b/Gem/examples/02.advanced/09.SnapshotSaveHD.pd
@@ -0,0 +1,44 @@
+#N canvas 73 51 832 392 10;
+#X msg 26 26 create \, 1;
+#X msg 39 53 destroy;
+#X obj 340 29 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 151 29 gemhead;
+#X text 256 220 <- the scene you want to save in the given resolution
+;
+#X text 359 29 <- save the scene in the given resolution;
+#X obj 26 77 gemwin;
+#X text 147 283 [snapshotHD] gives the possibility to capture a scene
+in a defined resolution. You can see the proportion of the capture
+in the GEM window with the white rectangle edge.;
+#X obj 151 170 t a b;
+#X obj 151 220 accumrotate;
+#X obj 151 241 teapot;
+#X msg 193 196 1;
+#X obj 151 72 s \$0-gemhead;
+#X obj 151 125 gemreceive \$0-gemhead;
+#X obj 151 145 separator;
+#X text 303 136 <-- a [gemhead] replacement;
+#X text 407 50 1st and 2nd arguments : resolution (here : 3000x2000
+pixels);
+#X obj 151 52 snapshotHD 4000 2000 /tmp/myPic.tif;
+#X text 410 68 3rd argument : TIFF file name (here : /tmp/myPic.tif)
+;
+#X text 152 333 [snapshotHD] uses openGL-framebuffers. thus the maximum
+resolution is limited by your openGL-implementation!;
+#X msg 342 90 symbol /tmp/foo.tif;
+#X text 485 93 <- save as another imagefile.;
+#X connect 0 0 6 0;
+#X connect 1 0 6 0;
+#X connect 2 0 17 1;
+#X connect 3 0 17 0;
+#X connect 8 0 9 0;
+#X connect 8 1 11 0;
+#X connect 9 0 10 0;
+#X connect 11 0 9 2;
+#X connect 11 0 9 3;
+#X connect 11 0 9 1;
+#X connect 13 0 14 0;
+#X connect 14 0 8 0;
+#X connect 17 0 12 0;
+#X connect 20 0 17 1;
diff --git a/Gem/examples/02.advanced/10.LinearPath.pd b/Gem/examples/02.advanced/10.LinearPath.pd
new file mode 100644
index 0000000..1a75686
--- /dev/null
+++ b/Gem/examples/02.advanced/10.LinearPath.pd
@@ -0,0 +1,87 @@
+#N canvas 372 134 624 496 10;
+#X floatatom 481 249 0 0 0 0 - - -;
+#X msg 422 21 1;
+#X msg 455 21 0;
+#X floatatom 451 172 0 0 0 0 - - -;
+#X obj 350 184 gemhead;
+#X obj 350 240 color;
+#X obj 350 364 square;
+#N canvas 21 297 600 400 arrays 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array array2 15 float 0;
+#X array array3 24 float 0;
+#X coords 0 1 15 -1 400 300 1;
+#X restore 63 4 graph;
+#X restore 38 447 page arrays;
+#X obj 422 124 line;
+#X msg 422 95 0 \, 1 2000;
+#X obj 350 334 translate 1 0 0 0;
+#X msg 39 347 \; array2 resize 15 \; array2 read ../data/valcolor.tab
+\; array3 resize 24 \; array3 read ../data/valmotion.tab;
+#X obj 422 63 metro 2000;
+#X obj 422 213 linear_path 3 array2;
+#X obj 464 300 linear_path 3 array3;
+#X text 109 29 this demonstrates the linear_path object;
+#X obj 39 313 loadbang;
+#N canvas 26 40 290 300 Gem.init 0;
+#X obj 68 196 outlet;
+#X obj 68 86 loadbang;
+#X msg 68 136 reset;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X restore 54 134 pd Gem.init;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 54 151 pd gemwin;
+#X connect 0 0 14 0;
+#X connect 1 0 12 0;
+#X connect 2 0 12 0;
+#X connect 3 0 13 0;
+#X connect 4 0 5 0;
+#X connect 5 0 10 0;
+#X connect 8 0 13 0;
+#X connect 8 0 14 0;
+#X connect 9 0 8 0;
+#X connect 10 0 6 0;
+#X connect 12 0 9 0;
+#X connect 13 0 5 1;
+#X connect 14 0 10 2;
+#X connect 16 0 11 0;
+#X connect 17 0 18 0;
diff --git a/Gem/examples/02.advanced/11.SplinePath.pd b/Gem/examples/02.advanced/11.SplinePath.pd
new file mode 100644
index 0000000..3938ed8
--- /dev/null
+++ b/Gem/examples/02.advanced/11.SplinePath.pd
@@ -0,0 +1,87 @@
+#N canvas 355 106 641 505 10;
+#X floatatom 492 288 0 0 0 0 - - -;
+#X msg 421 55 1;
+#X msg 461 55 0;
+#X floatatom 463 210 0 0 0 0 - - -;
+#X obj 350 226 gemhead;
+#X obj 350 289 color;
+#X obj 350 403 square;
+#N canvas 21 297 600 400 arrays 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array array2 18 float 0;
+#X array array3 24 float 0;
+#X coords 0 1 15 -1 400 300 1;
+#X restore 63 4 graph;
+#X restore 26 474 page arrays;
+#X obj 421 254 spline_path 3 array2;
+#X obj 421 163 line;
+#X msg 421 129 0 \, 1 2000;
+#X obj 350 351 translate 1 0 0 0;
+#X obj 464 320 spline_path 3 array3;
+#X obj 421 98 metro 2000;
+#X text 109 29 this demonstrates the spline_path object;
+#X obj 28 345 loadbang;
+#X msg 28 380 \; array2 resize 18 \; array2 read ../data/valcolor.tab
+\; array3 resize 24 \; array3 read ../data/valmotion.tab;
+#N canvas 26 40 290 300 Gem.init 0;
+#X obj 68 196 outlet;
+#X obj 68 86 loadbang;
+#X msg 68 136 reset;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X restore 33 148 pd Gem.init;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 33 171 pd gemwin;
+#X connect 0 0 12 0;
+#X connect 1 0 13 0;
+#X connect 2 0 13 0;
+#X connect 3 0 8 0;
+#X connect 4 0 5 0;
+#X connect 5 0 11 0;
+#X connect 8 0 5 1;
+#X connect 9 0 8 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 0;
+#X connect 11 0 6 0;
+#X connect 12 0 11 2;
+#X connect 13 0 10 0;
+#X connect 15 0 16 0;
+#X connect 17 0 18 0;
diff --git a/Gem/examples/02.advanced/12.Hsv.pd b/Gem/examples/02.advanced/12.Hsv.pd
new file mode 100644
index 0000000..28379a2
--- /dev/null
+++ b/Gem/examples/02.advanced/12.Hsv.pd
@@ -0,0 +1,105 @@
+#N canvas 433 87 762 506 12;
+#X obj 248 352 gemhead;
+#X obj 248 412 color;
+#X msg 559 202 1 1 1;
+#X msg 524 156 1 0 0;
+#X obj 248 441 square;
+#X text 396 19 change the color;
+#X text 2 90 create and destroy the graphics window;
+#X obj 524 266 rgb2hsv;
+#X obj 379 303 hsv2rgb;
+#X obj 379 330 unpack 0 0 0;
+#X floatatom 379 363 0 0 0 3 red - -;
+#X floatatom 431 361 0 0 0 3 green - -;
+#X floatatom 490 361 0 0 0 3 blue - -;
+#X obj 541 327 unpack 0 0 0;
+#X floatatom 541 416 0 0 0 3 hue - -;
+#X floatatom 593 391 0 0 0 3 saturation - -;
+#X floatatom 632 353 0 0 0 3 value - -;
+#X msg 612 246 0 1 0;
+#X floatatom 379 85 0 0 1 2 hue #0-hue -;
+#X floatatom 400 121 0 0 1 2 saturation #0-saturation -;
+#X obj 399 174 t b f;
+#X floatatom 437 148 0 0 1 2 value #0-value -;
+#X obj 437 174 t b f;
+#X text 526 139 red;
+#X text 559 185 white;
+#X text 614 224 green;
+#X obj 379 203 pack 0 1 1;
+#N canvas 30 60 290 300 Gem.init 0;
+#X obj 68 196 outlet;
+#X obj 68 86 loadbang;
+#X msg 68 136 reset;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X restore 26 133 pd Gem.init;
+#N canvas 340 107 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 26 162 pd gemwin;
+#X obj 532 52 hsl 128 15 0 1 0 0 \$0-hue empty hue -2 -8 0 10 -262144
+-1 -1 0 1;
+#X obj 532 82 hsl 128 15 0 1 0 0 \$0-saturation empty saturation -2
+-8 0 10 -262144 -1 -1 0 1;
+#X obj 532 112 hsl 128 15 0 1 0 0 \$0-value empty value -2 -8 0 10
+-262144 -1 -1 0 1;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 2 0 7 0;
+#X connect 3 0 7 0;
+#X connect 7 0 8 0;
+#X connect 7 0 13 0;
+#X connect 8 0 1 1;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 9 1 11 0;
+#X connect 9 2 12 0;
+#X connect 13 0 14 0;
+#X connect 13 1 15 0;
+#X connect 13 2 16 0;
+#X connect 17 0 7 0;
+#X connect 18 0 26 0;
+#X connect 19 0 20 0;
+#X connect 20 0 26 0;
+#X connect 20 1 26 1;
+#X connect 21 0 22 0;
+#X connect 22 0 26 0;
+#X connect 22 1 26 2;
+#X connect 26 0 8 0;
+#X connect 27 0 28 0;
diff --git a/Gem/examples/02.advanced/13.ModelRescale.pd b/Gem/examples/02.advanced/13.ModelRescale.pd
new file mode 100644
index 0000000..3da2927
--- /dev/null
+++ b/Gem/examples/02.advanced/13.ModelRescale.pd
@@ -0,0 +1,107 @@
+#N canvas 8 40 682 502 12;
+#X floatatom 241 220 0 0 0 0 - - -;
+#X obj 208 268 translate;
+#X msg 275 220 0 0 1;
+#X obj 208 178 gemhead;
+#X floatatom 237 304 0 0 0 0 - - -;
+#X obj 43 357 gemhead 1;
+#X obj 43 395 world_light;
+#X msg 285 307 open ../data/venus.obj;
+#X floatatom 511 227 0 0 0 0 - - -;
+#X obj 478 275 translate;
+#X msg 545 227 0 0 1;
+#X obj 478 185 gemhead;
+#X msg 521 321 0 1 0;
+#X obj 478 346 rotate;
+#X floatatom 499 298 0 0 0 0 - - -;
+#X obj 478 396 model ../data/venus.obj;
+#X obj 208 339 scaleXYZ;
+#X obj 327 149 loadbang;
+#X msg 271 187 -10;
+#X msg 325 246 0.1;
+#X obj 333 278 t b b;
+#X text 224 34 notice that the 'rescale 0' message is sent;
+#X text 227 90 notice the size difference due to the scale and;
+#X text 229 109 translate objects on the left chain;
+#N canvas 22 20 213 300 Gem.init 0;
+#X obj 71 191 outlet;
+#X obj 71 81 loadbang;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 lighting 1;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 0;
+#X restore 34 98 pd Gem.init;
+#X msg 289 347 rescale 0;
+#X obj 208 389 model;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 34 124 pd gemwin;
+#X text 228 51 before the 'open' occurs;
+#X connect 0 0 1 1;
+#X connect 1 0 16 0;
+#X connect 2 0 1 2;
+#X connect 3 0 1 0;
+#X connect 4 0 16 1;
+#X connect 4 0 16 2;
+#X connect 4 0 16 3;
+#X connect 5 0 6 0;
+#X connect 7 0 26 0;
+#X connect 8 0 9 1;
+#X connect 9 0 13 0;
+#X connect 10 0 9 2;
+#X connect 11 0 9 0;
+#X connect 12 0 13 2;
+#X connect 13 0 15 0;
+#X connect 14 0 13 1;
+#X connect 16 0 26 0;
+#X connect 17 0 2 0;
+#X connect 17 0 18 0;
+#X connect 17 0 19 0;
+#X connect 17 0 20 0;
+#X connect 18 0 0 0;
+#X connect 19 0 4 0;
+#X connect 20 0 7 0;
+#X connect 20 1 25 0;
+#X connect 24 0 27 0;
+#X connect 25 0 26 0;
diff --git a/Gem/examples/02.advanced/14.RenderOrder.pd b/Gem/examples/02.advanced/14.RenderOrder.pd
new file mode 100644
index 0000000..a199d0b
--- /dev/null
+++ b/Gem/examples/02.advanced/14.RenderOrder.pd
@@ -0,0 +1,149 @@
+#N canvas 0 0 986 385 10;
+#X text 276 35 Blue Sphere;
+#N canvas 95 194 290 179 Gem.init 0;
+#X obj 118 18 loadbang;
+#X msg 201 78 reset;
+#X obj 118 113 outlet;
+#X obj 118 45 t b b;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 3 1 1 0;
+#X restore 72 145 pd Gem.init;
+#X obj 265 98 color 0 0 1 0.5;
+#X obj 265 229 pix_texture;
+#X obj 265 182 pix_image ../data/dancer.JPG;
+#X obj 265 251 alpha;
+#X obj 265 207 pix_alpha;
+#X obj 265 68 gemhead 50;
+#X obj 681 244 alpha;
+#X obj 681 173 gemhead 50;
+#X obj 681 197 color 0 1 0 0.5;
+#X obj 681 222 translateXYZ 0 -0.5 -1;
+#X obj 849 123 int 0;
+#X obj 891 123 + 1;
+#X obj 849 100 metro 50;
+#X obj 923 122 % 50;
+#X obj 849 81 tgl 15 0 empty render_onoff empty 0 -6 0 8 -262144 -1
+-1 0 1;
+#X obj 849 146 / 25;
+#X obj 849 168 - 1;
+#X msg 681 124 set \$1;
+#X floatatom 681 101 5 0 0 0 - - -;
+#X msg 679 9 40;
+#X msg 696 32 60;
+#X obj 849 191 t f f;
+#X msg 709 54 auto;
+#N canvas 189 208 450 300 set-priority 0;
+#X obj 103 59 inlet;
+#X obj 94 277 outlet;
+#X obj 103 96 route auto;
+#X obj 352 59 inlet;
+#X obj 352 88 < 0;
+#X obj 352 112 change;
+#X obj 352 135 select 1 0;
+#X msg 327 169 40;
+#X msg 363 170 60;
+#X obj 94 247 spigot;
+#X obj 168 120 t f b;
+#X msg 198 145 0;
+#X msg 103 117 10;
+#X obj 103 138 t f f;
+#X connect 0 0 2 0;
+#X connect 2 0 12 0;
+#X connect 2 1 10 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 9 0;
+#X connect 9 0 1 0;
+#X connect 10 0 1 0;
+#X connect 10 1 11 0;
+#X connect 11 0 9 1;
+#X connect 12 0 13 0;
+#X connect 13 0 9 1;
+#X connect 13 1 5 0;
+#X restore 693 76 pd set-priority;
+#X obj 265 272 square 3;
+#X obj 681 266 square 3;
+#X text 866 81 movement on/off;
+#X text 736 9 priority 40 (<50);
+#X text 735 28 priority 60 (>50);
+#X text 748 51 dynamic ordering;
+#X text 218 299 the rendering order does matter \, when doing things
+like alpha-blending: alpha-blending only works if the semi-transparent
+(alpha<1) object is rendered AFTER the objects that shine through;
+#X text 596 291 this turns out to be a problem in dynamic scenes (eg:
+with moving objects/viewpoint):: if a semi-transparent object used
+to be "in front" of another semi-transparent object \, but suddenly
+becomes "behind" \, the rendering order has to be changed. do this
+\, by giving the [gemhead] a "set" message;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 72 168 pd gemwin;
+#X connect 1 0 34 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 26 0;
+#X connect 6 0 3 0;
+#X connect 7 0 2 0;
+#X connect 8 0 27 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 8 0;
+#X connect 12 0 13 0;
+#X connect 12 0 17 0;
+#X connect 13 0 15 0;
+#X connect 14 0 12 0;
+#X connect 15 0 12 1;
+#X connect 16 0 14 0;
+#X connect 17 0 18 0;
+#X connect 18 0 23 0;
+#X connect 19 0 9 0;
+#X connect 20 0 19 0;
+#X connect 21 0 25 0;
+#X connect 22 0 25 0;
+#X connect 23 0 11 3;
+#X connect 23 1 25 1;
+#X connect 24 0 25 0;
+#X connect 25 0 20 0;
diff --git a/Gem/examples/02.advanced/15.GemWin.pd b/Gem/examples/02.advanced/15.GemWin.pd
new file mode 100644
index 0000000..a414b15
--- /dev/null
+++ b/Gem/examples/02.advanced/15.GemWin.pd
@@ -0,0 +1,73 @@
+#N canvas 51 56 650 553 10;
+#X obj 53 224 gemwin;
+#X obj 38 397 gemmouse;
+#X obj 109 206 r gemwin_mess;
+#X obj 63 459 s gemwin_mess;
+#X obj 63 418 del 100;
+#X msg 63 439 destroy;
+#X obj 15 86 cnv 15 100 100 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X msg 53 105 create;
+#X msg 26 143 destroy;
+#X obj 238 3 cnv 15 400 480 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X obj 14 296 cnv 15 180 80 empty empty cursor 20 0 0 14 -195568 -66577
+0;
+#X msg 20 327 \; gemwin_mess cursor \$1;
+#X obj 20 308 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X text 39 306 show/hide cursor;
+#X text 32 484 press the left-mouse-button to kill the gem-window;
+#X obj 247 36 cnv 15 380 120 empty empty title-bar 20 0 0 14 -233017
+-66577 0;
+#X msg 253 49 title Graphic's_Environment_for_Multimedia;
+#X msg 286 94 title \$1;
+#X symbolatom 286 72 10 0 0;
+#X text 359 94 type your own title;
+#X obj 253 125 s gemwin_mess;
+#X obj 247 259 cnv 15 380 120 empty empty dimensions+positioning 20
+0 0 14 -233017 -66577 0;
+#X obj 253 348 s gemwin_mess;
+#X obj 248 167 cnv 15 380 80 empty empty window-decorations 20 0 0
+14 -233017 -66577 0;
+#X obj 258 185 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X msg 258 204 \; gemwin_mess border \$1;
+#X msg 253 285 dimen 500 500;
+#X msg 273 315 dimen 200 421;
+#X obj 417 347 s gemwin_mess;
+#X msg 417 284 offset 0 0;
+#X msg 437 314 offset 500 70;
+#X text 277 183 with/out borders;
+#X text 534 282 offset might;
+#X text 540 298 work only;
+#X text 552 315 without;
+#X text 548 330 borders !;
+#X obj 247 391 cnv 15 380 80 empty empty full-screen 20 0 0 14 -233017
+-66577 0;
+#X obj 257 409 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X msg 257 428 \; gemwin_mess fullscreen \$1;
+#X text 276 407 fullscreen/windowed;
+#X text 11 14 how to control the GEM-window;
+#X text 291 7 use these BEFORE creating the window!;
+#X text 466 398 titles \, borders \,;
+#X text 458 415 dimensions & offsets;
+#X text 468 432 mean nothing in;
+#X text 463 448 fullscreen mode !;
+#X connect 1 2 4 0;
+#X connect 2 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 12 0 11 0;
+#X connect 16 0 20 0;
+#X connect 17 0 20 0;
+#X connect 18 0 17 0;
+#X connect 24 0 25 0;
+#X connect 26 0 22 0;
+#X connect 27 0 22 0;
+#X connect 29 0 28 0;
+#X connect 30 0 28 0;
+#X connect 37 0 38 0;
diff --git a/Gem/examples/02.advanced/16.vertex_program.pd b/Gem/examples/02.advanced/16.vertex_program.pd
new file mode 100644
index 0000000..3d940b4
--- /dev/null
+++ b/Gem/examples/02.advanced/16.vertex_program.pd
@@ -0,0 +1,189 @@
+#N canvas 27 90 540 557 10;
+#X obj 404 142 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 235 42 gemhead;
+#X obj 235 111 pix_texture;
+#X obj 235 497 rotateXYZ;
+#X obj 106 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0 256;
+#X obj 167 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0 256;
+#X obj 395 250 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 -0.25 256;
+#X obj 425 267 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0.5 256;
+#X obj 458 285 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0.2 256;
+#X obj 425 304 t b f;
+#X obj 462 304 t b f;
+#X obj 303 413 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 34336 256;
+#X obj 371 355 nbx 5 14 -1e+37 1e+37 0 0 empty empty parameter# 0 -6
+0 10 -262144 -1 -1 0 256;
+#X obj 440 324 pack 0 0 0 0;
+#X obj 235 431 GEMglProgramEnvParameter4fvARB;
+#X obj 242 358 loadbang;
+#X obj 242 390 GLdefine GL_VERTEX_PROGRAM_ARB;
+#X text 253 374 GL_VERTEX_PROGRAM_ARB = 34336;
+#X msg 188 136 print;
+#X text 382 23 open a texture;
+#X text 343 123 open a vertex-program;
+#X text 420 469 open a model;
+#N canvas 0 0 450 300 defaults 0;
+#X obj 112 43 loadbang;
+#X msg 102 121 0;
+#X obj 102 186 outlet;
+#X obj 102 84 t b b;
+#X obj 164 156 unpack 0 0 0;
+#X obj 168 188 outlet;
+#X obj 217 189 outlet;
+#X obj 263 189 outlet;
+#X text 101 208 param#;
+#X text 205 216 param-values;
+#X obj 179 44 inlet;
+#X msg 161 122 -0.25 0.5 0.2;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 3 0 1 0;
+#X connect 3 1 11 0;
+#X connect 4 0 5 0;
+#X connect 4 1 6 0;
+#X connect 4 2 7 0;
+#X connect 10 0 3 0;
+#X connect 11 0 4 0;
+#X restore 371 228 pd defaults;
+#X msg 371 211 default;
+#X obj 235 531 model ../data/venus.obj;
+#X obj 235 82 pix_image ../data/64shade.tif;
+#N canvas 0 0 450 300 open 0;
+#X obj 75 103 openpanel;
+#X obj 75 173 outlet;
+#X obj 75 127 t b s;
+#X msg 105 152 set open \$1;
+#X obj 75 80 inlet;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X restore 347 141 pd open;
+#X obj 418 46 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#N canvas 0 0 450 300 open 0;
+#X obj 75 103 openpanel;
+#X obj 75 173 outlet;
+#X obj 75 127 t b s;
+#X msg 105 152 set open \$1;
+#X obj 75 80 inlet;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X restore 361 45 pd open;
+#X msg 361 65 open ../data/64shade.tif;
+#X obj 434 495 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#N canvas 0 0 450 300 open 0;
+#X obj 75 103 openpanel;
+#X obj 75 173 outlet;
+#X obj 75 127 t b s;
+#X msg 105 152 set open \$1;
+#X obj 75 80 inlet;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X restore 377 494 pd open;
+#X msg 377 514 open ../data/venus.obj;
+#X obj 44 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0 256;
+#X msg 66 313 bang;
+#X text 60 294 2nd click me;
+#X obj 143 330 t b b b;
+#X text 54 448 3rd play me;
+#X text 79 18 1st click me;
+#X text 295 275 4th play me;
+#X msg 347 161 open ../data/toon.vp;
+#X obj 235 178 vertex_program ../data/toon.vp;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 54 83 pd gemwin;
+#X connect 0 0 26 0;
+#X connect 1 0 25 0;
+#X connect 2 0 41 0;
+#X connect 3 0 24 0;
+#X connect 4 0 3 2;
+#X connect 5 0 3 3;
+#X connect 6 0 13 0;
+#X connect 7 0 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 13 0;
+#X connect 9 1 13 1;
+#X connect 10 0 13 0;
+#X connect 10 1 13 2;
+#X connect 11 0 14 1;
+#X connect 12 0 14 2;
+#X connect 13 0 14 3;
+#X connect 14 0 3 0;
+#X connect 15 0 16 0;
+#X connect 16 0 11 0;
+#X connect 18 0 41 0;
+#X connect 22 0 12 0;
+#X connect 22 1 6 0;
+#X connect 22 2 7 0;
+#X connect 22 3 8 0;
+#X connect 23 0 22 0;
+#X connect 25 0 2 0;
+#X connect 26 0 40 0;
+#X connect 27 0 28 0;
+#X connect 28 0 29 0;
+#X connect 29 0 25 0;
+#X connect 30 0 31 0;
+#X connect 31 0 32 0;
+#X connect 32 0 24 0;
+#X connect 33 0 3 1;
+#X connect 34 0 36 0;
+#X connect 36 0 32 0;
+#X connect 36 1 40 0;
+#X connect 36 2 29 0;
+#X connect 40 0 41 0;
+#X connect 41 0 14 0;
diff --git a/Gem/examples/02.advanced/17.fragment_program.pd b/Gem/examples/02.advanced/17.fragment_program.pd
new file mode 100644
index 0000000..2b1ce3b
--- /dev/null
+++ b/Gem/examples/02.advanced/17.fragment_program.pd
@@ -0,0 +1,126 @@
+#N canvas 27 90 540 557 10;
+#X obj 404 142 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 235 42 gemhead;
+#X obj 235 497 rotateXYZ;
+#X obj 106 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0 256;
+#X obj 167 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0 256;
+#X msg 188 136 print;
+#X text 343 123 open a vertex-program;
+#X text 420 469 open a model;
+#X obj 235 531 model ../data/venus.obj;
+#N canvas 0 0 450 300 open 0;
+#X obj 75 103 openpanel;
+#X obj 75 173 outlet;
+#X obj 75 127 t b s;
+#X msg 105 152 set open \$1;
+#X obj 75 80 inlet;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X restore 347 141 pd open;
+#X obj 434 495 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#N canvas 0 0 450 300 open 0;
+#X obj 75 103 openpanel;
+#X obj 75 173 outlet;
+#X obj 75 127 t b s;
+#X msg 105 152 set open \$1;
+#X obj 75 80 inlet;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X restore 377 494 pd open;
+#X msg 377 514 open ../data/venus.obj;
+#X obj 44 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0 256;
+#X msg 66 313 bang;
+#X text 60 294 2nd click me;
+#X obj 143 330 t b b b;
+#X text 54 448 3rd play me;
+#X msg 347 161 open ../data/random.fp;
+#X floatatom 318 49 5 0 0 0 - - -;
+#X obj 235 85 colorRGB 1 1 1;
+#X obj 66 247 world_light;
+#X obj 60 214 gemhead 1;
+#X obj 235 178 fragment_program ../data/random.fp;
+#X text 362 48 play me;
+#X obj 380 390 gemhead;
+#X obj 380 412 translateXYZ -2 0 0;
+#X obj 235 416 translateXYZ 2 0 0;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 70 126 pd gemwin;
+#N canvas 0 0 450 300 Gem.init 0;
+#X obj 85 239 outlet;
+#X msg 85 215 reset \, lighting 1;
+#X obj 85 192 loadbang;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X restore 70 104 pd Gem.init;
+#X connect 0 0 9 0;
+#X connect 1 0 20 0;
+#X connect 2 0 8 0;
+#X connect 3 0 2 2;
+#X connect 4 0 2 3;
+#X connect 5 0 23 0;
+#X connect 9 0 18 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 8 0;
+#X connect 13 0 2 1;
+#X connect 14 0 16 0;
+#X connect 16 0 12 0;
+#X connect 16 1 18 0;
+#X connect 18 0 23 0;
+#X connect 19 0 20 2;
+#X connect 20 0 23 0;
+#X connect 22 0 21 0;
+#X connect 23 0 27 0;
+#X connect 25 0 26 0;
+#X connect 26 0 2 0;
+#X connect 27 0 2 0;
+#X connect 29 0 28 0;
diff --git a/Gem/examples/02.advanced/18.gl_shading_language.pd b/Gem/examples/02.advanced/18.gl_shading_language.pd
new file mode 100644
index 0000000..2562b27
--- /dev/null
+++ b/Gem/examples/02.advanced/18.gl_shading_language.pd
@@ -0,0 +1,182 @@
+#N canvas 54 22 842 789 10;
+#X obj 225 24 gemhead 1;
+#X obj 225 47 world_light;
+#X obj 77 112 gemhead;
+#X obj 77 171 glsl_vertex;
+#X obj 148 131 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 170 129 open a vertex-program;
+#N canvas 0 22 450 300 open 0;
+#X obj 75 103 openpanel;
+#X obj 75 173 outlet;
+#X obj 75 127 t b s;
+#X msg 105 152 set open \$1;
+#X obj 75 80 inlet;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X restore 91 130 pd open;
+#X msg 35 142 print;
+#X obj 77 733 rotateXYZ;
+#X obj 126 714 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0 256;
+#X obj 126 697 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0 256;
+#X obj 126 680 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0 256;
+#X obj 206 25 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 77 576 glsl_program;
+#X obj 150 393 pack 0 0;
+#X obj 143 246 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#N canvas 0 22 450 300 open 0;
+#X obj 75 103 openpanel;
+#X obj 75 173 outlet;
+#X obj 75 127 t b s;
+#X msg 105 152 set open \$1;
+#X obj 75 80 inlet;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X restore 86 245 pd open;
+#X text 164 244 open a fragment-program;
+#X msg 34 266 print;
+#X obj 171 373 t b f;
+#X msg 335 92 bang;
+#X obj 77 753 teapot;
+#X obj 171 328 change;
+#X obj 149 190 change;
+#X msg 150 433 link \$1 \$2;
+#X msg 33 486 print;
+#X msg 266 546 Phong \$1;
+#X obj 269 508 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X floatatom 266 528 5 0 0 0 - - -;
+#X obj 77 612 t a b;
+#X obj 107 632 spigot;
+#X obj 144 614 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 107 652 i;
+#X obj 135 652 + 1;
+#X obj 163 652 % 360;
+#X text 435 96 click here to load both the vertex- and the fragment-shader
+;
+#X text 165 172 the vertex shader;
+#X obj 77 308 glsl_fragment;
+#X text 191 311 the fragment shader;
+#X text 222 395 whenever either the fragment-shader ID or the vertex-shader
+ID has changed \, we trigger the linking of the 2 modules;
+#X floatatom 171 354 2 0 0 0 ID - -;
+#X floatatom 149 213 2 0 0 0 ID - -;
+#X obj 168 454 print linking;
+#X text 264 441 order of module IDs does not matter...;
+#X text 96 487 after linking \, click "print" to get some info about
+the compiled shader program;
+#X text 330 550 the Toon-shader has a unifom variable "Phong" (see
+"print") \, which we can change to modify the effect.;
+#X text 213 264 pd's search path is searched for the given filename
+\; just add the examples/data folder to your path options and this
+example should work;
+#X obj 335 133 t s s;
+#X msg 91 150 open \$1.vert;
+#X msg 86 265 open \$1.frag;
+#X symbolatom 381 93 0 0 0 0 - - -;
+#X obj 335 114 symbol ../data/Toon;
+#N canvas 340 107 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 39 51 pd gemwin;
+#X msg 39 29 lighting \$1;
+#X obj 39 10 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X connect 0 0 1 0;
+#X connect 2 0 3 0;
+#X connect 3 0 37 0;
+#X connect 3 1 23 0;
+#X connect 4 0 6 0;
+#X connect 6 0 48 0;
+#X connect 7 0 3 0;
+#X connect 8 0 21 0;
+#X connect 9 0 8 3;
+#X connect 10 0 8 2;
+#X connect 11 0 8 1;
+#X connect 12 0 0 0;
+#X connect 13 0 29 0;
+#X connect 14 0 24 0;
+#X connect 15 0 16 0;
+#X connect 16 0 49 0;
+#X connect 18 0 37 0;
+#X connect 19 0 14 0;
+#X connect 19 1 14 1;
+#X connect 20 0 51 0;
+#X connect 22 0 40 0;
+#X connect 23 0 41 0;
+#X connect 24 0 13 0;
+#X connect 24 0 42 0;
+#X connect 25 0 13 0;
+#X connect 26 0 13 0;
+#X connect 27 0 28 0;
+#X connect 28 0 26 0;
+#X connect 29 0 8 0;
+#X connect 29 1 30 0;
+#X connect 30 0 32 0;
+#X connect 31 0 30 1;
+#X connect 32 0 33 0;
+#X connect 32 0 11 0;
+#X connect 32 0 10 0;
+#X connect 32 0 9 0;
+#X connect 33 0 34 0;
+#X connect 34 0 32 1;
+#X connect 37 0 13 0;
+#X connect 37 1 22 0;
+#X connect 40 0 19 0;
+#X connect 41 0 14 0;
+#X connect 47 0 48 0;
+#X connect 47 1 49 0;
+#X connect 48 0 3 0;
+#X connect 49 0 37 0;
+#X connect 50 0 51 0;
+#X connect 51 0 47 0;
+#X connect 53 0 52 0;
+#X connect 54 0 53 0;
diff --git a/Gem/examples/02.advanced/19.pointer.pd b/Gem/examples/02.advanced/19.pointer.pd
new file mode 100644
index 0000000..7db5c4f
--- /dev/null
+++ b/Gem/examples/02.advanced/19.pointer.pd
@@ -0,0 +1,217 @@
+#N canvas 102 54 864 638 10;
+#X obj 209 223 gemhead;
+#X obj 241 277 t a a a;
+#X obj 264 320 cube 1;
+#X obj 238 66 world_light;
+#X obj 238 41 gemhead;
+#X obj 37 226 gemhead;
+#X obj 37 321 sphere 1.3 33;
+#X obj 287 300 rotateXYZ 60 30 0;
+#X obj 37 300 rotateXYZ 60 30 0;
+#X text 36 184 #1:;
+#X text 209 181 #2:;
+#X obj 37 428 sphere 1.3 33;
+#X obj 37 407 rotateXYZ 60 30 0;
+#X obj 209 248 t a a;
+#X obj 595 288 gemlist;
+#X obj 595 223 gemhead;
+#X obj 595 250 t b b a;
+#X obj 37 202 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 209 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 595 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 37 342 translateXYZ 2 0 0;
+#X obj 37 449 translateXYZ 2 0 0;
+#X obj 241 341 translateXYZ 2 0 0;
+#X obj 209 386 t a a a;
+#X obj 232 429 cube 1;
+#X obj 255 409 rotateXYZ 60 30 0;
+#X obj 209 450 translateXYZ 2 0 0;
+#X obj 595 410 rotateXYZ 60 30 0;
+#X obj 595 452 translateXYZ 2 0 0;
+#X obj 595 431 sphere 1.6 4;
+#X text 29 498 example #1 is the usual way to use Gem \, but the technique
+shown in example #2 can be more flexible...;
+#N canvas 186 321 446 463 more_interating_1 0;
+#X obj 22 64 gemhead;
+#X obj 22 351 rotateXYZ 0 0 12;
+#X obj 22 274 scaleXYZ 0.97 0.9 1;
+#X obj 22 296 translateXYZ 0.5 0 0;
+#X obj 22 376 circle 0.2;
+#X floatatom 131 331 5 0 0 0 - - -;
+#X obj 22 226 gemlist;
+#X obj 22 204 until;
+#X msg 22 180 100;
+#X obj 22 158 t b a;
+#X obj 22 111 translateXYZ -3 0 0;
+#X obj 22 43 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X text 85 198 "repeat" 100 times the same "gemlist";
+#X connect 0 0 10 0;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 1 3;
+#X connect 6 0 2 0;
+#X connect 7 0 6 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 9 1 6 1;
+#X connect 10 0 9 0;
+#X connect 11 0 0 0;
+#X restore 32 561 pd more_interating_1;
+#N canvas 178 159 464 582 more_interating_2 0;
+#X obj 22 69 gemhead;
+#X obj 22 377 scaleXYZ 0.97 0.9 1;
+#X obj 22 505 circle 0.2;
+#X obj 22 235 gemlist;
+#X obj 22 213 until;
+#X msg 22 189 100;
+#X obj 22 167 t b a;
+#X obj 185 322 f;
+#X obj 277 309 random 1000;
+#X obj 22 480 rotateXYZ 0 0 0;
+#X obj 185 420 *;
+#X obj 22 132 t a b;
+#X obj 22 264 t a b b;
+#X msg 277 283 seed \$1;
+#X obj 277 256 f;
+#X floatatom 295 234 5 0 0 0 - - -;
+#X obj 277 334 - 500;
+#X obj 185 441 / 1000;
+#X obj 22 400 translateXYZ -0.5 0 0;
+#X obj 22 103 translateXYZ 3 0 0;
+#X obj 22 42 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X text 343 233 <- change random;
+#X text 276 356 rotation angle is random;
+#X text 200 390 amplitude decrease;
+#X msg 203 296 100;
+#X obj 222 351 - 1;
+#X connect 0 0 19 0;
+#X connect 1 0 18 0;
+#X connect 3 0 12 0;
+#X connect 4 0 3 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 6 1 3 1;
+#X connect 7 0 25 0;
+#X connect 7 0 10 0;
+#X connect 8 0 16 0;
+#X connect 9 0 2 0;
+#X connect 10 0 17 0;
+#X connect 11 0 6 0;
+#X connect 11 1 24 0;
+#X connect 11 1 14 0;
+#X connect 12 0 1 0;
+#X connect 12 1 7 0;
+#X connect 12 2 8 0;
+#X connect 13 0 8 0;
+#X connect 14 0 13 0;
+#X connect 15 0 14 1;
+#X connect 16 0 10 1;
+#X connect 17 0 9 3;
+#X connect 18 0 9 0;
+#X connect 19 0 11 0;
+#X connect 20 0 0 0;
+#X connect 24 0 7 1;
+#X connect 25 0 7 1;
+#X restore 32 581 pd more_interating_2;
+#X obj 445 223 gemhead;
+#X obj 445 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 443 178 #3:;
+#X obj 445 410 rotateXYZ 60 30 0;
+#X obj 445 452 translateXYZ 2 0 0;
+#X obj 445 271 t a a;
+#X text 593 178 #4:;
+#X text 611 314 [gemlist] stores the current state;
+#X text 613 330 and outputs it when banged;
+#X text 30 528 The example #4 can easily be extended to use many primitives.
+;
+#X text 31 122 [gemhead]'s output is a special message describing the
+"state" of the system. This state is changed by the GEM objects. This
+means that the examples below are equivalent:;
+#X obj 445 431 teapot 1;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 44 55 pd gemwin;
+#N canvas 0 0 450 300 Gem.init 0;
+#X obj 94 232 outlet;
+#X obj 94 183 loadbang;
+#X msg 94 208 lighting 1;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X restore 44 36 pd Gem.init;
+#X connect 0 0 13 0;
+#X connect 1 0 22 0;
+#X connect 1 1 2 0;
+#X connect 1 2 7 0;
+#X connect 4 0 3 0;
+#X connect 5 0 8 0;
+#X connect 6 0 20 0;
+#X connect 8 0 6 0;
+#X connect 11 0 21 0;
+#X connect 12 0 11 0;
+#X connect 13 0 23 0;
+#X connect 13 1 1 0;
+#X connect 14 0 27 0;
+#X connect 15 0 16 0;
+#X connect 16 0 14 0;
+#X connect 16 1 14 0;
+#X connect 16 2 14 1;
+#X connect 17 0 5 0;
+#X connect 18 0 0 0;
+#X connect 19 0 15 0;
+#X connect 20 0 12 0;
+#X connect 23 0 26 0;
+#X connect 23 1 24 0;
+#X connect 23 2 25 0;
+#X connect 27 0 29 0;
+#X connect 29 0 28 0;
+#X connect 33 0 38 0;
+#X connect 34 0 33 0;
+#X connect 36 0 44 0;
+#X connect 38 0 36 0;
+#X connect 38 1 36 0;
+#X connect 44 0 37 0;
+#X connect 46 0 45 0;
diff --git a/Gem/examples/02.advanced/20.double-gemhead_vs_repeat.pd b/Gem/examples/02.advanced/20.double-gemhead_vs_repeat.pd
new file mode 100644
index 0000000..518e853
--- /dev/null
+++ b/Gem/examples/02.advanced/20.double-gemhead_vs_repeat.pd
@@ -0,0 +1,184 @@
+#N canvas 265 100 742 519 10;
+#X obj 93 144 gemhead;
+#X obj 93 205 b;
+#X obj 93 124 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 93 336 gemhead;
+#X msg 25 305 0;
+#X obj 25 285 loadbang;
+#X obj 93 260 t b a;
+#X obj 156 336 unpack 0 0 0;
+#X obj 93 385 translateXYZ 0 -2 0;
+#X msg 93 225 0 -2 0 \, 0 2 0;
+#X text 203 225 two messages in one;
+#X text 151 144 [gemhead]-"metro";
+#X obj 93 426 circle 0.2;
+#X text 40 25 the "double [gemhead] idiom" vs. [repeat];
+#X obj 438 146 gemhead;
+#X obj 438 128 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 479 375 unpack 0 0 0;
+#X text 525 206 two messages in one;
+#X obj 438 425 square 0.2;
+#X obj 479 307 select 0 1;
+#X obj 479 284 f;
+#X obj 438 404 translateXYZ 0 0 0;
+#X obj 354 341 loadbang;
+#X msg 354 368 draw line;
+#X obj 438 206 t a a b;
+#X obj 438 229 separator;
+#X obj 438 257 t a b;
+#X msg 497 259 0;
+#X msg 479 328 0 -2 0;
+#X msg 511 348 0 2 0;
+#X obj 508 284 + 1;
+#X text 258 65 The gemhead object resets the states for OpenGL and
+also some pix_ settings. Anything after it is starts as a clean state
+similar to combining [separator] and [pix_separator]. (cc);
+#N canvas 220 0 701 555 more_on_the_"repeat"_technics 0;
+#X obj 21 54 gemhead;
+#X obj 21 281 separator;
+#X obj 21 128 t a b;
+#X msg 118 270 seed 1;
+#X obj 21 445 translateXYZ;
+#X obj 21 470 circle 0.1;
+#X obj 118 354 random 200;
+#X obj 199 354 random 200;
+#X obj 118 376 - 100;
+#X obj 199 377 - 100;
+#X obj 199 398 / 30;
+#X obj 118 397 / 30;
+#X msg 199 270 seed 2;
+#X obj 21 310 t a b b;
+#X obj 118 313 spigot 0;
+#X obj 199 312 spigot 0;
+#X obj 278 276 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 311 274 <- if you reset the random at the begining of each
+frame \, then all frames look the same.;
+#X obj 21 101 scaleXYZ 1 1 1;
+#X floatatom 52 80 5 0 0 0 - - -;
+#X floatatom 95 80 5 0 0 0 - - -;
+#X obj 21 230 gemlist;
+#X obj 21 208 until;
+#X msg 21 184 100;
+#X obj 21 162 t b a;
+#X text 23 504 This patch shows how to draw the same primitive with
+the a single [gemhead] many times;
+#X obj 21 35 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X connect 0 0 18 0;
+#X connect 1 0 13 0;
+#X connect 2 0 24 0;
+#X connect 2 1 3 0;
+#X connect 2 1 12 0;
+#X connect 3 0 14 0;
+#X connect 4 0 5 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 11 0;
+#X connect 9 0 10 0;
+#X connect 10 0 4 2;
+#X connect 11 0 4 1;
+#X connect 12 0 15 0;
+#X connect 13 0 4 0;
+#X connect 13 1 6 0;
+#X connect 13 1 7 0;
+#X connect 14 0 6 0;
+#X connect 15 0 7 0;
+#X connect 16 0 14 1;
+#X connect 16 0 15 1;
+#X connect 18 0 2 0;
+#X connect 19 0 18 1;
+#X connect 20 0 18 2;
+#X connect 21 0 1 0;
+#X connect 22 0 21 0;
+#X connect 23 0 22 0;
+#X connect 24 0 23 0;
+#X connect 24 1 21 1;
+#X connect 26 0 0 0;
+#X restore 370 469 pd more_on_the_"repeat"_technics;
+#X obj 93 186 translateXYZ;
+#X floatatom 120 168 5 0 0 0 - - -;
+#X text 168 167 <- fun!;
+#X obj 438 187 translateXYZ;
+#X floatatom 465 169 5 0 0 0 - - -;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 53 69 pd gemwin;
+#X connect 0 0 33 0;
+#X connect 1 0 9 0;
+#X connect 2 0 0 0;
+#X connect 3 0 8 0;
+#X connect 4 0 3 0;
+#X connect 5 0 4 0;
+#X connect 6 0 3 0;
+#X connect 6 1 7 0;
+#X connect 7 0 8 1;
+#X connect 7 1 8 2;
+#X connect 7 2 8 3;
+#X connect 8 0 12 0;
+#X connect 9 0 6 0;
+#X connect 14 0 36 0;
+#X connect 15 0 14 0;
+#X connect 16 0 21 1;
+#X connect 16 1 21 2;
+#X connect 16 2 21 3;
+#X connect 19 0 28 0;
+#X connect 19 1 29 0;
+#X connect 20 0 19 0;
+#X connect 20 0 30 0;
+#X connect 21 0 18 0;
+#X connect 22 0 23 0;
+#X connect 23 0 18 0;
+#X connect 24 0 25 0;
+#X connect 24 1 25 0;
+#X connect 24 2 27 0;
+#X connect 25 0 26 0;
+#X connect 26 0 21 0;
+#X connect 26 1 20 0;
+#X connect 27 0 20 1;
+#X connect 28 0 16 0;
+#X connect 29 0 16 0;
+#X connect 30 0 20 1;
+#X connect 33 0 1 0;
+#X connect 34 0 33 1;
+#X connect 36 0 24 0;
+#X connect 37 0 36 1;
diff --git a/Gem/examples/02.advanced/21.basic_LSystem.pd b/Gem/examples/02.advanced/21.basic_LSystem.pd
new file mode 100644
index 0000000..301b09a
--- /dev/null
+++ b/Gem/examples/02.advanced/21.basic_LSystem.pd
@@ -0,0 +1,138 @@
+#N canvas 515 27 647 743 10;
+#X obj 15 16 gemhead;
+#X obj 76 483 GEMglPushMatrix;
+#X obj 96 462 GEMglPopMatrix;
+#X floatatom 353 502 5 0 0 0 - - -;
+#X obj 15 63 rotateXYZ 0 0 90;
+#X floatatom 201 508 5 0 0 0 - - -;
+#X floatatom 201 486 5 0 0 0 - - -;
+#X obj 262 35 gemhead;
+#X obj 262 61 world_light;
+#X obj 15 607 translateXYZ 0.05 0 0;
+#X obj 15 140 route F;
+#X text 271 163 <- rule 1;
+#X obj 15 187 route F;
+#X msg 15 211 F \, [ \, - \, F \, F \, ] \, F \, [ \, + \, F \, ] \,
+F;
+#X obj 15 235 route F;
+#X text 272 209 <- rule 2;
+#X text 271 257 <- rule 3;
+#X msg 15 110 F;
+#X obj 15 85 t b a;
+#X obj 15 558 translateXYZ 0.05 0 0;
+#X obj 15 583 rectangle 0.1 0.01;
+#X obj 15 41 translateXYZ 0 -3 0;
+#X obj 35 530 rotateXYZ 0 0 50;
+#X obj 54 506 rotateXYZ 0 0 -40;
+#X obj 353 521 / 100;
+#X msg 353 479 10;
+#X obj 353 456 loadbang;
+#X text 243 485 <- try this;
+#X text 125 310 <- create the primitive according to the Lsystem;
+#X text 270 276 These rules create an Lsystem;
+#X text 152 381 <- Store the current state sent by [gemhead] and distribute
+it to the corresponding primitives;
+#X text 397 502 <- size of the system;
+#X msg 15 164 F \, [ \, - \, F \, ] \, F \, [ \, + \, F \, ] \, F;
+#X text 12 640 This is a basic implementation of Lindenmayer System
+(LSystem) in GEM. Wikipedia is a good place for informations about
+Lsystems;
+#X obj 15 351 gemlist;
+#X obj 47 110 s \$0-gemlist;
+#X obj 35 372 gemlist;
+#X obj 54 395 gemlist;
+#X obj 76 417 gemlist;
+#X obj 96 438 gemlist;
+#X obj 142 330 r \$0-gemlist;
+#X obj 15 309 route F + - [ ];
+#X msg 15 259 F \, [ \, - \, F \, F \, ] \, F \, [ \, + \, F \, ] \,
+F;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 0 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 255 gemwin;
+#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 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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 377 62 pd gemwin;
+#N canvas 0 0 450 300 Gem.init 0;
+#X obj 67 72 loadbang;
+#X msg 67 93 lighting 1;
+#X obj 67 114 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 377 40 pd Gem.init;
+#X connect 0 0 21 0;
+#X connect 3 0 24 0;
+#X connect 4 0 18 0;
+#X connect 5 0 22 3;
+#X connect 6 0 23 3;
+#X connect 7 0 8 0;
+#X connect 10 0 32 0;
+#X connect 10 1 12 0;
+#X connect 12 0 13 0;
+#X connect 12 1 14 0;
+#X connect 13 0 14 0;
+#X connect 14 0 42 0;
+#X connect 14 1 41 0;
+#X connect 17 0 10 0;
+#X connect 18 0 17 0;
+#X connect 18 1 35 0;
+#X connect 19 0 20 0;
+#X connect 20 0 9 0;
+#X connect 21 0 4 0;
+#X connect 24 0 9 1;
+#X connect 24 0 19 1;
+#X connect 24 0 20 1;
+#X connect 25 0 3 0;
+#X connect 26 0 25 0;
+#X connect 32 0 12 0;
+#X connect 34 0 19 0;
+#X connect 36 0 22 0;
+#X connect 37 0 23 0;
+#X connect 38 0 1 0;
+#X connect 39 0 2 0;
+#X connect 40 0 34 1;
+#X connect 40 0 36 1;
+#X connect 40 0 37 1;
+#X connect 40 0 38 1;
+#X connect 40 0 39 1;
+#X connect 41 0 34 0;
+#X connect 41 1 36 0;
+#X connect 41 2 37 0;
+#X connect 41 3 38 0;
+#X connect 41 4 39 0;
+#X connect 42 0 41 0;
+#X connect 44 0 43 0;
diff --git a/Gem/examples/02.advanced/22.double-iterative.pd b/Gem/examples/02.advanced/22.double-iterative.pd
new file mode 100644
index 0000000..218c30f
--- /dev/null
+++ b/Gem/examples/02.advanced/22.double-iterative.pd
@@ -0,0 +1,118 @@
+#N canvas 0 0 473 588 10;
+#X obj 32 103 gemhead;
+#X obj 106 235 gemlist;
+#X msg 106 192 20;
+#X obj 106 213 until;
+#X obj 32 149 route gem_state;
+#X obj 32 171 route float;
+#X obj 32 127 t a a;
+#X obj 106 259 rotateXYZ 10 20 30;
+#X obj 180 413 gemlist;
+#X msg 180 370 20;
+#X obj 180 391 until;
+#X obj 106 327 route gem_state;
+#X obj 106 349 route float;
+#X obj 106 305 t a a;
+#X obj 180 437 rotateXYZ 10 20 30;
+#X obj 180 497 cube 0.1;
+#X obj 106 280 separator;
+#N canvas 0 0 450 300 light 0;
+#X obj 225 45 gemhead 10;
+#X floatatom 258 78 5 0 0 0 - - -;
+#X floatatom 299 77 5 0 0 0 - - -;
+#X floatatom 341 78 5 0 0 0 - - -;
+#X msg 319 150 1 0 0;
+#X obj 225 227 world_light;
+#X msg 333 173 0.4 0.4 0.4;
+#X msg 309 127 0 0 0;
+#X obj 228 160 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X msg 228 181 debug \$1;
+#X obj 225 103 rotateXYZ 0 30 0;
+#X obj 27 51 gemhead 10;
+#X floatatom 60 84 5 0 0 0 - - -;
+#X floatatom 101 83 5 0 0 0 - - -;
+#X floatatom 143 84 5 0 0 0 - - -;
+#X msg 121 156 1 0 0;
+#X obj 27 233 world_light;
+#X msg 130 173 0.4 0.4 0.4;
+#X msg 111 133 0 0 0;
+#X obj 30 166 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X msg 30 187 debug \$1;
+#X obj 27 109 rotateXYZ 0 -90 0;
+#X msg 362 225 0.8 0.8 0.8;
+#X msg 144 199 0.7 0.7 0.7;
+#X msg 346 198 0.6 0.6 0.6;
+#X obj 408 87 loadbang;
+#X connect 0 0 10 0;
+#X connect 1 0 10 1;
+#X connect 2 0 10 2;
+#X connect 3 0 10 3;
+#X connect 4 0 5 1;
+#X connect 6 0 5 1;
+#X connect 7 0 5 1;
+#X connect 8 0 9 0;
+#X connect 9 0 5 0;
+#X connect 10 0 5 0;
+#X connect 11 0 21 0;
+#X connect 12 0 21 1;
+#X connect 13 0 21 2;
+#X connect 14 0 21 3;
+#X connect 15 0 16 1;
+#X connect 17 0 16 1;
+#X connect 18 0 16 1;
+#X connect 19 0 20 0;
+#X connect 20 0 16 0;
+#X connect 21 0 16 0;
+#X connect 22 0 5 1;
+#X connect 23 0 16 1;
+#X connect 24 0 5 1;
+#X connect 25 0 23 0;
+#X connect 25 0 24 0;
+#X restore 300 152 pd light;
+#X obj 300 131 gemwin;
+#X msg 300 104 lighting 1 \, create \, 1;
+#X obj 180 477 translateXYZ 0.3 0 0;
+#X floatatom 252 414 5 0 0 0 - - -;
+#X floatatom 292 415 5 0 0 0 - - -;
+#X floatatom 334 415 5 0 0 0 - - -;
+#X floatatom 254 456 5 0 0 0 - - -;
+#X floatatom 300 456 5 0 0 0 - - -;
+#X floatatom 342 457 5 0 0 0 - - -;
+#X floatatom 176 236 5 0 0 0 - - -;
+#X floatatom 216 237 5 0 0 0 - - -;
+#X floatatom 258 237 5 0 0 0 - - -;
+#X text 309 238 <- fun 1;
+#X text 386 416 <- fun 2;
+#X text 389 457 <- fun 3;
+#X text 136 30 double iterative process;
+#X connect 0 0 6 0;
+#X connect 1 0 7 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 5 0;
+#X connect 5 1 2 0;
+#X connect 6 0 4 0;
+#X connect 6 1 1 1;
+#X connect 7 0 16 0;
+#X connect 8 0 14 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 0;
+#X connect 11 0 12 0;
+#X connect 12 1 9 0;
+#X connect 13 0 11 0;
+#X connect 13 1 8 1;
+#X connect 14 0 20 0;
+#X connect 16 0 13 0;
+#X connect 19 0 18 0;
+#X connect 20 0 15 0;
+#X connect 21 0 14 1;
+#X connect 22 0 14 2;
+#X connect 23 0 14 3;
+#X connect 24 0 20 1;
+#X connect 25 0 20 2;
+#X connect 26 0 20 3;
+#X connect 27 0 7 1;
+#X connect 28 0 7 2;
+#X connect 29 0 7 3;
diff --git a/Gem/examples/02.advanced/23.SplitScreen.pd b/Gem/examples/02.advanced/23.SplitScreen.pd
new file mode 100644
index 0000000..8c8a237
--- /dev/null
+++ b/Gem/examples/02.advanced/23.SplitScreen.pd
@@ -0,0 +1,342 @@
+#N canvas 26 51 799 698 10;
+#N canvas 22 50 213 300 Gem.init 0;
+#X obj 71 191 outlet;
+#X obj 71 81 loadbang;
+#X msg 101 134 reset;
+#X obj 71 109 t b b;
+#X msg 71 164 lighting 1;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 0;
+#X restore 24 75 pd Gem.init;
+#N canvas 330 97 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 255 gemwin;
+#X obj 318 100 t a a;
+#X obj 318 287 outlet;
+#X obj 350 128 route create destroy;
+#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 350 150 t b b;
+#X msg 418 214 reset \, lighting 1 \, color 0.3 0.3 0.3;
+#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 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 17 0;
+#X connect 10 1 12 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 11 0;
+#X connect 17 1 18 0;
+#X connect 18 0 7 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 24 99 pd gemwin;
+#X obj 36 576 rotateXYZ;
+#X obj 36 499 t a b;
+#X obj 88 501 i;
+#X obj 141 501 + 1;
+#X obj 141 523 % 360;
+#X obj 36 669 teapot;
+#X obj 142 101 gemhead;
+#X obj 142 123 world_light;
+#X obj 36 417 gemreceive framehead 50;
+#X obj 36 648 scale 1;
+#N canvas 223 51 450 300 scale 0;
+#X obj 114 26 inlet bang;
+#X obj 114 256 outlet scale;
+#X obj 114 48 t b b;
+#X msg 145 116 5 \$1;
+#X obj 114 117 del;
+#X msg 114 159 1 \$1;
+#X msg 114 71 1000;
+#X msg 209 93 stop;
+#X obj 209 115 t a a;
+#X obj 114 138 f;
+#X obj 115 95 t f f f;
+#X obj 114 184 t a a;
+#X obj 114 206 line;
+#X msg 251 53 bang;
+#X connect 0 0 2 0;
+#X connect 2 0 6 0;
+#X connect 2 1 7 0;
+#X connect 3 0 11 0;
+#X connect 4 0 9 0;
+#X connect 5 0 11 0;
+#X connect 6 0 10 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 5 0;
+#X connect 10 0 4 0;
+#X connect 10 1 3 0;
+#X connect 10 2 9 1;
+#X connect 11 0 12 0;
+#X connect 12 0 1 0;
+#X connect 13 0 2 0;
+#X restore 120 620 pd scale;
+#X msg 120 595 bang;
+#X obj 88 523 t f f;
+#X obj 88 545 t f f;
+#X obj 120 574 select 0;
+#X obj 36 439 separator;
+#X obj 246 459 separator;
+#X obj 246 525 t a b;
+#X obj 298 527 i;
+#X obj 351 527 + 1;
+#X obj 351 549 % 360;
+#X obj 298 549 t f f;
+#X obj 298 571 t f f;
+#X obj 246 437 gemreceive framehead 60;
+#X obj 246 602 rotateXYZ 45 0 0;
+#X obj 246 481 color 0 0 1;
+#X obj 36 461 color 1 1 1;
+#X obj 423 474 gemreceive framehead 70;
+#X obj 423 496 separator;
+#X obj 423 518 color 0 1 0;
+#X obj 423 642 cube 0.5;
+#X obj 423 562 depth;
+#X obj 423 622 translateXYZ -0.4 -0.4 0.4;
+#N canvas 1 51 450 447 move 0;
+#X obj 128 403 outlet;
+#X obj 128 326 unpack 0 0 0;
+#X obj 128 380 pack 0 0 0;
+#X obj 128 358 * -3.1;
+#X obj 179 358 * -3.1;
+#X obj 235 358 * 3.1;
+#X obj 128 275 line;
+#X obj 128 297 pack 0 0 0;
+#X obj 223 248 line;
+#X obj 223 270 t b f;
+#X obj 297 247 line;
+#X obj 297 269 t b f;
+#X obj 133 159 select 0 1 2 3 4 5;
+#X msg 116 188 1;
+#X msg 152 187 1;
+#X msg 223 189 1;
+#X msg 190 190 0;
+#X msg 255 187 0;
+#X msg 290 185 0;
+#X obj 133 78 loadbang;
+#X obj 202 83 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 133 122 random 6;
+#X obj 133 100 metro 500;
+#X msg 129 251 \$1 1000;
+#X msg 223 223 \$1 1000;
+#X msg 297 222 \$1 1000;
+#X connect 1 0 3 0;
+#X connect 1 1 4 0;
+#X connect 1 2 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 1;
+#X connect 5 0 2 2;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 8 0 9 0;
+#X connect 9 0 7 0;
+#X connect 9 1 7 1;
+#X connect 10 0 11 0;
+#X connect 11 0 7 0;
+#X connect 11 1 7 2;
+#X connect 12 0 13 0;
+#X connect 12 1 14 0;
+#X connect 12 2 16 0;
+#X connect 12 3 15 0;
+#X connect 12 4 17 0;
+#X connect 12 5 18 0;
+#X connect 13 0 23 0;
+#X connect 14 0 24 0;
+#X connect 15 0 25 0;
+#X connect 16 0 24 0;
+#X connect 17 0 23 0;
+#X connect 18 0 25 0;
+#X connect 19 0 22 0;
+#X connect 20 0 22 0;
+#X connect 21 0 12 0;
+#X connect 22 0 21 0;
+#X connect 23 0 6 0;
+#X connect 24 0 8 0;
+#X connect 25 0 10 0;
+#X restore 517 558 pd move;
+#X obj 423 584 translateXYZ;
+#X obj 517 580 unpack 0 0 0;
+#X obj 630 620 sphere;
+#X obj 630 590 color 1 0 0;
+#X obj 630 568 translateXYZ 0 3 0;
+#X obj 630 522 gemreceive framehead1;
+#X obj 630 544 separator;
+#X text 38 23 split-screen;
+#X obj 260 13 cnv 15 500 240 empty empty SplitScreen1 20 12 0 14 -233017
+-66577 0;
+#X obj 260 260 cnv 15 500 140 empty empty SplitScreen2 20 12 0 14 -233017
+-66577 0;
+#X obj 276 286 gemhead 1;
+#X obj 588 346 pix_texture;
+#X obj 276 308 gemframebuffer;
+#X obj 276 372 s framehead;
+#X obj 588 301 gemhead 60;
+#X obj 588 322 translateXYZ 2 0 0;
+#X obj 276 330 rotateXYZ 90 0 0;
+#X obj 276 350 translateXYZ 0 -4 0;
+#X obj 588 368 square 1.9;
+#X obj 277 41 gemhead 1;
+#X obj 588 117 pix_texture;
+#X obj 277 141 translateXYZ 0 0 -4;
+#X obj 588 71 gemhead 50;
+#X obj 588 93 translateXYZ -2 0 0;
+#X obj 309 185 s framehead;
+#N canvas 1 51 450 300 view 0;
+#X obj 89 284 outlet rotate;
+#X obj 237 283 outlet translate;
+#X obj 81 50 inlet;
+#X obj 81 72 route view;
+#X obj 81 124 unpack 0 0 0 0 0;
+#X obj 81 146 pack 0 0 0;
+#X obj 89 245 pack 0 0 0;
+#X obj 81 94 pack 0 0 0 0 0;
+#X obj 89 222 f;
+#X obj 89 199 t b f;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 4 0 5 0;
+#X connect 4 1 5 1;
+#X connect 4 2 5 2;
+#X connect 4 3 9 0;
+#X connect 4 4 8 1;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 4 0;
+#X connect 8 0 6 0;
+#X connect 9 0 8 0;
+#X connect 9 1 6 1;
+#X restore 454 64 pd view;
+#X obj 277 63 gemframebuffer;
+#X obj 588 139 square 1.9;
+#X obj 277 163 t a a;
+#X obj 326 121 unpack 0 0 0;
+#X obj 305 82 unpack 0 0 0;
+#X obj 277 102 rotateXYZ 0 0 0;
+#X msg 454 40 view 0 0 -4 \$1;
+#X obj 277 213 s framehead1;
+#X obj 588 50 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 263 17 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 263 263 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 588 278 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 423 540 ortho;
+#X obj 246 664 square 1;
+#X obj 246 503 translateXYZ 3 -2 0;
+#X text 14 161 this will render a single scene;
+#X text 13 189 from two different view-points;
+#X text 13 175 into two framebuffers.;
+#X text 16 224 the red sphere is only rendered;
+#X text 18 240 in the left-hand "screen".;
+#X obj 454 23 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
+-262144 -1 -1 0 256;
+#X floatatom 141 549 5 0 0 0 - - -, f 5;
+#X connect 0 0 1 0;
+#X connect 2 0 11 0;
+#X connect 3 0 2 0;
+#X connect 3 1 4 0;
+#X connect 4 0 14 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 1;
+#X connect 8 0 9 0;
+#X connect 10 0 17 0;
+#X connect 11 0 7 0;
+#X connect 12 0 11 1;
+#X connect 13 0 12 0;
+#X connect 14 0 15 0;
+#X connect 14 1 5 0;
+#X connect 15 0 2 1;
+#X connect 15 1 16 0;
+#X connect 16 0 13 0;
+#X connect 17 0 28 0;
+#X connect 18 0 27 0;
+#X connect 19 0 26 0;
+#X connect 19 1 20 0;
+#X connect 20 0 23 0;
+#X connect 21 0 22 0;
+#X connect 22 0 20 1;
+#X connect 23 0 24 0;
+#X connect 23 1 21 0;
+#X connect 24 0 26 3;
+#X connect 25 0 18 0;
+#X connect 26 0 75 0;
+#X connect 27 0 76 0;
+#X connect 28 0 3 0;
+#X connect 29 0 30 0;
+#X connect 30 0 31 0;
+#X connect 31 0 74 0;
+#X connect 33 0 36 0;
+#X connect 34 0 32 0;
+#X connect 35 0 37 0;
+#X connect 36 0 34 0;
+#X connect 37 0 36 1;
+#X connect 37 1 36 2;
+#X connect 37 2 36 3;
+#X connect 39 0 38 0;
+#X connect 40 0 39 0;
+#X connect 41 0 42 0;
+#X connect 42 0 40 0;
+#X connect 46 0 48 0;
+#X connect 47 0 54 0;
+#X connect 48 0 52 0;
+#X connect 48 1 47 1;
+#X connect 50 0 51 0;
+#X connect 51 0 47 0;
+#X connect 52 0 53 0;
+#X connect 53 0 49 0;
+#X connect 55 0 62 0;
+#X connect 56 0 63 0;
+#X connect 57 0 64 0;
+#X connect 58 0 59 0;
+#X connect 59 0 56 0;
+#X connect 61 0 66 0;
+#X connect 61 1 65 0;
+#X connect 62 0 67 0;
+#X connect 62 1 56 1;
+#X connect 64 0 69 0;
+#X connect 64 1 60 0;
+#X connect 65 0 57 1;
+#X connect 65 1 57 2;
+#X connect 65 2 57 3;
+#X connect 66 0 67 1;
+#X connect 66 1 67 2;
+#X connect 66 2 67 3;
+#X connect 67 0 57 0;
+#X connect 68 0 61 0;
+#X connect 70 0 58 0;
+#X connect 71 0 55 0;
+#X connect 72 0 46 0;
+#X connect 73 0 50 0;
+#X connect 74 0 33 0;
+#X connect 76 0 19 0;
+#X connect 82 0 68 0;
+#X connect 83 0 2 2;
diff --git a/Gem/examples/02.advanced/snapshotHD.pd b/Gem/examples/02.advanced/snapshotHD.pd
new file mode 100644
index 0000000..1e3d1bd
--- /dev/null
+++ b/Gem/examples/02.advanced/snapshotHD.pd
@@ -0,0 +1,114 @@
+#N canvas 143 49 609 575 10;
+#X obj 152 105 gemframebuffer;
+#X obj 179 148 translateXYZ 0 0 -4;
+#X obj 152 126 t a a;
+#X obj 242 181 inlet;
+#X msg 224 84 dimen \$1 \$2;
+#X obj 179 169 outlet;
+#X obj 224 64 t l l;
+#X obj 317 41 /;
+#X obj 317 62 t f f;
+#X obj 317 82 * -1;
+#X obj 317 103 pack f f;
+#X msg 317 126 perspec \$1 \$2 -1 1 1 20;
+#X obj 374 352 pix_texture;
+#X obj 70 16 loadbang;
+#X obj 365 181 * 4;
+#X msg 365 202 \$1 4;
+#X obj 435 181 /;
+#X msg 435 161 4 \$1;
+#X msg 435 202 4 \$1;
+#X obj 365 225 spigot;
+#X obj 435 225 spigot;
+#X obj 402 263 unpack f f;
+#X obj 374 373 rectangle 4 4;
+#X obj 347 394 rectangle 4 4;
+#X obj 295 342 loadbang;
+#X msg 295 363 draw line;
+#X obj 401 202 < 1;
+#X obj 477 202 >= 1;
+#X obj 347 321 t a a;
+#X obj 152 84 inlet;
+#X obj 347 300 gemhead 100000;
+#X msg 225 13 bang;
+#X obj 152 548 pix_buffer \$0-buf 1;
+#X obj 167 432 pix_buffer_write \$0-buf;
+#X msg 313 392 0;
+#X msg 152 521 save \$1 0;
+#X msg 152 474 bang;
+#X obj 152 323 spigot;
+#X msg 185 303 1;
+#X msg 200 323 0;
+#X obj 242 201 route symbol;
+#X obj 242 219 symbol;
+#X obj 242 239 t s b;
+#X obj 294 237 t b;
+#X obj 224 43 pack \$1 \$2;
+#X obj 167 410 pix_snap 0 0 \$1 \$2;
+#X obj 152 501 symbol \$3;
+#X obj 152 343 t b a b b b;
+#X obj 167 374 t a b a;
+#X text 453 523 (c) Jack/RYBN 2011;
+#X connect 0 0 2 0;
+#X connect 0 1 12 1;
+#X connect 1 0 5 0;
+#X connect 2 0 37 0;
+#X connect 2 1 1 0;
+#X connect 3 0 40 0;
+#X connect 4 0 0 0;
+#X connect 6 0 4 0;
+#X connect 6 1 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 0 14 0;
+#X connect 8 0 17 0;
+#X connect 8 1 10 1;
+#X connect 8 1 26 0;
+#X connect 8 1 27 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 0 0;
+#X connect 12 0 22 0;
+#X connect 13 0 44 0;
+#X connect 14 0 15 0;
+#X connect 15 0 19 0;
+#X connect 16 0 18 0;
+#X connect 17 0 16 0;
+#X connect 18 0 20 0;
+#X connect 19 0 21 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 1;
+#X connect 21 0 23 1;
+#X connect 21 1 22 2;
+#X connect 21 1 23 2;
+#X connect 24 0 25 0;
+#X connect 25 0 23 0;
+#X connect 26 0 19 1;
+#X connect 27 0 20 1;
+#X connect 28 0 23 0;
+#X connect 28 1 12 0;
+#X connect 29 0 0 0;
+#X connect 30 0 28 0;
+#X connect 31 0 44 0;
+#X connect 34 0 33 1;
+#X connect 35 0 32 0;
+#X connect 36 0 46 0;
+#X connect 37 0 47 0;
+#X connect 38 0 37 1;
+#X connect 39 0 37 1;
+#X connect 40 0 41 0;
+#X connect 40 1 43 0;
+#X connect 41 0 42 0;
+#X connect 42 0 46 1;
+#X connect 42 1 43 0;
+#X connect 43 0 38 0;
+#X connect 44 0 6 0;
+#X connect 45 0 33 0;
+#X connect 46 0 35 0;
+#X connect 47 0 36 0;
+#X connect 47 1 48 0;
+#X connect 47 3 34 0;
+#X connect 47 4 39 0;
+#X connect 48 0 45 0;
+#X connect 48 1 45 0;
+#X connect 48 2 45 0;