#N canvas 152 61 983 713 10; #X declare -lib Gem; #N canvas 1 89 450 300 fps 0; #X obj 46 -61 gemhead; #X obj 46 -21 realtime; #X obj 46 -41 t b b; #X obj 46 41 /; #X msg 46 21 1000 \$1; #X obj 46 106 outlet; #X obj 46 63 + 0.5; #X obj 46 85 i; #X connect 0 0 2 0; #X connect 1 0 4 0; #X connect 2 0 1 0; #X connect 2 1 1 1; #X connect 3 0 6 0; #X connect 4 0 3 0; #X connect 6 0 7 0; #X connect 7 0 5 0; #X restore 466 149 pd fps; #X floatatom 466 172 5 0 0 1 fps - -; #X obj 6 76 cnv 15 450 100 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 7 236 cnv 15 450 375 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 7 181 cnv 15 450 50 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 59 27 Class: geometric object; #X text 467 7 GEM object; #X text 61 7 Synopsis: [gemvertexbuffer]; #X obj 462 76 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 5 76 450 300 gemwin 0; #X obj 132 246 gemwin; #X obj 67 89 outlet; #X obj 67 10 inlet; #X obj 67 41 route create; #X msg 67 70 set destroy; #X msg 142 68 set create; #X msg 198 142 destroy; #X msg 132 142 create \, 1; #X obj 245 38 loadbang; #X msg 272 82 reset \, frame 100; #X obj 245 58 t b b; #X obj 132 117 t b b; #X msg 376 135 \; pd dsp 1; #X obj 349 114 t b b; #X obj 349 181 del 100; #X obj 349 201 s \$0-init100; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 0 11 0; #X connect 3 1 5 0; #X connect 3 1 6 0; #X connect 4 0 1 0; #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; #X connect 8 0 10 0; #X connect 9 0 0 0; #X connect 10 0 5 0; #X connect 10 1 9 0; #X connect 11 0 7 0; #X connect 11 1 13 0; #X connect 13 0 14 0; #X connect 13 1 12 0; #X connect 14 0 15 0; #X restore 467 115 pd gemwin; #X msg 467 96 create; #X text 463 75 Create window:; #X text 6 80 Description: Renders a vertexbuffer.; #X text 11 179 Arguments:; #X text 9 241 Inlets:; #X text 27 253 Inlet 1: gemlist; #X text 9 580 Outlets:; #X text 21 593 Outlet 1: gemlist; #X obj 569 7 cnv 15 400 700 empty empty empty 20 12 0 14 -228992 -66577 0; #X obj 576 668 cnv 15 150 30 empty empty empty 20 12 0 14 -24198 -66577 0; #X msg 792 593 draw line; #X msg 802 614 draw points; #X msg 692 384 color_enable \$1; #X obj 673 384 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 579 134 GEMglPointSize 1; #X obj 816 638 loadbang; #X obj 579 76 translateXYZ 0 0 -2; #X obj 579 114 rotateXYZ -45 0 -50; #X obj 579 54 gemhead; #X text 594 254 update VBO using table value; #X obj 643 366 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X msg 665 364 position_enable \$1; #X obj 729 424 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 699 406 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X msg 721 404 texture_enable \$1; #X msg 748 424 normal_enable \$1; #X obj 579 215 pix_image; #X obj 579 234 pix_texture; #X obj 593 153 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #N canvas 1 51 450 300 openpanel 0; #X obj 114 62 inlet; #X obj 121 254 outlet; #X obj 114 125 openpanel; #X msg 114 162 set open \$1; #X obj 114 199 t b a; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 1 0; #X connect 4 1 1 0; #X restore 593 170 pd openpanel; #X msg 593 189; #X text 671 349 enable / disable specific VBO; #X obj 579 32 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X text 577 14 Example:; #X msg 816 658 resize 128; #X floatatom 636 96 5 0 0 0 - - -; #X obj 579 95 scale 3; #X msg 593 271 position blablax blablay blablaz; #X msg 604 290 color colorr colorg colorb colora; #X msg 614 310 texture colorr colorg; #X msg 627 331 normal colorr blablay blablaz; #X obj 696 169 bng 15 250 50 0 empty \$0-init100 empty 17 7 0 10 -262144 -1 -1; #X obj 841 56 cnv 15 120 160 empty empty empty 20 12 0 14 -233017 -66577 0; #N canvas 615 145 657 666 lorenz 0; #X floatatom 82 248 5 0 0 0 - - -; #X floatatom 124 248 5 0 0 0 - - -; #X floatatom 83 201 5 0 0 0 - - -; #X floatatom 125 201 5 0 0 0 - - -; #X floatatom 81 156 5 0 0 0 - - -; #X floatatom 124 156 5 0 0 0 - - -; #N canvas 145 116 1131 666 table 0; #X obj 266 31 loadbang; #X msg 266 53 dsp 1; #X obj 266 75 s pd; #X obj 38 33 loadbang; #X obj 89 68 sig~ 1; #X obj 89 140 osc~ 1; #X obj 88 160 abs~; #X obj 87 223 osc~ 11; #X obj 86 243 abs~; #X obj 38 58 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 87 310 sig~ 0.7; #X obj 392 275 v pr; #X obj 523 276 v r; #X obj 449 277 v b; #X floatatom 392 246 5 0 0 0 - - -; #X floatatom 523 248 5 0 0 0 - - -; #X msg 393 221 10; #X obj 447 218 expr 8./3; #X msg 344 344 set 1.2 2.3 4.4; #X floatatom 449 247 7 0 0 0 - - -; #X msg 321 308 stop; #X msg 291 275 start; #X floatatom 615 248 5 0 0 0 - - -; #X obj 615 277 v dt; #X msg 526 220 18; #X msg 611 221 0.01; #X obj 344 167 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1 -1; #X text 679 250 <- experiment with these numbers; #X obj 705 223 line; #X obj 344 449 /~ 20; #X obj 450 446 /~ 20; #X obj 556 445 /~ 20; #X msg 706 198 0.01 \, 0.04 5000; #X obj 344 393 fexpr~ $y1+(pr*$y2-pr*$y1)*dt \; $y2 +(-$y1*$y3 + r*$y1-$y2)*dt \; $y3+($y1*$y2 - b*$y3)*dt; #X obj 276 164 loadbang; #X text 329 108 This is an example of how fexpr~ could be used for solving differential equations \, in this case the lorenz equations which generate chaotic signals; #X text 577 390 Note the following shorthands:; #X text 576 406 $y1 -> $y1[-1] \, $y2 -> $y2[-1] \, .....; #X text 464 344 the 'set' commands sets the initial previous values ; #X obj 639 442 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 673 437 loadbang; #X obj 572 473 sig~ -1; #X obj 673 467 metro 1000; #X obj 89 391 table \$0blablax2 100000; #X obj 87 411 table \$0blablay2 100000; #X obj 87 431 table \$0blablaz2 100000; #X obj 86 356 table \$0colora2 100000; #X obj 86 335 tabwrite~ \$0colora2; #X obj 87 287 table \$0colorb2 100000; #X obj 86 265 tabwrite~ \$0colorb2; #X obj 88 203 table \$0colorg2 100000; #X obj 87 180 tabwrite~ \$0colorg2; #X obj 87 112 table \$0colorr2 100000; #X obj 88 91 tabwrite~ \$0colorr2; #X obj 344 537 tabwrite~ \$0blablax2; #X obj 451 517 tabwrite~ \$0blablay2; #X obj 555 497 tabwrite~ \$0blablaz2; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 3 0 9 0; #X connect 4 0 53 0; #X connect 5 0 6 0; #X connect 6 0 51 0; #X connect 7 0 8 0; #X connect 8 0 49 0; #X connect 9 0 47 0; #X connect 9 0 49 0; #X connect 9 0 51 0; #X connect 9 0 53 0; #X connect 10 0 47 0; #X connect 14 0 11 0; #X connect 15 0 12 0; #X connect 16 0 14 0; #X connect 17 0 19 0; #X connect 18 0 33 0; #X connect 19 0 13 0; #X connect 20 0 33 0; #X connect 21 0 33 0; #X connect 22 0 23 0; #X connect 24 0 15 0; #X connect 25 0 22 0; #X connect 26 0 16 0; #X connect 26 0 17 0; #X connect 26 0 24 0; #X connect 26 0 25 0; #X connect 26 0 18 0; #X connect 26 0 21 0; #X connect 28 0 22 0; #X connect 29 0 54 0; #X connect 30 0 55 0; #X connect 31 0 56 0; #X connect 32 0 28 0; #X connect 33 0 29 0; #X connect 33 1 30 0; #X connect 33 2 31 0; #X connect 34 0 26 0; #X connect 39 0 54 0; #X connect 39 0 55 0; #X connect 39 0 56 0; #X connect 40 0 42 0; #X connect 41 0 56 0; #X connect 42 0 39 0; #X restore 259 348 pd table; #X obj 38 136 alpha; #X msg 118 577 draw line; #X msg 184 575 draw points; #X floatatom 147 288 5 0 0 0 - - -; #X msg 82 449 color_enable \$1; #X obj 82 430 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 38 222 scaleXYZ 3 3 3; #X obj 38 305 GEMglPointSize 1; #X obj 38 174 translateXYZ 0 0 -2; #X obj 38 267 rotateXYZ -45 0 -50; #X obj 38 114 gemhead; #X obj 56 346 gemhead 10; #X obj 56 327 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 56 367 t b; #X obj 98 115 switch~; #X obj 38 43 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; #X obj 116 10 loadbang; #X obj 90 497 delay 1000; #X obj 90 475 sel 1; #X obj 38 13 inlet; #X obj 218 469 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 218 444 loadbang; #X obj 38 614 gemvertexbuffer 100000; #X msg 116 32 0; #X obj 91 516 i \$0; #X msg 90 538 colorR \$1colorr2 \, colorG \$1colorg2 \, colorB \$1colorb2 \, colorA \$1colora2; #X obj 38 69 t f f f f; #X obj 56 387 i \$0; #X msg 56 407 posX \$1blablax2 \, posY \$1blablay2 \, posZ \$1blablaz2 ; #X connect 0 0 16 1; #X connect 1 0 16 2; #X connect 2 0 13 1; #X connect 3 0 13 2; #X connect 4 0 15 1; #X connect 5 0 15 2; #X connect 7 0 15 0; #X connect 8 0 29 0; #X connect 9 0 29 0; #X connect 10 0 14 1; #X connect 11 0 29 0; #X connect 12 0 11 0; #X connect 13 0 16 0; #X connect 14 0 29 0; #X connect 15 0 13 0; #X connect 16 0 14 0; #X connect 17 0 7 0; #X connect 18 0 20 0; #X connect 19 0 18 0; #X connect 20 0 34 0; #X connect 22 0 33 0; #X connect 23 0 30 0; #X connect 24 0 31 0; #X connect 25 0 24 0; #X connect 26 0 22 0; #X connect 27 0 31 0; #X connect 28 0 27 0; #X connect 30 0 22 0; #X connect 31 0 32 0; #X connect 32 0 29 0; #X connect 33 0 17 0; #X connect 33 1 19 0; #X connect 33 2 25 0; #X connect 33 3 21 0; #X connect 34 0 35 0; #X connect 35 0 29 0; #X restore 849 100 pd lorenz; #X obj 849 80 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #N canvas 285 255 805 628 wave 0; #X floatatom 87 237 5 0 0 0 - - -; #X floatatom 129 237 5 0 0 0 - - -; #X floatatom 172 237 5 0 0 0 - - -; #X floatatom 88 190 5 0 0 0 - - -; #X floatatom 130 190 5 0 0 0 - - -; #X floatatom 173 190 5 0 0 0 - - -; #X floatatom 86 145 5 0 0 0 - - -; #X floatatom 129 145 5 0 0 0 - - -; #X floatatom 173 145 5 0 0 0 - - -; #X obj 43 592 gemvertexbuffer; #N canvas 145 161 1131 747 table 0; #X obj 36 59 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 583 129 until; #X msg 583 110 100; #N canvas 0 50 450 300 count 0; #X obj 47 31 inlet; #X obj 47 126 f; #X obj 157 30 inlet; #X obj 65 104 + 1; #X obj 47 154 t f f; #X msg 157 58 0; #X obj 47 187 outlet; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 2 0 5 0; #X connect 3 0 1 1; #X connect 4 0 6 0; #X connect 4 1 3 0; #X connect 5 0 1 1; #X restore 583 148 pd count; #X obj 440 70 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 583 91 t b b; #X obj 583 264 until; #X msg 583 245 100; #N canvas 0 50 450 300 count 0; #X obj 47 31 inlet; #X obj 47 126 f; #X obj 157 30 inlet; #X obj 65 104 + 1; #X obj 47 154 t f f; #X msg 157 58 0; #X obj 47 187 outlet; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 2 0 5 0; #X connect 3 0 1 1; #X connect 4 0 6 0; #X connect 4 1 3 0; #X connect 5 0 1 1; #X restore 583 283 pd count; #X obj 583 224 t b b f; #X obj 583 359 pack f f; #X obj 583 321 - 0.5; #X obj 583 302 / 99; #X obj 583 340 * 2; #X obj 583 186 - 0.5; #X obj 583 167 / 99; #X obj 583 205 * 2; #X obj 583 383 t a a a a a a; #X obj 671 404 unpack f f; #X obj 583 509 + 0.01; #X obj 796 513 + 0.01; #N canvas 0 50 450 300 count 0; #X obj 47 31 inlet; #X obj 47 126 f; #X obj 157 30 inlet; #X obj 65 104 + 1; #X obj 47 154 t f f; #X msg 157 58 0; #X obj 47 187 outlet; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 2 0 5 0; #X connect 3 0 1 1; #X connect 4 0 6 0; #X connect 4 1 3 0; #X connect 5 0 1 1; #X restore 692 582 pd count; #X obj 583 551 t f b; #N canvas 0 50 450 300 count 0; #X obj 47 31 inlet; #X obj 47 126 f; #X obj 157 30 inlet; #X obj 65 104 + 1; #X obj 47 154 t f f; #X msg 157 58 0; #X obj 47 187 outlet; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 2 0 5 0; #X connect 3 0 1 1; #X connect 4 0 6 0; #X connect 4 1 3 0; #X connect 5 0 1 1; #X restore 905 585 pd count; #X obj 796 554 t f b; #X obj 640 508 - 0.01; #X obj 851 513 - 0.01; #X obj 653 423 unpack f f; #X obj 635 442 unpack f f; #X obj 583 461 unpack f f; #X obj 440 92 t b b; #X obj 440 134 until; #N canvas 0 50 450 300 count 0; #X obj 47 31 inlet; #X obj 47 126 f; #X obj 157 30 inlet; #X obj 65 104 + 1; #X obj 47 154 t f f; #X msg 157 58 0; #X obj 47 187 outlet; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 2 0 5 0; #X connect 3 0 1 1; #X connect 4 0 6 0; #X connect 4 1 3 0; #X connect 5 0 1 1; #X restore 440 153 pd count; #X obj 440 176 t f f f; #X obj 440 239 t f f; #X obj 440 261 *; #X obj 485 240 t f f; #X obj 485 262 *; #X obj 440 292 +; #X obj 440 335 sqrt; #X obj 440 416 cos; #X obj 440 313 t f f; #X obj 477 377 exp; #X obj 440 442 /; #X msg 440 115 60000; #X obj 477 355 * 2; #X obj 341 46 gemhead 10; #X obj 341 72 t b b; #X obj 349 318 f; #X obj 440 380 +; #X floatatom 903 395 5 0 0 0 - - -; #X obj 583 71 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 87 310 sig~ 0.3; #X obj 903 371 / 99; #X msg 903 347 1; #X obj 383 322 - 0.1; #X obj 440 354 * 7; #X obj 440 31 t b b b; #X text 162 619 color and position are updated at every frame. you just have to change array value....; #X text 156 504 replace this with iem_tab_* stuff in order to increase performance if you wish to update point positions at every frame; #X obj 36 -2 inlet; #X obj 123 122 f; #X obj 279 120 f; #X obj 438 6 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 123 56 sin; #X obj 123 78 + 1; #X obj 123 100 * 0.5; #X obj 123 35 * 110; #X obj 87 244 table \$0colorg3 60000; #X obj 85 266 table \$0colorr3 60000; #X obj 86 286 table \$0colorb3 60000; #X obj 142 196 tabwrite \$0colorg3; #X obj 141 172 tabwrite \$0colorb3; #X obj 142 150 tabwrite \$0colorr3; #X obj 86 335 tabwrite~ \$0colora3; #X obj 86 356 table \$0colora3 60000; #X obj 87 393 table \$0blablax3 60000; #X obj 86 412 table \$0blablay3 60000; #X obj 87 431 table \$0blablaz3 60000; #X obj 440 466 tabwrite \$0blablaz3; #X obj 463 198 tabread \$0blablay3; #X obj 440 218 tabread \$0blablax3; #X obj 582 605 tabwrite \$0blablax3; #X obj 796 607 tabwrite \$0blablay3; #X connect 0 0 74 0; #X connect 1 0 3 0; #X connect 2 0 1 0; #X connect 3 0 15 0; #X connect 4 0 30 0; #X connect 5 0 2 0; #X connect 5 1 3 1; #X connect 5 1 21 1; #X connect 5 1 23 1; #X connect 6 0 8 0; #X connect 7 0 6 0; #X connect 8 0 12 0; #X connect 9 0 7 0; #X connect 9 1 8 1; #X connect 9 2 10 1; #X connect 10 0 17 0; #X connect 11 0 13 0; #X connect 12 0 11 0; #X connect 13 0 10 0; #X connect 14 0 16 0; #X connect 15 0 14 0; #X connect 16 0 9 0; #X connect 17 0 29 0; #X connect 17 1 18 0; #X connect 17 2 27 0; #X connect 17 3 28 0; #X connect 17 4 27 0; #X connect 17 5 18 0; #X connect 18 0 25 0; #X connect 18 1 20 0; #X connect 19 0 22 0; #X connect 20 0 24 0; #X connect 21 0 82 1; #X connect 22 0 82 0; #X connect 22 1 21 0; #X connect 23 0 83 1; #X connect 24 0 83 0; #X connect 24 1 23 0; #X connect 25 0 22 0; #X connect 26 0 24 0; #X connect 27 0 19 0; #X connect 27 1 26 0; #X connect 28 0 25 0; #X connect 28 1 26 0; #X connect 29 0 19 0; #X connect 29 1 20 0; #X connect 30 0 44 0; #X connect 30 1 32 1; #X connect 31 0 32 0; #X connect 32 0 33 0; #X connect 33 0 81 0; #X connect 33 1 80 0; #X connect 33 2 62 0; #X connect 33 2 79 1; #X connect 34 0 35 0; #X connect 34 1 35 1; #X connect 35 0 38 0; #X connect 36 0 37 0; #X connect 36 1 37 1; #X connect 37 0 38 1; #X connect 38 0 41 0; #X connect 39 0 56 0; #X connect 39 0 67 0; #X connect 40 0 43 0; #X connect 41 0 39 0; #X connect 41 1 45 0; #X connect 42 0 43 1; #X connect 43 0 79 0; #X connect 44 0 31 0; #X connect 45 0 42 0; #X connect 47 0 30 0; #X connect 47 1 48 0; #X connect 48 0 49 1; #X connect 48 0 55 0; #X connect 49 0 40 0; #X connect 50 0 19 1; #X connect 50 0 25 1; #X connect 50 0 20 1; #X connect 50 0 26 1; #X connect 51 0 5 0; #X connect 52 0 74 0; #X connect 53 0 50 0; #X connect 54 0 53 0; #X connect 55 0 48 1; #X connect 56 0 49 0; #X connect 57 0 4 0; #X connect 57 1 51 0; #X connect 57 2 54 0; #X connect 60 0 0 0; #X connect 60 0 57 0; #X connect 61 0 71 0; #X connect 61 0 72 0; #X connect 61 0 73 0; #X connect 62 0 71 1; #X connect 62 0 72 1; #X connect 62 0 73 1; #X connect 63 0 57 0; #X connect 64 0 65 0; #X connect 65 0 66 0; #X connect 66 0 61 0; #X connect 67 0 64 0; #X connect 80 0 36 0; #X connect 81 0 34 0; #X restore 298 556 pd table; #X obj 43 125 alpha; #X msg 98 518 draw points; #X obj 43 211 scaleXYZ 3 3 3; #X obj 106 549 loadbang; #X obj 43 163 translateXYZ 0 0 -2; #X obj 43 63 gemhead; #X obj 61 306 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 61 346 t b; #X msg 106 572 resize 60000; #X msg 94 495 draw triangle; #X msg 57 102 auto 1; #X obj 61 325 gemhead 20; #X obj 43 285 GEMglShadeModel GL_SMOOTH; #X obj 94 474 loadbang; #X obj 43 256 rotateXYZ -65 0 35; #X obj 57 82 loadbang; #X obj 43 12 inlet; #X obj 298 68 sel 1; #X obj 61 366 i \$0; #X obj 61 386 t f f; #X msg 61 416 position \$1blablax3 \$1blablay3 \$1blablaz3; #X msg 77 438 color \$1colorr3 \$1colorg3 \$1colorb3 \$1colora3; #X obj 148 18 loadbang; #X msg 148 40 0; #X connect 0 0 25 1; #X connect 1 0 25 2; #X connect 2 0 25 3; #X connect 3 0 13 1; #X connect 4 0 13 2; #X connect 5 0 13 3; #X connect 6 0 15 1; #X connect 7 0 15 2; #X connect 8 0 15 3; #X connect 11 0 15 0; #X connect 12 0 9 0; #X connect 13 0 25 0; #X connect 14 0 19 0; #X connect 15 0 13 0; #X connect 16 0 11 0; #X connect 17 0 22 0; #X connect 18 0 29 0; #X connect 19 0 9 0; #X connect 20 0 9 0; #X connect 21 0 11 0; #X connect 22 0 18 0; #X connect 23 0 9 0; #X connect 24 0 20 0; #X connect 25 0 23 0; #X connect 26 0 21 0; #X connect 27 0 16 0; #X connect 27 0 28 0; #X connect 28 0 10 0; #X connect 29 0 30 0; #X connect 30 0 31 0; #X connect 30 1 32 0; #X connect 31 0 9 0; #X connect 32 0 9 0; #X connect 33 0 34 0; #X connect 34 0 16 0; #X restore 849 184 pd wave; #X obj 849 162 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #N canvas 786 231 654 435 oscillo~ 0; #X obj 47 78 gemhead; #X obj 122 116 adc~; #X obj 218 63 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X obj 218 41 loadbang; #X obj 47 5 inlet; #X obj 123 152 *~ 3; #X obj 47 279 t a b; #X obj 47 406 gemvertexbuffer 8192; #X obj 218 82 metro 200; #X obj 298 167 until; #X obj 298 191 f; #X obj 329 192 + 1; #X msg 348 163 0; #X obj 298 213 t f f; #X obj 298 277 * 7; #X obj 298 256 - 0.5; #X msg 82 384 draw linestrip; #X obj 82 363 loadbang; #X obj 63 30 loadbang; #X msg 63 52 0; #X obj 155 55 osc~ 10; #X obj 155 75 *~ 0.1; #X obj 122 178 tabwrite~ \$0sound; #X obj 121 199 table \$0sound 8192; #X obj 298 298 tabwrite \$0phasor; #X obj 118 231 table \$0phasor 8192; #X obj 79 306 i \$0; #X msg 79 342 posX \$1phasor \, posY \$1sound; #X floatatom 155 34 5 0 0 0 - - -; #X obj 15 157 scale 1; #X floatatom 52 115 5 0 0 0 - - -; #X msg 227 395 draw points; #X msg 298 73 8192; #X floatatom 298 95 5 0 0 0 - - -; #X obj 298 234 /; #X obj 298 118 t f b f f; #X msg 414 154 resize \$1; #X obj 414 176 t a a a; #X obj 437 216 s \$0sound; #X obj 460 196 s \$0phasor; #X connect 0 0 29 0; #X connect 1 0 5 0; #X connect 1 1 5 0; #X connect 2 0 8 0; #X connect 3 0 2 0; #X connect 3 0 32 0; #X connect 4 0 0 0; #X connect 5 0 22 0; #X connect 6 0 7 0; #X connect 6 1 26 0; #X connect 8 0 22 0; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 10 0 13 0; #X connect 11 0 10 1; #X connect 12 0 10 1; #X connect 13 0 34 0; #X connect 13 1 24 1; #X connect 14 0 24 0; #X connect 15 0 14 0; #X connect 16 0 7 0; #X connect 17 0 16 0; #X connect 18 0 19 0; #X connect 19 0 0 0; #X connect 20 0 21 0; #X connect 21 0 5 0; #X connect 26 0 27 0; #X connect 27 0 7 0; #X connect 28 0 20 0; #X connect 29 0 6 0; #X connect 30 0 29 1; #X connect 31 0 7 0; #X connect 32 0 33 0; #X connect 33 0 35 0; #X connect 34 0 15 0; #X connect 35 0 9 0; #X connect 35 1 12 0; #X connect 35 2 34 1; #X connect 35 3 36 0; #X connect 36 0 37 0; #X connect 37 0 7 0; #X connect 37 1 38 0; #X connect 37 2 39 0; #X restore 849 141 pd oscillo~; #X obj 849 121 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X text 846 60 other examples; #X text 27 327 Inlet 1: message: texture / textureU / textureV: update vertex texcoords from tables; #X text 27 357 Inlet 1: message: normal / normalX / normalY / normalZ: update vertex normals from tables; #X text 27 297 Inlet 1: message: color / colorR / colorG / colorB / colorA: update vertex colors from tables; #X text 27 267 Inlet 1: message: position / posX / posY / posZ: update vertex positions from tables; #N canvas 428 155 679 574 tabledata 0; #X text 65 43 applying table data as vertex data; #X msg 30 100 position tabX tabY tabZ 0; #X msg 30 130 position tabXYZ 0; #X text 200 102 will read X \, Y & Z values from the 3 tables as position data \, starting at offset=0 (offset can be omitted); #X text 200 132 will read interleaved X \, Y & Z values from the table tabXYZ \, starting at offset=0 (offset can be omitted); #X text 200 172 will update only X values from given table (starting at offset=10); #X msg 31 169 posX tabX 10; #X msg 31 209 posY tabY; #X text 200 212 will update only Y values from given table (starting at default offset=0); #X text 39 290 the same applies to the other vertex data types:; #X msg 234 346 colorR r; #X msg 294 346 colorG g; #X msg 354 346 colorB b; #X msg 415 346 colorA a; #X msg 36 376 texture U V; #X msg 140 376 texture UV; #X msg 234 376 textureU U; #X msg 304 376 textureV V; #X msg 36 406 normal x y z; #X msg 36 346 color r g b a; #X msg 141 346 color rgba; #X msg 140 406 normal xyz; #X msg 234 406 normalX x; #X msg 304 406 normalY y; #X msg 374 406 normalZ z; #X msg 36 316 position X Y Z; #X msg 140 316 position XYZ; #X msg 234 316 positionX X; #X msg 314 316 positionY Y; #X msg 394 316 positionZ Z; #X text 51 453 offset is always optional (default:0) \, and comes after the table names; #X text 50 507 unset table data is initialized to 0.f; #X restore 464 333 pd tabledata; #X text 27 384 Inlet 1: message: resize float : change the number of vertex to use; #X text 23 98 Vertex position \, color etc can be copy from pd table to the vertex buffer (VBO = Vertex Buffer Object). This object can draw lot's of points very efficiently.; #X obj 696 191 t b b b; #N canvas 990 92 450 459 load_tables 0; #X obj 31 71 noise~; #X obj 32 94 tabwrite~ colorr; #X obj 32 114 noise~; #X obj 33 158 noise~; #X obj 33 137 tabwrite~ colorg; #X obj 34 181 tabwrite~ colorb; #X obj 33 209 noise~; #X obj 34 252 noise~; #X obj 35 296 noise~; #X obj 34 232 tabwrite~ blablax; #X obj 36 319 tabwrite~ blablaz; #X obj 35 275 tabwrite~ blablay; #X msg 288 48 dsp 1; #X obj 288 68 s pd; #X obj 288 28 loadbang; #X obj 119 34 t b; #X obj 119 13 loadbang; #X msg 152 34 bang; #X obj 215 10 inlet; #X obj 266 152 table colorr 2000; #X obj 266 172 table colorg 2000; #X obj 266 194 table colorb 2000; #X obj 266 216 table colora 2000; #X obj 267 237 table blablax 2000; #X obj 266 256 table blablay 2000; #X obj 266 276 table blablaz 2000; #X connect 0 0 1 0; #X connect 2 0 4 0; #X connect 3 0 5 0; #X connect 6 0 9 0; #X connect 7 0 11 0; #X connect 8 0 10 0; #X connect 12 0 13 0; #X connect 14 0 12 0; #X connect 15 0 1 0; #X connect 15 0 4 0; #X connect 15 0 5 0; #X connect 15 0 9 0; #X connect 15 0 11 0; #X connect 15 0 10 0; #X connect 16 0 15 0; #X connect 17 0 15 0; #X connect 18 0 15 0; #X restore 735 222 pd load_tables; #X obj 579 675 gemvertexbuffer; #X msg 728 569 draw_range \$1 \$2; #X obj 728 549 pack 0 0; #X floatatom 728 507 5 0 0 0 - - -; #X floatatom 774 507 5 0 0 0 - - -; #X obj 774 526 t b f; #X text 27 452 Inlet 1: message: draw_range float float : set the range for partial draw.; #X text 726 480 set start and end indexes to draw only a range of VBO , f 33; #X text 668 458 as soon as they are updated; #X text 598 443 default : all VBO are disabled \, but they are enabled ; #X floatatom 699 135 5 1 64 0 - - -; #X floatatom 719 113 5 0 0 0 - - -; #X text 27 479 Inlet 1: message: program float : set the id for glsl program.; #X text 27 409 Inlet 1: message: position_enable float \, color_enable float \, texture_enable float \, normal_enable float \, attribute_enable float : enable/disable the use of this data; #X text 27 507 Inlet 1: message: attribute name table (offset) : add attribute / update attribute from table; #X text 27 537 Inlet 1: message: reset_attributes : clear attribute data; #X text 27 552 Inlet 1: message: print_attributes : print active attributes ; #X text 14 646 see examples/10.glsl/16.vertexbuffer_attributes.pd on how to; #X text 15 661 use attribute tables with the vertex buffer.; #X text 57 190 number of vertices to be used. if this is a power of two (2^n) \, you might have some performance gain.; #X obj 868 8 declare -lib Gem; #X connect 0 0 1 0; #X connect 9 0 10 0; #X connect 10 0 9 0; #X connect 20 0 69 0; #X connect 21 0 69 0; #X connect 22 0 69 0; #X connect 23 0 22 0; #X connect 24 0 36 0; #X connect 25 0 44 0; #X connect 26 0 46 0; #X connect 27 0 24 0; #X connect 28 0 26 0; #X connect 30 0 31 0; #X connect 31 0 69 0; #X connect 32 0 35 0; #X connect 33 0 34 0; #X connect 34 0 69 0; #X connect 35 0 69 0; #X connect 36 0 37 0; #X connect 37 0 69 0; #X connect 38 0 39 0; #X connect 39 0 40 0; #X connect 40 0 36 0; #X connect 42 0 28 0; #X connect 44 0 69 0; #X connect 45 0 46 1; #X connect 46 0 27 0; #X connect 47 0 69 0; #X connect 48 0 69 0; #X connect 49 0 69 0; #X connect 50 0 69 0; #X connect 51 0 67 0; #X connect 54 0 53 0; #X connect 56 0 55 0; #X connect 58 0 57 0; #X connect 67 0 47 0; #X connect 67 1 48 0; #X connect 67 2 68 0; #X connect 70 0 69 0; #X connect 71 0 70 0; #X connect 72 0 71 0; #X connect 73 0 74 0; #X connect 74 0 71 0; #X connect 74 1 71 1; #X connect 79 0 24 1; #X connect 80 0 27 3;