From c6030846f5c1e34048774d60ca4c15e804bee839 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Sat, 14 Mar 2015 20:32:26 +0000 Subject: Gem linux/amd64 built '' for linux/amd64 --- Gem/examples/10.glsl/01.simple_texture.pd | 124 ++ Gem/examples/10.glsl/02.primitive_distortion.pd | 125 ++ Gem/examples/10.glsl/03.texture_distortion.pd | 144 +++ Gem/examples/10.glsl/04.game_of_life.pd | 138 +++ Gem/examples/10.glsl/05.multitexture.pd | 201 ++++ Gem/examples/10.glsl/05.multitexture_bis.pd | 200 ++++ Gem/examples/10.glsl/06.rectangle_multitexture.pd | 199 ++++ Gem/examples/10.glsl/07.framebuffer_and_shader.pd | 418 +++++++ Gem/examples/10.glsl/08.multi_pass_rendering.pd | 341 ++++++ Gem/examples/10.glsl/09.vertex_texture_fetching.pd | 142 +++ Gem/examples/10.glsl/10.GPGPU_Physical_model.pd | 1246 ++++++++++++++++++++ Gem/examples/10.glsl/11.geometry.pd | 123 ++ Gem/examples/10.glsl/12.tri2fan.pd | 157 +++ Gem/examples/10.glsl/13.panoramique.pd | 525 +++++++++ Gem/examples/10.glsl/14.blur.pd | 177 +++ .../10.glsl/15.bicubic_image_interpolation.pd | 63 + Gem/examples/10.glsl/GLSL_mix.frag | 35 + Gem/examples/10.glsl/GLSL_mix.vert | 9 + Gem/examples/10.glsl/P_distord.frag | 19 + Gem/examples/10.glsl/P_distord.vert | 21 + Gem/examples/10.glsl/T_distord.frag | 31 + Gem/examples/10.glsl/T_distord.vert | 9 + Gem/examples/10.glsl/_glsl.pd | 73 ++ Gem/examples/10.glsl/bicubic_interpolation.frag | 90 ++ Gem/examples/10.glsl/bicubic_interpolation.vert | 8 + Gem/examples/10.glsl/blur.frag | 18 + Gem/examples/10.glsl/blur.vert | 9 + Gem/examples/10.glsl/cam1.jpg | Bin 0 -> 311441 bytes Gem/examples/10.glsl/cam2.jpg | Bin 0 -> 395309 bytes Gem/examples/10.glsl/cam3.jpg | Bin 0 -> 323041 bytes Gem/examples/10.glsl/cam4.jpg | Bin 0 -> 326880 bytes Gem/examples/10.glsl/fetching.frag | 8 + Gem/examples/10.glsl/fetching.vert | 15 + Gem/examples/10.glsl/fetching2.frag | 56 + Gem/examples/10.glsl/fetching2.vert | 21 + Gem/examples/10.glsl/game.frag | 30 + Gem/examples/10.glsl/game.vert | 14 + Gem/examples/10.glsl/geo.frag | 8 + Gem/examples/10.glsl/geo.geom | 28 + Gem/examples/10.glsl/geo.vert | 7 + Gem/examples/10.glsl/img1.jpg | Bin 0 -> 156747 bytes Gem/examples/10.glsl/img2.jpg | Bin 0 -> 152179 bytes Gem/examples/10.glsl/img3.jpg | Bin 0 -> 193808 bytes Gem/examples/10.glsl/interpol.frag | 13 + Gem/examples/10.glsl/link.frag | 164 +++ Gem/examples/10.glsl/link.vert | 10 + Gem/examples/10.glsl/mass.frag | 34 + Gem/examples/10.glsl/mass.vert | 10 + Gem/examples/10.glsl/multitexture.frag | 13 + Gem/examples/10.glsl/multitexture.vert | 11 + Gem/examples/10.glsl/multitexture_rect.frag | 15 + Gem/examples/10.glsl/multitexture_rect.vert | 11 + Gem/examples/10.glsl/normal.frag | 37 + Gem/examples/10.glsl/normal.vert | 10 + Gem/examples/10.glsl/panoramique.frag | 28 + Gem/examples/10.glsl/panoramique.vert | 5 + Gem/examples/10.glsl/single_blur.pd | 55 + Gem/examples/10.glsl/texture.frag | 16 + Gem/examples/10.glsl/texture.vert | 8 + Gem/examples/10.glsl/texture_rect.frag | 16 + Gem/examples/10.glsl/tri2fan.frag | 6 + Gem/examples/10.glsl/tri2fan.geom | 51 + Gem/examples/10.glsl/tri2fan.vert | 6 + Gem/examples/10.glsl/vague.frag | 23 + Gem/examples/10.glsl/wave.frag | 40 + 65 files changed, 5414 insertions(+) create mode 100644 Gem/examples/10.glsl/01.simple_texture.pd create mode 100644 Gem/examples/10.glsl/02.primitive_distortion.pd create mode 100644 Gem/examples/10.glsl/03.texture_distortion.pd create mode 100644 Gem/examples/10.glsl/04.game_of_life.pd create mode 100644 Gem/examples/10.glsl/05.multitexture.pd create mode 100644 Gem/examples/10.glsl/05.multitexture_bis.pd create mode 100644 Gem/examples/10.glsl/06.rectangle_multitexture.pd create mode 100644 Gem/examples/10.glsl/07.framebuffer_and_shader.pd create mode 100644 Gem/examples/10.glsl/08.multi_pass_rendering.pd create mode 100644 Gem/examples/10.glsl/09.vertex_texture_fetching.pd create mode 100644 Gem/examples/10.glsl/10.GPGPU_Physical_model.pd create mode 100644 Gem/examples/10.glsl/11.geometry.pd create mode 100644 Gem/examples/10.glsl/12.tri2fan.pd create mode 100644 Gem/examples/10.glsl/13.panoramique.pd create mode 100644 Gem/examples/10.glsl/14.blur.pd create mode 100644 Gem/examples/10.glsl/15.bicubic_image_interpolation.pd create mode 100644 Gem/examples/10.glsl/GLSL_mix.frag create mode 100644 Gem/examples/10.glsl/GLSL_mix.vert create mode 100644 Gem/examples/10.glsl/P_distord.frag create mode 100644 Gem/examples/10.glsl/P_distord.vert create mode 100644 Gem/examples/10.glsl/T_distord.frag create mode 100644 Gem/examples/10.glsl/T_distord.vert create mode 100644 Gem/examples/10.glsl/_glsl.pd create mode 100644 Gem/examples/10.glsl/bicubic_interpolation.frag create mode 100644 Gem/examples/10.glsl/bicubic_interpolation.vert create mode 100644 Gem/examples/10.glsl/blur.frag create mode 100644 Gem/examples/10.glsl/blur.vert create mode 100644 Gem/examples/10.glsl/cam1.jpg create mode 100644 Gem/examples/10.glsl/cam2.jpg create mode 100644 Gem/examples/10.glsl/cam3.jpg create mode 100644 Gem/examples/10.glsl/cam4.jpg create mode 100644 Gem/examples/10.glsl/fetching.frag create mode 100644 Gem/examples/10.glsl/fetching.vert create mode 100644 Gem/examples/10.glsl/fetching2.frag create mode 100644 Gem/examples/10.glsl/fetching2.vert create mode 100644 Gem/examples/10.glsl/game.frag create mode 100644 Gem/examples/10.glsl/game.vert create mode 100644 Gem/examples/10.glsl/geo.frag create mode 100644 Gem/examples/10.glsl/geo.geom create mode 100644 Gem/examples/10.glsl/geo.vert create mode 100644 Gem/examples/10.glsl/img1.jpg create mode 100644 Gem/examples/10.glsl/img2.jpg create mode 100644 Gem/examples/10.glsl/img3.jpg create mode 100644 Gem/examples/10.glsl/interpol.frag create mode 100644 Gem/examples/10.glsl/link.frag create mode 100644 Gem/examples/10.glsl/link.vert create mode 100644 Gem/examples/10.glsl/mass.frag create mode 100644 Gem/examples/10.glsl/mass.vert create mode 100644 Gem/examples/10.glsl/multitexture.frag create mode 100644 Gem/examples/10.glsl/multitexture.vert create mode 100644 Gem/examples/10.glsl/multitexture_rect.frag create mode 100644 Gem/examples/10.glsl/multitexture_rect.vert create mode 100644 Gem/examples/10.glsl/normal.frag create mode 100644 Gem/examples/10.glsl/normal.vert create mode 100644 Gem/examples/10.glsl/panoramique.frag create mode 100644 Gem/examples/10.glsl/panoramique.vert create mode 100644 Gem/examples/10.glsl/single_blur.pd create mode 100644 Gem/examples/10.glsl/texture.frag create mode 100644 Gem/examples/10.glsl/texture.vert create mode 100644 Gem/examples/10.glsl/texture_rect.frag create mode 100644 Gem/examples/10.glsl/tri2fan.frag create mode 100644 Gem/examples/10.glsl/tri2fan.geom create mode 100644 Gem/examples/10.glsl/tri2fan.vert create mode 100644 Gem/examples/10.glsl/vague.frag create mode 100644 Gem/examples/10.glsl/wave.frag (limited to 'Gem/examples/10.glsl') diff --git a/Gem/examples/10.glsl/01.simple_texture.pd b/Gem/examples/10.glsl/01.simple_texture.pd new file mode 100644 index 0000000..2d1c6ba --- /dev/null +++ b/Gem/examples/10.glsl/01.simple_texture.pd @@ -0,0 +1,124 @@ +#N canvas 486 82 722 633 10; +#X obj 76 22 gemhead; +#X obj 76 367 glsl_program; +#X obj 169 329 print linking; +#X obj 76 411 rotateXYZ; +#X floatatom 96 389 5 0 0 0 - - -; +#X floatatom 140 389 5 0 0 0 - - -; +#X floatatom 182 389 5 0 0 0 - - -; +#X obj 76 580 pix_texture; +#X msg 548 116 color 1 0 0; +#X obj 106 69 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X msg 106 154 open texture.frag; +#X obj 76 197 glsl_fragment; +#X text 215 459 <- load texture; +#X obj 106 535 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X obj 76 489 pix_image img1.jpg; +#X msg 103 460 open img2.jpg; +#X msg 243 154 open texture_rect.frag; +#X msg 114 114 0; +#X obj 243 72 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X text 275 70 <-load an other shader; +#X text 279 84 (using rectangular texturing); +#X msg 254 113 1; +#X msg 351 258 B \$1; +#X msg 364 297 C \$1; +#X floatatom 351 241 5 0 0 0 - - -; +#X floatatom 364 280 5 0 0 0 - - -; +#X text 408 280 <- adjust Contrast; +#X text 400 240 <- adjust Brightness; +#X text 138 67 <- load shader; +#X obj 76 604 square 3; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 566 142 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 548 163 pd gemwin; +#X msg 106 555 rectangle \$1; +#X obj 254 134 s rectangle; +#X obj 114 135 s rectangle; +#X obj 106 512 r rectangle; +#X msg 32 167 print; +#X msg 39 340 print; +#X floatatom 192 372 0 0 0 0 - - -; +#X msg 151 308 link \$1; +#X obj 151 259 change; +#X connect 0 0 11 0; +#X connect 1 0 3 0; +#X connect 1 1 38 0; +#X connect 3 0 14 0; +#X connect 4 0 3 1; +#X connect 5 0 3 2; +#X connect 6 0 3 3; +#X connect 7 0 29 0; +#X connect 8 0 31 0; +#X connect 9 0 10 0; +#X connect 9 0 17 0; +#X connect 10 0 11 0; +#X connect 11 0 1 0; +#X connect 11 1 40 0; +#X connect 13 0 32 0; +#X connect 14 0 7 0; +#X connect 15 0 14 0; +#X connect 16 0 11 0; +#X connect 17 0 34 0; +#X connect 18 0 16 0; +#X connect 18 0 21 0; +#X connect 21 0 33 0; +#X connect 22 0 1 0; +#X connect 23 0 1 0; +#X connect 24 0 22 0; +#X connect 25 0 23 0; +#X connect 30 0 31 0; +#X connect 32 0 7 0; +#X connect 35 0 13 0; +#X connect 36 0 11 0; +#X connect 37 0 1 0; +#X connect 39 0 1 0; +#X connect 39 0 2 0; +#X connect 40 0 39 0; diff --git a/Gem/examples/10.glsl/02.primitive_distortion.pd b/Gem/examples/10.glsl/02.primitive_distortion.pd new file mode 100644 index 0000000..9a5280a --- /dev/null +++ b/Gem/examples/10.glsl/02.primitive_distortion.pd @@ -0,0 +1,125 @@ +#N canvas 462 82 520 667 10; +#X obj 74 -1 gemhead; +#X msg 29 80 print; +#X obj 74 262 glsl_program; +#X obj 146 121 change; +#X msg 98 233 print; +#X floatatom 146 144 2 0 0 0 ID - -; +#X obj 164 212 print linking; +#X obj 74 102 glsl_vertex; +#X obj 74 451 pix_texture; +#X obj 124 59 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 74 24 alpha; +#X obj 101 397 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X floatatom 292 202 5 0 0 0 - - -; +#X msg 101 375 0; +#X msg 292 223 K \$1; +#X obj 74 494 sphere 2 30; +#N canvas 0 50 450 300 load_shader 0; +#X obj 89 99 t b b; +#X msg 119 126 0; +#X obj 89 154 outlet; +#X obj 89 71 gemhead 1; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 3 0; +#X connect 3 0 0 0; +#X restore 124 38 pd load_shader; +#N canvas 50 82 450 300 init_shader 0; +#X obj 89 154 outlet; +#X obj 89 45 inlet; +#X obj 89 73 change; +#X obj 89 100 t b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 153 286 pd init_shader; +#X obj 101 354 loadbang; +#X text 347 201 <- 2; +#X text 395 670 ch 20007; +#X msg 103 305 open texture.jpg; +#X obj 74 471 rotateXYZ -90 0 0; +#X msg 292 177 0.1; +#X obj 74 328 pix_image img3.jpg; +#X msg 88 80 open P_distord.vert; +#X text 69 527 this shader create a dirty pseudo random value \, and +move all vertices separatly; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 389 41 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 359 58 pd gemwin; +#X msg 101 417 rectangle \$1; +#X msg 146 191 link \$1; +#X connect 0 0 10 0; +#X connect 1 0 7 0; +#X connect 2 0 24 0; +#X connect 2 1 17 0; +#X connect 3 0 5 0; +#X connect 4 0 2 0; +#X connect 5 0 30 0; +#X connect 7 0 2 0; +#X connect 7 1 3 0; +#X connect 8 0 22 0; +#X connect 9 0 25 0; +#X connect 10 0 7 0; +#X connect 11 0 29 0; +#X connect 12 0 14 0; +#X connect 13 0 11 0; +#X connect 14 0 2 0; +#X connect 16 0 9 0; +#X connect 17 0 23 0; +#X connect 18 0 13 0; +#X connect 21 0 24 0; +#X connect 22 0 15 0; +#X connect 23 0 12 0; +#X connect 24 0 8 0; +#X connect 25 0 7 0; +#X connect 27 0 28 0; +#X connect 29 0 8 0; +#X connect 30 0 2 0; +#X connect 30 0 6 0; diff --git a/Gem/examples/10.glsl/03.texture_distortion.pd b/Gem/examples/10.glsl/03.texture_distortion.pd new file mode 100644 index 0000000..be30c96 --- /dev/null +++ b/Gem/examples/10.glsl/03.texture_distortion.pd @@ -0,0 +1,144 @@ +#N canvas 10 10 552 667 10; +#X text 381 660 ch 20007; +#X obj 74 -1 gemhead; +#X msg 29 80 print; +#X obj 74 382 glsl_program; +#X obj 147 281 pack 0 0; +#X msg 31 162 print; +#X obj 168 261 t b f; +#X obj 168 216 change; +#X obj 146 121 change; +#X msg 147 304 link \$1 \$2; +#X msg 98 353 print; +#X floatatom 168 242 2 0 0 0 ID - -; +#X floatatom 146 144 2 0 0 0 ID - -; +#X obj 165 325 print linking; +#X obj 74 196 glsl_fragment; +#X obj 74 102 glsl_vertex; +#X obj 74 571 pix_texture; +#X obj 124 59 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 74 24 alpha; +#X obj 124 522 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X floatatom 361 352 5 0 0 0 - - -; +#X floatatom 476 353 5 0 0 0 - - -; +#X msg 124 500 0; +#N canvas 0 0 450 300 load_shader 0; +#X obj 89 99 t b b; +#X msg 119 126 0; +#X obj 89 154 outlet; +#X obj 89 71 gemhead 1; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 3 0; +#X connect 3 0 0 0; +#X restore 124 38 pd load_shader; +#N canvas 0 0 450 300 init_shader 0; +#X obj 89 154 outlet; +#X obj 89 45 inlet; +#X obj 89 73 change; +#X obj 89 100 t b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 155 405 pd init_shader; +#X obj 124 479 loadbang; +#X text 416 351 <- 2; +#X msg 92 431 open texture.jpg; +#X msg 361 373 K1 \$1; +#X msg 361 327 1; +#X msg 476 375 seed \$1; +#X msg 88 80 open T_distord.vert; +#X msg 85 166 open T_distord.frag; +#X obj 74 458 pix_image img3.jpg; +#X obj 74 596 rectangle 4 4; +#X text 73 627 This shader compute a dirty pseudo random number \, +and distort the texture this with value; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 384 41 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 354 58 pd gemwin; +#X msg 124 542 rectangle \$1; +#X connect 1 0 18 0; +#X connect 2 0 15 0; +#X connect 3 0 33 0; +#X connect 3 1 24 0; +#X connect 4 0 9 0; +#X connect 5 0 14 0; +#X connect 6 0 4 0; +#X connect 6 1 4 1; +#X connect 7 0 11 0; +#X connect 8 0 12 0; +#X connect 9 0 3 0; +#X connect 9 0 13 0; +#X connect 10 0 3 0; +#X connect 11 0 6 0; +#X connect 12 0 4 0; +#X connect 14 0 3 0; +#X connect 14 1 7 0; +#X connect 15 0 14 0; +#X connect 15 1 8 0; +#X connect 16 0 34 0; +#X connect 17 0 31 0; +#X connect 17 0 32 0; +#X connect 18 0 15 0; +#X connect 19 0 38 0; +#X connect 20 0 28 0; +#X connect 21 0 30 0; +#X connect 22 0 19 0; +#X connect 23 0 17 0; +#X connect 24 0 29 0; +#X connect 25 0 22 0; +#X connect 27 0 33 0; +#X connect 28 0 3 0; +#X connect 29 0 20 0; +#X connect 30 0 3 0; +#X connect 31 0 15 0; +#X connect 32 0 14 0; +#X connect 33 0 16 0; +#X connect 36 0 37 0; +#X connect 38 0 16 0; diff --git a/Gem/examples/10.glsl/04.game_of_life.pd b/Gem/examples/10.glsl/04.game_of_life.pd new file mode 100644 index 0000000..16ccb57 --- /dev/null +++ b/Gem/examples/10.glsl/04.game_of_life.pd @@ -0,0 +1,138 @@ +#N canvas 10 10 599 681 10; +#X obj 316 488 pix_snap2tex; +#X msg 356 461 0 0; +#X msg 402 460 500 500; +#X obj 356 438 t b b; +#X obj 316 513 alpha; +#X obj 316 563 square 4; +#X msg 52 75 frame \$1; +#X floatatom 52 57 5 0 0 0 - - -; +#X obj 356 419 loadbang; +#X msg 271 95 print; +#X obj 316 370 glsl_program; +#X obj 389 296 pack 0 0; +#X msg 273 177 print; +#X obj 410 276 t b f; +#X obj 410 231 change; +#X obj 388 136 change; +#X msg 389 321 link \$1 \$2; +#X msg 272 333 print; +#X floatatom 410 257 2 0 0 0 ID - -; +#X floatatom 388 159 2 0 0 0 ID - -; +#X obj 407 342 print linking; +#X obj 316 211 glsl_fragment; +#X obj 316 117 glsl_vertex; +#X obj 338 68 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 316 37 gemhead -1; +#X obj 316 537 colorRGB 1 1 1 1; +#X msg 330 95 open game.vert; +#X msg 327 181 open game.frag; +#X obj 39 259 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 39 281 gemhead 50; +#X obj 39 311 translateXYZ 0 0 1; +#X obj 39 409 rectangle; +#X obj 39 216 loadbang; +#X msg 39 237 0; +#X text 157 261 <- 3; +#X text 375 69 <- 2 : load shader; +#X obj 316 392 t b a; +#X floatatom 69 362 5 0 0 0 - - -; +#X floatatom 124 363 5 0 0 0 - - -; +#X obj 69 381 / 100; +#X obj 124 384 / 100; +#X text 13 634 This is an example of iterative process : the output +of the shader is used for next frame input; +#X text 145 140 <----- 1; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 82 100 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 52 117 pd gemwin; +#X connect 0 0 4 0; +#X connect 1 0 0 1; +#X connect 2 0 0 2; +#X connect 3 0 1 0; +#X connect 3 1 2 0; +#X connect 4 0 25 0; +#X connect 6 0 44 0; +#X connect 7 0 6 0; +#X connect 8 0 3 0; +#X connect 9 0 22 0; +#X connect 10 0 36 0; +#X connect 11 0 16 0; +#X connect 12 0 21 0; +#X connect 13 0 11 0; +#X connect 13 1 11 1; +#X connect 14 0 18 0; +#X connect 15 0 19 0; +#X connect 16 0 10 0; +#X connect 16 0 20 0; +#X connect 17 0 10 0; +#X connect 18 0 13 0; +#X connect 19 0 11 0; +#X connect 21 0 10 0; +#X connect 21 1 14 0; +#X connect 22 0 21 0; +#X connect 22 1 15 0; +#X connect 23 0 26 0; +#X connect 23 0 27 0; +#X connect 24 0 22 0; +#X connect 25 0 5 0; +#X connect 26 0 22 0; +#X connect 27 0 21 0; +#X connect 28 0 29 0; +#X connect 29 0 30 0; +#X connect 30 0 31 0; +#X connect 32 0 33 0; +#X connect 33 0 28 0; +#X connect 36 0 0 0; +#X connect 36 1 0 0; +#X connect 37 0 39 0; +#X connect 38 0 40 0; +#X connect 39 0 31 1; +#X connect 40 0 31 2; +#X connect 43 0 44 0; diff --git a/Gem/examples/10.glsl/05.multitexture.pd b/Gem/examples/10.glsl/05.multitexture.pd new file mode 100644 index 0000000..d80c9a4 --- /dev/null +++ b/Gem/examples/10.glsl/05.multitexture.pd @@ -0,0 +1,201 @@ +#N canvas 10 10 930 667 10; +#X obj 76 5 gemhead; +#X obj 75 429 glsl_program; +#X obj 149 268 pack 0 0; +#X obj 170 248 t b f; +#X obj 164 203 change; +#X msg 149 294 link \$1 \$2; +#X floatatom 170 229 2 0 0 0 ID - -; +#X floatatom 148 121 2 0 0 0 ID - -; +#X obj 167 315 print linking; +#X msg 365 23 color 1 0 0; +#X obj 142 27 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 76 79 glsl_vertex; +#X obj 76 183 glsl_fragment; +#X obj 463 464 pix_texture; +#X obj 546 271 openpanel; +#X obj 546 248 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 90 57 open multitexture.vert; +#X msg 86 153 open multitexture.frag; +#X obj 463 230 gemhead 11; +#X obj 463 204 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 463 90 1) turn on rendering; +#X msg 503 432 texunit 1; +#X obj 687 467 pix_texture; +#X obj 768 271 openpanel; +#X obj 768 250 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 687 204 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 725 430 texunit 0; +#X obj 462 488 translateXYZ -2 0 0; +#X obj 685 490 translateXYZ 2 0 0; +#X msg 187 406 MyTex 0; +#X obj 75 644 pix_texture; +#X obj 218 498 openpanel; +#X obj 218 477 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 254 381 MyTex1 1; +#X msg 255 406 MyTex 1; +#X msg 186 381 MyTex1 0; +#X msg 321 382 MyTex1 2; +#X msg 326 407 MyTex 2; +#N canvas 0 0 450 300 load_shader 0; +#X obj 89 99 t b b; +#X msg 119 126 0; +#X obj 89 154 outlet; +#X obj 89 71 gemhead 1; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 3 0; +#X connect 3 0 0 0; +#X restore 142 5 pd load_shader; +#N canvas 0 0 450 300 init_shader 0; +#X obj 89 154 outlet; +#X obj 89 45 inlet; +#X obj 89 73 change; +#X obj 89 100 t b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 156 450 pd init_shader; +#X msg 546 296 set open \$1 \, bang; +#X obj 491 387 loadbang; +#X msg 218 519 set open \$1 \, bang; +#X msg 768 294 set open \$1 \, bang; +#X obj 482 295 loadbang; +#X obj 153 519 loadbang; +#X obj 704 294 loadbang; +#X obj 220 569 loadbang; +#X obj 716 388 loadbang; +#X obj 687 229 gemhead 22; +#X text 187 360 2) change shader texuinit; +#X msg 482 320 open img2.jpg; +#X obj 463 349 pix_image img2.jpg; +#X obj 687 346 pix_image img3.jpg; +#X msg 704 318 open img3.jpg; +#X msg 153 544 open img1.jpg; +#X obj 75 613 pix_image img1.jpg; +#X obj 148 98 change; +#X text 343 147 This is an example of multitexturing \, this shader +mixes 2 textures; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 395 47 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 365 64 pd gemwin; +#X obj 75 670 rectangle 3 3; +#X obj 462 514 square 2; +#X obj 685 516 square 2; +#X msg 220 591 texunit 2 \, rectangle 0; +#X msg 491 409 texunit 0 \, rectangle 0; +#X msg 716 409 texunit 1 \, rectangle 0; +#X connect 0 0 11 0; +#X connect 1 0 56 0; +#X connect 1 1 39 0; +#X connect 2 0 5 0; +#X connect 3 0 2 0; +#X connect 3 1 2 1; +#X connect 4 0 6 0; +#X connect 5 0 1 0; +#X connect 5 0 8 0; +#X connect 6 0 3 0; +#X connect 7 0 2 0; +#X connect 9 0 60 0; +#X connect 10 0 16 0; +#X connect 10 0 17 0; +#X connect 11 0 12 0; +#X connect 11 1 57 0; +#X connect 12 0 1 0; +#X connect 12 1 4 0; +#X connect 13 0 27 0; +#X connect 14 0 40 0; +#X connect 15 0 14 0; +#X connect 16 0 11 0; +#X connect 17 0 12 0; +#X connect 18 0 52 0; +#X connect 19 0 18 0; +#X connect 21 0 13 0; +#X connect 22 0 28 0; +#X connect 23 0 43 0; +#X connect 24 0 23 0; +#X connect 25 0 49 0; +#X connect 26 0 22 0; +#X connect 29 0 1 0; +#X connect 30 0 61 0; +#X connect 31 0 42 0; +#X connect 32 0 31 0; +#X connect 33 0 1 0; +#X connect 34 0 1 0; +#X connect 35 0 1 0; +#X connect 36 0 1 0; +#X connect 37 0 1 0; +#X connect 38 0 10 0; +#X connect 39 0 33 0; +#X connect 39 0 29 0; +#X connect 40 0 51 0; +#X connect 41 0 65 0; +#X connect 42 0 55 0; +#X connect 43 0 54 0; +#X connect 44 0 51 0; +#X connect 45 0 55 0; +#X connect 46 0 54 0; +#X connect 47 0 64 0; +#X connect 48 0 66 0; +#X connect 49 0 53 0; +#X connect 51 0 52 0; +#X connect 52 0 13 0; +#X connect 53 0 22 0; +#X connect 54 0 53 0; +#X connect 55 0 56 0; +#X connect 56 0 30 0; +#X connect 57 0 7 0; +#X connect 59 0 60 0; +#X connect 64 0 30 0; +#X connect 65 0 13 0; +#X connect 66 0 22 0; diff --git a/Gem/examples/10.glsl/05.multitexture_bis.pd b/Gem/examples/10.glsl/05.multitexture_bis.pd new file mode 100644 index 0000000..63652ff --- /dev/null +++ b/Gem/examples/10.glsl/05.multitexture_bis.pd @@ -0,0 +1,200 @@ +#N canvas 207 200 1100 637 10; +#X obj 76 5 gemhead; +#X obj 75 429 glsl_program; +#X obj 149 268 pack 0 0; +#X obj 170 248 t b f; +#X obj 164 203 change; +#X msg 149 294 link \$1 \$2; +#X floatatom 170 229 2 0 0 0 ID - -; +#X floatatom 148 121 2 0 0 0 ID - -; +#X obj 167 315 print linking; +#X msg 365 23 color 1 0 0; +#X obj 142 27 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 76 79 glsl_vertex; +#X obj 76 183 glsl_fragment; +#X obj 749 262 openpanel; +#X obj 749 239 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 90 57 open multitexture.vert; +#X msg 86 153 open multitexture.frag; +#X obj 666 221 gemhead 11; +#X obj 666 195 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 463 90 1) turn on rendering; +#X obj 971 262 openpanel; +#X obj 971 241 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 890 195 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 187 406 MyTex 0; +#X msg 254 381 MyTex1 1; +#X msg 255 406 MyTex 1; +#X msg 186 381 MyTex1 0; +#X msg 321 382 MyTex1 2; +#X msg 326 407 MyTex 2; +#N canvas 0 0 450 300 load_shader 0; +#X obj 89 99 t b b; +#X msg 119 126 0; +#X obj 89 154 outlet; +#X obj 89 71 gemhead 1; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 3 0; +#X connect 3 0 0 0; +#X restore 142 5 pd load_shader; +#N canvas 0 0 450 300 init_shader 0; +#X obj 89 154 outlet; +#X obj 89 45 inlet; +#X obj 89 73 change; +#X obj 89 100 t b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 156 450 pd init_shader; +#X msg 749 287 set open \$1 \, bang; +#X obj 694 378 loadbang; +#X msg 971 285 set open \$1 \, bang; +#X obj 685 286 loadbang; +#X obj 907 285 loadbang; +#X obj 919 379 loadbang; +#X obj 890 220 gemhead 22; +#X text 187 360 2) change shader texuinit; +#X msg 685 311 open img2.jpg; +#X obj 666 340 pix_image img2.jpg; +#X obj 890 337 pix_image img3.jpg; +#X msg 907 309 open img3.jpg; +#X obj 148 98 change; +#X text 343 147 This is an example of multitexturing \, this shader +mixes 2 textures; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 395 47 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 365 64 pd gemwin; +#X obj 75 550 rectangle 3 3; +#X obj 75 520 pix_multitexture 3; +#X obj 666 425 pix_texture; +#X obj 890 428 pix_texture; +#X msg 694 400 rectangle 0; +#X msg 919 400 rectangle 0; +#X obj 526 264 openpanel; +#X obj 526 241 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 443 223 gemhead 11; +#X obj 443 197 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 526 289 set open \$1 \, bang; +#X obj 471 380 loadbang; +#X obj 462 288 loadbang; +#X obj 443 427 pix_texture; +#X msg 471 402 rectangle 0; +#X msg 462 313 open img1.jpg; +#X obj 443 342 pix_image img1.jpg; +#X connect 0 0 11 0; +#X connect 1 0 48 0; +#X connect 1 1 30 0; +#X connect 2 0 5 0; +#X connect 3 0 2 0; +#X connect 3 1 2 1; +#X connect 4 0 6 0; +#X connect 5 0 1 0; +#X connect 5 0 8 0; +#X connect 6 0 3 0; +#X connect 7 0 2 0; +#X connect 9 0 46 0; +#X connect 10 0 15 0; +#X connect 10 0 16 0; +#X connect 11 0 12 0; +#X connect 11 1 43 0; +#X connect 12 0 1 0; +#X connect 12 1 4 0; +#X connect 13 0 31 0; +#X connect 14 0 13 0; +#X connect 15 0 11 0; +#X connect 16 0 12 0; +#X connect 17 0 40 0; +#X connect 18 0 17 0; +#X connect 20 0 33 0; +#X connect 21 0 20 0; +#X connect 22 0 37 0; +#X connect 23 0 1 0; +#X connect 24 0 1 0; +#X connect 25 0 1 0; +#X connect 26 0 1 0; +#X connect 27 0 1 0; +#X connect 28 0 1 0; +#X connect 29 0 10 0; +#X connect 30 0 24 0; +#X connect 30 0 23 0; +#X connect 31 0 39 0; +#X connect 32 0 51 0; +#X connect 33 0 42 0; +#X connect 34 0 39 0; +#X connect 35 0 42 0; +#X connect 36 0 52 0; +#X connect 37 0 41 0; +#X connect 39 0 40 0; +#X connect 40 0 49 0; +#X connect 41 0 50 0; +#X connect 42 0 41 0; +#X connect 43 0 7 0; +#X connect 45 0 46 0; +#X connect 48 0 47 0; +#X connect 49 1 48 2; +#X connect 50 1 48 3; +#X connect 51 0 49 0; +#X connect 52 0 50 0; +#X connect 53 0 57 0; +#X connect 54 0 53 0; +#X connect 55 0 63 0; +#X connect 56 0 55 0; +#X connect 57 0 62 0; +#X connect 58 0 61 0; +#X connect 59 0 62 0; +#X connect 60 1 48 1; +#X connect 61 0 60 0; +#X connect 62 0 63 0; +#X connect 63 0 60 0; diff --git a/Gem/examples/10.glsl/06.rectangle_multitexture.pd b/Gem/examples/10.glsl/06.rectangle_multitexture.pd new file mode 100644 index 0000000..48e6600 --- /dev/null +++ b/Gem/examples/10.glsl/06.rectangle_multitexture.pd @@ -0,0 +1,199 @@ +#N canvas 511 97 648 675 10; +#X obj 279 76 gemhead; +#X obj 295 208 loadbang; +#X obj 279 251 pix_texture; +#X msg 295 231 rectangle 1 \, texunit 1; +#X obj 334 97 openpanel; +#X msg 334 118 open \$1; +#X obj 334 76 bng 15 250 50 0 empty empty empty 17 7 0 10 -257985 -1 +-1; +#X obj 459 76 gemhead; +#X obj 475 208 loadbang; +#X obj 459 251 pix_texture; +#X obj 514 97 openpanel; +#X msg 514 118 open \$1; +#X obj 514 76 bng 15 250 50 0 empty empty empty 17 7 0 10 -257985 -1 +-1; +#X msg 475 231 rectangle 1 \, texunit 2; +#X obj 279 275 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 0 450 300 gemwin 0; +#X obj 132 136 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 132 112 create \, 1; +#X msg 198 112 destroy; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 6 0; +#X connect 3 1 5 0; +#X connect 3 1 7 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 restore 284 314 pd gemwin; +#X msg 284 295 create; +#X text 280 274 Create window:; +#X obj 101 358 cnv 15 100 120 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 37 538 glsl_program; +#X obj 100 259 pack 0 0; +#X obj 118 236 t b f; +#X obj 118 194 change; +#X msg 100 285 link \$1 \$2; +#X floatatom 118 217 2 0 0 0 ID - -; +#X floatatom 100 133 2 0 0 0 ID - -; +#X obj 105 309 print linking; +#X obj 124 43 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 37 88 glsl_vertex; +#X obj 37 174 glsl_fragment; +#N canvas 0 0 450 300 load_shader 0; +#X msg 116 126 0; +#X obj 89 154 outlet; +#X obj 89 71 gemhead 1; +#X obj 89 100 t b b; +#X connect 0 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X connect 3 1 0 0; +#X restore 124 21 pd load_shader; +#X obj 100 110 change; +#X obj 106 581 loadbang; +#X obj 37 21 gemhead 51; +#X msg 109 371 add; +#X msg 109 431 multiply; +#X msg 109 451 mix; +#N canvas 0 0 450 300 route 0; +#X obj 113 53 inlet; +#X msg 113 95 0; +#X msg 155 95 1; +#X msg 198 95 2; +#X msg 240 95 3; +#X obj 113 126 outlet; +#X msg 283 95 4; +#X obj 113 74 route add subtract diff multiply mix; +#X connect 0 0 7 0; +#X connect 1 0 5 0; +#X connect 2 0 5 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 6 0 5 0; +#X connect 7 0 1 0; +#X connect 7 1 2 0; +#X connect 7 2 3 0; +#X connect 7 3 4 0; +#X connect 7 4 6 0; +#X restore 72 486 pd route; +#X msg 184 540 Ttex1 1; +#X msg 240 540 Ttex2 2; +#X msg 72 507 style \$1; +#X obj 109 337 loadbang; +#X obj 37 625 pix_texture; +#X msg 106 603 rectangle 1 \, texunit 0; +#X obj 37 598 pix_set; +#X obj 142 457 hsl 50 10 0 1 0 0 empty empty MIX_FACTOR -2 -4 0 7 -262144 +-1 -1 0 1; +#X msg 51 66 open GLSL_mix.vert; +#X msg 51 151 open GLSL_mix.frag; +#X msg 109 411 diff; +#X text 383 295 <- 1 : create GEM window; +#X text 248 375 add : add two texture together (it is easy to get a +white out); +#X msg 109 391 subtract; +#X text 277 16 This shader program give you the possibility to mix +two sources of different size. You can add \, subtract \, diff \, multiply +and mix the two sources.; +#X text 248 401 subtract : subtract two texture together (it is easy +to get a black out); +#X text 248 427 diff : subtract two texture together (get absolute +value); +#X text 248 441 multiply : multiply two texture together; +#X text 248 455 mix : mix two texture together (use the mix factor +for crossfading); +#N canvas 242 260 450 300 onebang 0; +#X obj 120 71 inlet; +#X obj 120 151 outlet; +#X obj 120 120 t b; +#X obj 120 100 change; +#X msg 161 71 set -1; +#X obj 161 11 gemhead; +#X obj 161 51 route 0; +#X obj 161 31 route gem_state; +#X connect 0 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 4 0 3 0; +#X connect 5 0 7 0; +#X connect 6 0 4 0; +#X connect 7 0 6 0; +#X restore 106 559 pd onebang; +#X text 206 357 <- 2 : test differents mix; +#X obj 459 167 pix_resize 512 512; +#X obj 279 167 pix_resize 234 543; +#X obj 279 147 pix_image img3.jpg; +#X obj 459 147 pix_image img2.jpg; +#X text 292 186 images have diferents sizes; +#X msg 139 507 mix_factor \$1; +#X obj 37 646 square 4; +#X connect 0 0 61 0; +#X connect 1 0 3 0; +#X connect 3 0 2 0; +#X connect 4 0 5 0; +#X connect 5 0 61 0; +#X connect 6 0 4 0; +#X connect 7 0 62 0; +#X connect 8 0 13 0; +#X connect 10 0 11 0; +#X connect 11 0 62 0; +#X connect 12 0 10 0; +#X connect 13 0 9 0; +#X connect 15 0 16 0; +#X connect 16 0 15 0; +#X connect 19 0 44 0; +#X connect 19 1 57 0; +#X connect 20 0 23 0; +#X connect 21 0 20 0; +#X connect 21 1 20 1; +#X connect 22 0 24 0; +#X connect 23 0 19 0; +#X connect 23 0 26 0; +#X connect 24 0 21 0; +#X connect 25 0 20 0; +#X connect 27 0 46 0; +#X connect 27 0 47 0; +#X connect 28 0 29 0; +#X connect 28 1 31 0; +#X connect 29 0 19 0; +#X connect 29 1 22 0; +#X connect 30 0 27 0; +#X connect 31 0 25 0; +#X connect 32 0 43 0; +#X connect 33 0 28 0; +#X connect 34 0 37 0; +#X connect 35 0 37 0; +#X connect 36 0 37 0; +#X connect 37 0 40 0; +#X connect 38 0 19 0; +#X connect 39 0 19 0; +#X connect 40 0 19 0; +#X connect 41 0 34 0; +#X connect 42 0 65 0; +#X connect 43 0 42 0; +#X connect 44 0 42 0; +#X connect 45 0 64 0; +#X connect 46 0 28 0; +#X connect 47 0 29 0; +#X connect 48 0 37 0; +#X connect 51 0 37 0; +#X connect 57 0 38 0; +#X connect 57 0 39 0; +#X connect 59 0 9 0; +#X connect 60 0 2 0; +#X connect 61 0 60 0; +#X connect 62 0 59 0; +#X connect 64 0 19 0; diff --git a/Gem/examples/10.glsl/07.framebuffer_and_shader.pd b/Gem/examples/10.glsl/07.framebuffer_and_shader.pd new file mode 100644 index 0000000..c829e8f --- /dev/null +++ b/Gem/examples/10.glsl/07.framebuffer_and_shader.pd @@ -0,0 +1,418 @@ +#N canvas 1 25 1126 659 10; +#X obj 9 470 translateXYZ 0 0 -4; +#X obj 9 234 ortho; +#X floatatom 83 538 5 0 0 0 - - -; +#X msg 83 515 \$1; +#X obj 9 365 gemframebuffer; +#X obj 9 494 pix_texture; +#X obj 218 474 translateXYZ 0 0 -4; +#X obj 218 501 pix_texture; +#X floatatom 484 153 5 0 0 0 - - -; +#X msg 484 131 \$1; +#X floatatom 325 550 5 0 0 0 - - -; +#X msg 325 528 \$1; +#X floatatom 104 412 5 0 0 0 - - -; +#X msg 104 389 \$1; +#X floatatom 294 411 5 0 0 0 - - -; +#X msg 294 388 \$1; +#X obj 435 58 loadbang; +#X obj 199 364 gemframebuffer; +#N canvas 573 206 496 427 shader 0; +#X obj 32 294 glsl_program; +#X obj 126 137 change; +#X obj 126 183 print linking; +#X obj 32 117 glsl_fragment; +#X floatatom 130 239 5 0 0 0 - - -; +#X floatatom 232 239 5 0 0 0 - - -; +#X floatatom 181 239 5 0 0 0 - - -; +#X msg 130 260 K1 \$1; +#X msg 181 260 K3 \$1; +#X msg 232 260 D1 \$1; +#X msg 130 214 0.25; +#X msg 126 158 link \$1; +#N canvas 0 0 450 300 load_shader 0; +#X obj 89 99 t b b; +#X msg 119 126 0; +#X obj 89 154 outlet; +#X obj 89 71 gemhead 1; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 3 0; +#X connect 3 0 0 0; +#X restore 42 70 pd load_shader; +#X obj 32 36 inlet; +#X obj 32 363 outlet; +#X obj 304 38 inlet; +#X obj 139 343 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#N canvas 0 0 450 300 init_shader 0; +#X obj 89 154 outlet; +#X obj 89 45 inlet; +#X obj 89 73 change; +#X obj 89 100 t b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 113 318 pd init_shader; +#X obj 112 341 t b; +#X obj 395 43 inlet; +#X msg 181 213 0; +#X msg 232 215 0; +#X msg 193 151 text 0; +#X msg 42 93 open wave.frag; +#X connect 0 0 14 0; +#X connect 0 1 17 0; +#X connect 1 0 11 0; +#X connect 3 0 0 0; +#X connect 3 1 1 0; +#X connect 4 0 7 0; +#X connect 5 0 9 0; +#X connect 6 0 8 0; +#X connect 7 0 0 0; +#X connect 8 0 0 0; +#X connect 9 0 0 0; +#X connect 10 0 4 0; +#X connect 11 0 0 0; +#X connect 11 0 2 0; +#X connect 12 0 23 0; +#X connect 13 0 3 0; +#X connect 15 0 23 0; +#X connect 16 0 18 0; +#X connect 17 0 18 0; +#X connect 18 0 10 0; +#X connect 18 0 20 0; +#X connect 18 0 21 0; +#X connect 18 0 22 0; +#X connect 19 0 16 0; +#X connect 20 0 6 0; +#X connect 21 0 5 0; +#X connect 22 0 0 0; +#X connect 23 0 3 0; +#X restore 9 274 pd shader; +#X obj 137 289 t a; +#X obj 137 197 t b; +#X obj 147 177 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 137 156 loadbang; +#X obj 218 421 t a a; +#X obj 402 518 separator; +#X obj 218 447 separator; +#X obj 218 537 color 1 1 1; +#X obj 218 563 rectangle 4 4; +#X obj 9 563 rectangle 4 4; +#X obj 66 250 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 93 251 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 390 472 t a; +#N canvas 0 0 857 562 border 0; +#X obj 14 10 inlet; +#X obj 13 46 separator; +#X obj 13 68 translateXYZ 0 4 -3.9; +#X obj 13 115 rectangle 5 0.12; +#X obj 182 46 separator; +#X obj 182 115 rectangle 5 0.12; +#X obj 351 45 separator; +#X obj 182 68 translateXYZ 0 -4 -3.9; +#X obj 351 67 translateXYZ 4 0 -3.9; +#X obj 351 114 rectangle 0.12 5; +#X obj 528 39 separator; +#X obj 528 108 rectangle 0.12 5; +#X obj 528 61 translateXYZ -4 0 -3.9; +#X obj 528 85 color 0.5 0.5 0.5; +#X obj 351 91 color 0.5 0.5 0.5; +#X obj 181 93 color 0.5 0.5 0.5; +#X obj 13 92 color 0.5 0.5 0.5; +#X connect 0 0 1 0; +#X connect 0 0 4 0; +#X connect 0 0 6 0; +#X connect 0 0 10 0; +#X connect 1 0 2 0; +#X connect 2 0 16 0; +#X connect 4 0 7 0; +#X connect 6 0 8 0; +#X connect 7 0 15 0; +#X connect 8 0 14 0; +#X connect 10 0 12 0; +#X connect 12 0 13 0; +#X connect 13 0 11 0; +#X connect 14 0 9 0; +#X connect 15 0 5 0; +#X connect 16 0 3 0; +#X restore 390 569 pd border; +#X obj 774 148 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 774 172 gemhead 40; +#X floatatom 825 519 5 0 0 0 - - -; +#X obj 774 484 pix_texture; +#X floatatom 876 520 5 0 0 0 - - -; +#X obj 442 357 pix_texture; +#X floatatom 867 236 5 0 0 0 - - -; +#X obj 653 216 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 454 308 loadbang; +#X obj 786 442 loadbang; +#N canvas 693 153 804 667 _glsl 0; +#X obj 80 426 glsl_program; +#X obj 261 238 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 204 237 pd open; +#X msg 33 296 print; +#X obj 166 331 change; +#X msg 34 420 print; +#X obj 80 310 glsl_fragment; +#X floatatom 166 355 2 0 0 0 ID - -; +#X obj 184 400 print linking; +#X obj 13 52 inlet; +#X obj 80 462 outlet; +#X msg 93 273 open \$1.frag; +#X msg 204 261 open \$1; +#X obj 422 77 inlet; +#X obj 13 75 route bang; +#X obj 140 83 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 140 109 t b b; +#X msg 140 202 symbol \$1/\$2; +#X obj 255 11 gemhead 1; +#X msg 255 33 1; +#X obj 255 57 change; +#X obj 255 81 t b; +#X obj 159 447 change; +#X obj 159 468 t b; +#X obj 159 491 outlet; +#X msg 166 379 link \$1; +#X obj 140 133 symbol vague; +#X connect 0 0 10 0; +#X connect 0 1 22 0; +#X connect 1 0 2 0; +#X connect 2 0 12 0; +#X connect 3 0 6 0; +#X connect 4 0 7 0; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X connect 6 1 4 0; +#X connect 7 0 25 0; +#X connect 9 0 14 0; +#X connect 11 0 6 0; +#X connect 12 0 6 0; +#X connect 13 0 0 0; +#X connect 14 0 16 0; +#X connect 14 1 6 0; +#X connect 15 0 16 0; +#X connect 16 0 26 0; +#X connect 17 0 11 0; +#X connect 18 0 19 0; +#X connect 19 0 20 0; +#X connect 20 0 21 0; +#X connect 21 0 16 0; +#X connect 22 0 23 0; +#X connect 23 0 24 0; +#X connect 25 0 0 0; +#X connect 25 0 8 0; +#X connect 26 0 11 0; +#X restore 774 326 pd _glsl; +#X obj 743 302 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 435 82 texunit 3; +#X obj 410 108 pix_texture; +#X obj 181 299 t a; +#N canvas 0 0 450 300 gouttes 0; +#X obj 27 79 translateXYZ 0 0 -4; +#X obj 27 101 t a b b; +#X obj 27 195 translateXYZ 0 0 0.1; +#X obj 50 123 random 1000; +#X obj 50 147 - 500; +#X obj 136 123 random 1000; +#X obj 136 147 - 500; +#X obj 50 171 / 130; +#X obj 136 171 / 130; +#X obj 27 242 circle 0.02; +#X obj 27 218 color 0.3 0.3 0.3; +#X obj 28 51 inlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 1 1 3 0; +#X connect 1 2 5 0; +#X connect 2 0 10 0; +#X connect 3 0 4 0; +#X connect 4 0 7 0; +#X connect 5 0 6 0; +#X connect 6 0 8 0; +#X connect 7 0 2 1; +#X connect 8 0 2 2; +#X connect 10 0 9 0; +#X connect 11 0 0 0; +#X restore 402 542 pd gouttes; +#X msg 244 284 quality 0; +#X obj 774 541 rectangle -4 -4; +#X obj 9 155 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 220 180 delay 1000; +#N canvas 0 0 450 300 init 0; +#X obj 89 154 outlet; +#X obj 89 100 change; +#X obj 89 127 t b; +#X obj 91 52 gemhead; +#X msg 91 73 1; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 4 0 1 0; +#X restore 220 157 pd init; +#X obj 410 34 gemhead 16; +#X obj 199 342 gemhead 12; +#X obj 442 214 gemhead 17; +#X obj 9 177 gemhead 10; +#X obj 442 240 pix_image img2.jpg; +#X msg 867 215 111; +#X text 33 612 This shader is rendered into a framebuffer \, in order +to use it in the next frame for a simple physical modeling simulation +; +#X text 345 168 This creates a texture (texunit 3) from the shaders' +output; +#X text 437 386 this loads a texture (texunit 2); +#X text 691 411 not used \, just to set texture coordinate; +#X text 633 594 This uses the two textures (texunit 2 and 3) in order +to render the final images; +#X text 201 9 This is an example of rendering to texture (using framebuffer) +and multitextures; +#X obj 402 497 t a a a a a; +#X obj 774 393 pix_set 512 512; +#N canvas 87 154 452 208 Gem.init 0; +#X obj 118 46 loadbang; +#X obj 118 113 outlet; +#X msg 118 81 reset \, dimen 800 600; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X restore 760 47 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 730 64 pd gemwin; +#X msg 786 463 rectangle 1; +#X msg 454 331 texunit 2 \, quality 1 \, rectangle 1; +#X msg 137 222 type FLOAT \, dimen 512 512 \, rectangle 1; +#X msg 220 202 quality 1 \, rectangle 1; +#X msg 867 255 K \$1 \, texture1 2 \, texture2 3; +#X text 880 276 texture1==base; +#X text 882 294 texture2==deformation; +#X connect 0 0 5 0; +#X connect 1 0 18 0; +#X connect 3 0 2 0; +#X connect 4 0 0 0; +#X connect 4 1 7 1; +#X connect 4 1 13 0; +#X connect 5 0 28 0; +#X connect 5 1 3 0; +#X connect 6 0 7 0; +#X connect 7 0 26 0; +#X connect 7 1 11 0; +#X connect 7 1 46 1; +#X connect 9 0 8 0; +#X connect 11 0 10 0; +#X connect 13 0 12 0; +#X connect 15 0 14 0; +#X connect 16 0 45 0; +#X connect 17 0 23 0; +#X connect 17 1 5 1; +#X connect 17 1 15 0; +#X connect 18 0 4 0; +#X connect 19 0 4 0; +#X connect 19 0 17 0; +#X connect 20 0 72 0; +#X connect 21 0 20 0; +#X connect 22 0 20 0; +#X connect 23 0 25 0; +#X connect 23 1 31 0; +#X connect 24 0 48 0; +#X connect 25 0 6 0; +#X connect 26 0 27 0; +#X connect 29 0 18 1; +#X connect 30 0 18 2; +#X connect 31 0 66 0; +#X connect 33 0 34 0; +#X connect 34 0 43 0; +#X connect 35 0 50 1; +#X connect 36 0 50 0; +#X connect 37 0 50 2; +#X connect 39 0 74 0; +#X connect 40 0 59 0; +#X connect 41 0 71 0; +#X connect 42 0 70 0; +#X connect 43 0 67 0; +#X connect 43 1 40 0; +#X connect 44 0 43 0; +#X connect 45 0 46 0; +#X connect 46 1 9 0; +#X connect 47 0 5 0; +#X connect 47 0 46 0; +#X connect 47 0 7 0; +#X connect 49 0 47 0; +#X connect 51 0 57 0; +#X connect 52 0 73 0; +#X connect 53 0 52 0; +#X connect 54 0 46 0; +#X connect 55 0 17 0; +#X connect 56 0 58 0; +#X connect 57 0 1 0; +#X connect 58 0 38 0; +#X connect 59 0 39 0; +#X connect 66 0 24 0; +#X connect 66 1 24 0; +#X connect 66 2 24 0; +#X connect 66 3 24 0; +#X connect 66 4 24 0; +#X connect 67 0 36 0; +#X connect 68 0 69 0; +#X connect 70 0 36 0; +#X connect 71 0 38 0; +#X connect 72 0 19 0; +#X connect 73 0 47 0; +#X connect 74 0 43 1; diff --git a/Gem/examples/10.glsl/08.multi_pass_rendering.pd b/Gem/examples/10.glsl/08.multi_pass_rendering.pd new file mode 100644 index 0000000..5ada6be --- /dev/null +++ b/Gem/examples/10.glsl/08.multi_pass_rendering.pd @@ -0,0 +1,341 @@ +#N canvas 208 184 980 477 10; +#X obj 42 315 square 4; +#X obj 42 199 translateXYZ 0 0 -4; +#X obj 671 399 pix_texture; +#X obj 671 419 square 4; +#N canvas 370 126 407 295 init 0; +#X obj 106 175 outlet; +#X msg 125 89 type FLOAT; +#X obj 124 68 loadbang; +#X msg 146 109 dimen 1024 1024; +#X msg 211 147 rectangle 0; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 2 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X restore 56 157 pd init; +#X obj 650 230 pix_texture; +#X obj 650 252 square 4; +#X floatatom 724 255 5 0 0 0 - - -; +#N canvas 157 111 392 206 init 0; +#X obj 93 68 t b; +#X obj 93 47 loadbang; +#X obj 93 159 outlet; +#X msg 93 118 type FLOAT \, dimen 1024 1024 \, rectangle 0; +#X connect 0 0 3 0; +#X connect 1 0 0 0; +#X connect 3 0 2 0; +#X restore 669 120 pd init; +#X obj 353 199 translateXYZ 0 0 -4; +#N canvas 700 0 407 295 init 0; +#X obj 106 175 outlet; +#X obj 106 68 loadbang; +#X msg 106 118 type FLOAT \, dimen 1024 1024 \, rectangle 0; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X restore 373 156 pd init; +#X text 6 4 first input \, render whatever in a frambuffer; +#X obj 691 357 loadbang; +#X obj 42 222 pix_image img1.jpg; +#X obj 42 54 gemhead 11; +#X obj 666 187 loadbang; +#X obj 650 166 translateXYZ 0 0 -4; +#X obj 650 142 gemframebuffer; +#X obj 353 177 gemframebuffer; +#N canvas 330 106 589 635 shader1 0; +#X obj 94 500 glsl_program; +#X obj 94 340 glsl_fragment; +#X obj 94 160 glsl_vertex; +#X obj 172 400 pack 0 0; +#X obj 162 200 change; +#X obj 182 375 change; +#X msg 172 420 link \$1 \$2; +#X obj 162 220 t b f; +#X obj 176 444 print linking; +#X obj 94 66 inlet; +#X obj 94 530 outlet; +#X obj 464 245 inlet; +#X floatatom 182 179 0 0 0 0 - - -; +#X floatatom 234 377 0 0 0 0 - - -; +#X msg 56 472 print; +#X msg 246 65 1; +#X obj 246 106 t b; +#X obj 246 46 gemhead 1; +#X obj 175 548 t b; +#X obj 175 571 outlet; +#X msg 246 135 open T_distord.vert; +#X msg 289 160 open T_distord.frag; +#X obj 246 86 change -1; +#X obj 175 524 change; +#X connect 0 0 10 0; +#X connect 0 1 23 0; +#X connect 1 0 0 0; +#X connect 1 1 5 0; +#X connect 1 1 13 0; +#X connect 2 0 1 0; +#X connect 2 1 4 0; +#X connect 2 1 12 0; +#X connect 3 0 6 0; +#X connect 4 0 7 0; +#X connect 5 0 3 0; +#X connect 6 0 0 0; +#X connect 6 0 8 0; +#X connect 7 0 3 0; +#X connect 7 1 3 1; +#X connect 9 0 2 0; +#X connect 11 0 0 0; +#X connect 14 0 0 0; +#X connect 15 0 22 0; +#X connect 16 0 20 0; +#X connect 16 0 21 0; +#X connect 17 0 15 0; +#X connect 18 0 19 0; +#X connect 20 0 2 0; +#X connect 21 0 1 0; +#X connect 22 0 16 0; +#X connect 23 0 18 0; +#X restore 42 81 pd shader1; +#N canvas 476 68 589 635 shader2 0; +#X obj 94 500 glsl_program; +#X obj 94 340 glsl_fragment; +#X obj 94 160 glsl_vertex; +#X obj 172 400 pack 0 0; +#X obj 162 200 change; +#X obj 182 375 change; +#X msg 172 420 link \$1 \$2; +#X obj 162 220 t b f; +#X obj 176 444 print linking; +#X obj 94 66 inlet; +#X obj 94 530 outlet; +#X obj 464 245 inlet; +#X floatatom 182 179 0 0 0 0 - - -; +#X floatatom 234 377 0 0 0 0 - - -; +#X msg 56 472 print; +#X msg 246 65 1; +#X obj 246 106 t b; +#X obj 246 46 gemhead 1; +#X obj 175 548 t b; +#X obj 175 571 outlet; +#X msg 246 135 open P_distord.vert; +#X msg 289 160 open P_distord.frag; +#X obj 246 86 change -1; +#X obj 175 524 change; +#X connect 0 0 10 0; +#X connect 0 1 23 0; +#X connect 1 0 0 0; +#X connect 1 1 5 0; +#X connect 1 1 13 0; +#X connect 2 0 1 0; +#X connect 2 1 4 0; +#X connect 2 1 12 0; +#X connect 3 0 6 0; +#X connect 4 0 7 0; +#X connect 5 0 3 0; +#X connect 6 0 0 0; +#X connect 6 0 8 0; +#X connect 7 0 3 0; +#X connect 7 1 3 1; +#X connect 9 0 2 0; +#X connect 11 0 0 0; +#X connect 14 0 0 0; +#X connect 15 0 22 0; +#X connect 16 0 20 0; +#X connect 16 0 21 0; +#X connect 17 0 15 0; +#X connect 18 0 19 0; +#X connect 20 0 2 0; +#X connect 21 0 1 0; +#X connect 22 0 16 0; +#X connect 23 0 18 0; +#X restore 353 78 pd shader2; +#N canvas 660 91 589 635 shader3 0; +#X obj 94 500 glsl_program; +#X obj 94 340 glsl_fragment; +#X obj 94 160 glsl_vertex; +#X obj 172 400 pack 0 0; +#X obj 162 200 change; +#X obj 182 375 change; +#X msg 172 420 link \$1 \$2; +#X obj 162 220 t b f; +#X obj 176 444 print linking; +#X obj 94 66 inlet; +#X obj 94 530 outlet; +#X obj 464 245 inlet; +#X floatatom 182 179 0 0 0 0 - - -; +#X floatatom 234 377 0 0 0 0 - - -; +#X msg 56 472 print; +#X msg 246 65 1; +#X obj 246 106 t b; +#X obj 246 46 gemhead 1; +#X obj 175 548 t b; +#X obj 175 571 outlet; +#X msg 326 429 MyTex 1; +#X msg 336 451 MyTex1 2; +#X msg 247 135 open multitexture.vert; +#X msg 291 160 open multitexture.frag; +#X obj 246 86 change -1; +#X obj 175 524 change; +#X connect 0 0 10 0; +#X connect 0 1 25 0; +#X connect 1 0 0 0; +#X connect 1 1 5 0; +#X connect 1 1 13 0; +#X connect 2 0 1 0; +#X connect 2 1 4 0; +#X connect 2 1 12 0; +#X connect 3 0 6 0; +#X connect 4 0 7 0; +#X connect 5 0 3 0; +#X connect 6 0 0 0; +#X connect 6 0 8 0; +#X connect 7 0 3 0; +#X connect 7 1 3 1; +#X connect 9 0 2 0; +#X connect 11 0 0 0; +#X connect 14 0 0 0; +#X connect 15 0 24 0; +#X connect 16 0 22 0; +#X connect 16 0 23 0; +#X connect 17 0 15 0; +#X connect 18 0 19 0; +#X connect 18 0 20 0; +#X connect 18 0 21 0; +#X connect 20 0 0 0; +#X connect 21 0 0 0; +#X connect 22 0 2 0; +#X connect 23 0 1 0; +#X connect 24 0 16 0; +#X connect 25 0 18 0; +#X restore 650 79 pd shader3; +#X obj 650 54 gemhead 31; +#X obj 671 314 gemhead 32; +#X obj 56 248 loadbang; +#X obj 367 245 loadbang; +#X msg 56 270 rectangle 0; +#X msg 367 267 rectangle 0; +#X obj 42 295 pix_texture; +#X msg 55 135 texunit 1; +#X obj 55 113 loadbang; +#X obj 366 115 loadbang; +#X msg 366 136 texunit 2; +#X msg 141 48 1; +#X floatatom 141 69 5 0 0 0 - - -; +#X msg 141 88 K1 \$1; +#X text 183 69 change effect; +#X text 347 1 second input : same as 1st.; +#X text 7 22 put framebuffer as texunit 1 \, for futur use; +#X text 348 17 render an image in framebuffer.; +#X text 350 31 put framebuffer in texunit 2; +#X text 632 8 finally :; +#X text 631 23 shader mixing 2 textures in a framebuffer; +#X floatatom 449 79 5 0 0 0 - - -; +#X text 491 79 change effect; +#X msg 449 98 K \$1; +#X msg 449 58 0.1; +#X text 161 433 <-------------------; +#X text 569 442 draw the final frambuffer (without shader); +#X obj 671 335 rotateXYZ -20 0 0; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 58 46 loadbang; +#X obj 58 113 outlet; +#X msg 58 80 reset \, dimen 320 240; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X restore 99 394 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 69 411 pd gemwin; +#X obj 42 177 gemframebuffer; +#X obj 353 332 mesh_square 10 10; +#X obj 353 311 scaleXYZ 4 4 1; +#X obj 353 57 gemhead 21; +#X obj 353 222 pix_image img2.jpg; +#X obj 353 291 pix_texture; +#X msg 666 209 rectangle 0; +#X msg 691 378 rectangle 0; +#X connect 1 0 13 0; +#X connect 2 0 3 0; +#X connect 4 0 52 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 8 0 17 0; +#X connect 9 0 56 0; +#X connect 10 0 18 0; +#X connect 12 0 59 0; +#X connect 13 0 28 0; +#X connect 14 0 19 0; +#X connect 15 0 58 0; +#X connect 16 0 5 0; +#X connect 17 0 16 0; +#X connect 17 1 2 1; +#X connect 18 0 9 0; +#X connect 19 0 52 0; +#X connect 19 1 33 0; +#X connect 20 0 18 0; +#X connect 20 1 46 0; +#X connect 21 0 17 0; +#X connect 22 0 21 0; +#X connect 23 0 49 0; +#X connect 24 0 26 0; +#X connect 25 0 27 0; +#X connect 26 0 28 0; +#X connect 27 0 57 0; +#X connect 28 0 0 0; +#X connect 29 0 52 0; +#X connect 30 0 29 0; +#X connect 31 0 32 0; +#X connect 32 0 18 0; +#X connect 33 0 34 0; +#X connect 34 0 35 0; +#X connect 35 0 19 1; +#X connect 43 0 45 0; +#X connect 45 0 20 1; +#X connect 46 0 43 0; +#X connect 49 0 2 0; +#X connect 50 0 51 0; +#X connect 52 0 1 0; +#X connect 54 0 53 0; +#X connect 55 0 20 0; +#X connect 56 0 57 0; +#X connect 57 0 54 0; +#X connect 58 0 5 0; +#X connect 59 0 2 0; diff --git a/Gem/examples/10.glsl/09.vertex_texture_fetching.pd b/Gem/examples/10.glsl/09.vertex_texture_fetching.pd new file mode 100644 index 0000000..e1439c4 --- /dev/null +++ b/Gem/examples/10.glsl/09.vertex_texture_fetching.pd @@ -0,0 +1,142 @@ +#N canvas 239 0 785 526 10; +#X obj 504 69 gemhead; +#X obj 576 346 pack 0 0; +#X obj 597 326 t b f; +#X msg 576 369 link \$1 \$2; +#X floatatom 597 307 2 0 0 0 ID - -; +#X floatatom 576 206 2 0 0 0 ID - -; +#X obj 594 390 print linking; +#X obj 504 480 pix_texture; +#X obj 540 118 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 28 199 gemhead 1; +#X obj 28 311 gemframebuffer; +#X obj 28 485 pix_texture; +#X obj 28 336 translateXYZ 0 0 -4; +#X obj 28 510 square 4; +#X obj 504 261 glsl_fragment; +#X obj 504 164 glsl_vertex; +#X obj 576 183 change; +#X obj 597 281 change; +#X obj 504 409 glsl_program; +#X floatatom 542 505 5 0 0 0 - - -; +#X obj 49 231 loadbang; +#X obj 44 419 loadbang; +#X msg 520 456 quality 0; +#N canvas 703 231 450 300 load_glsl 0; +#X obj 51 22 gemhead; +#X obj 51 98 outlet; +#X obj 51 50 route gem_state; +#X obj 51 74 route 1; +#X connect 0 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X restore 540 93 pd load_glsl; +#X msg 514 231 open fetching.frag; +#X msg 518 142 open fetching.vert; +#X obj 504 525 rotateXYZ -30 0 0; +#X obj 504 551 scaleXYZ 3 3 1; +#X obj 28 388 pix_image img1.jpg; +#X msg 46 363 open img2.jpg; +#X text 137 11 This patch need a glsl 3 compliant hardware; +#X text 26 535 draw an image in a frambuffer; +#X text 49 274 this configuration is very important to have full hardware +support for vertex texture fetching; +#X text 306 603 this example uses the framebuffer image in the vertex +shader in the same way you can do in the pixel shader. This is only +possible in this specific configuration (it's a hardware limitation) +; +#X text 137 56 (nvidia 7000 and 8000 serie should work \, ati X1000 +serie does not \, but later should); +#X obj 504 579 mesh_square 200; +#X text 138 28 As in 2007 \, only good (and new) graphic cards are +able to run this patch.; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 56 77 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 26 94 pd gemwin; +#X msg 49 255 rectangle 0 \, type BYTE \, format RGB32 \, dimen 1024 +1024; +#X msg 44 439 rectangle 0 \, quality 0; +#X obj 520 437 loadbang; +#X connect 0 0 15 0; +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 2 1 1 1; +#X connect 3 0 6 0; +#X connect 3 0 18 0; +#X connect 4 0 2 0; +#X connect 5 0 1 0; +#X connect 7 0 26 0; +#X connect 8 0 25 0; +#X connect 8 0 24 0; +#X connect 9 0 10 0; +#X connect 10 0 12 0; +#X connect 10 1 7 1; +#X connect 11 0 13 0; +#X connect 12 0 28 0; +#X connect 14 0 18 0; +#X connect 14 1 17 0; +#X connect 15 0 14 0; +#X connect 15 1 16 0; +#X connect 16 0 5 0; +#X connect 17 0 4 0; +#X connect 18 0 7 0; +#X connect 19 0 26 1; +#X connect 20 0 39 0; +#X connect 21 0 40 0; +#X connect 22 0 7 0; +#X connect 23 0 8 0; +#X connect 24 0 14 0; +#X connect 25 0 15 0; +#X connect 26 0 27 0; +#X connect 27 0 35 0; +#X connect 28 0 11 0; +#X connect 29 0 28 0; +#X connect 37 0 38 0; +#X connect 39 0 10 0; +#X connect 40 0 11 0; +#X connect 41 0 22 0; diff --git a/Gem/examples/10.glsl/10.GPGPU_Physical_model.pd b/Gem/examples/10.glsl/10.GPGPU_Physical_model.pd new file mode 100644 index 0000000..6d44970 --- /dev/null +++ b/Gem/examples/10.glsl/10.GPGPU_Physical_model.pd @@ -0,0 +1,1246 @@ +#N struct 1002-xy-pad-knob-1 float x0 float y0 float id; +#N canvas 875 218 764 482 10; +#X obj 27 380 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144 -1 +-1 0; +#X floatatom 185 212 5 0 0 0 - - -; +#N canvas 4 106 187 219 fps 0; +#X obj 22 62 realtime; +#X obj 22 41 t b b; +#X obj 22 19 gemhead; +#X obj 22 170 outlet; +#X msg 22 84 1000 \$1; +#X obj 22 105 /; +#X obj 22 126 + 0.5; +#X obj 22 147 i; +#X connect 0 0 4 0; +#X connect 1 0 0 0; +#X connect 1 1 0 1; +#X connect 2 0 1 0; +#X connect 4 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 7 0 3 0; +#X restore 185 192 pd fps; +#N canvas 93 66 1183 666 shaders_PM 0; +#X obj 718 34 gemhead; +#X obj 718 57 route gem_state; +#X obj 718 79 route 1 0; +#X obj 24 477 translateXYZ 0 0 -4; +#X obj 24 609 square 4; +#X msg 50 399 texunit 1; +#X obj 50 378 loadbang; +#N canvas 573 206 607 627 shader 0; +#X obj 126 247 change; +#X obj 126 323 print linking; +#X obj 32 227 glsl_fragment; +#N canvas 0 0 450 300 load_shader 0; +#X obj 89 99 t b b; +#X msg 119 126 0; +#X obj 89 154 outlet; +#X obj 89 71 gemhead 1; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 3 0; +#X connect 3 0 0 0; +#X restore 148 49 pd load_shader; +#X obj 32 36 inlet; +#X obj 32 423 outlet; +#X obj 155 18 inlet; +#N canvas 0 0 450 300 init_shader 0; +#X obj 89 154 outlet; +#X obj 89 45 inlet; +#X obj 89 73 change; +#X obj 89 100 t b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 113 378 pd init_shader; +#X obj 278 25 inlet; +#X obj 113 408 outlet; +#X msg 42 203 open mass.frag; +#X obj 32 354 glsl_program; +#X obj 32 137 glsl_vertex; +#X msg 42 113 open mass.vert; +#X obj 94 74 t b b; +#X obj 126 272 pack f f; +#X msg 126 296 link \$1 \$2; +#X connect 0 0 15 0; +#X connect 2 0 11 0; +#X connect 2 1 0 0; +#X connect 3 0 14 0; +#X connect 4 0 12 0; +#X connect 6 0 14 0; +#X connect 7 0 9 0; +#X connect 8 0 11 0; +#X connect 10 0 2 0; +#X connect 11 0 5 0; +#X connect 11 1 7 0; +#X connect 12 0 2 0; +#X connect 12 1 15 1; +#X connect 13 0 12 0; +#X connect 14 0 10 0; +#X connect 14 1 13 0; +#X connect 15 0 16 0; +#X connect 16 0 1 0; +#X connect 16 0 11 0; +#X restore 24 257 pd shader; +#X obj 53 234 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 506 468 translateXYZ 0 0 -4; +#X obj 506 610 square 4; +#X obj 261 477 translateXYZ 0 0 -4; +#X obj 290 368 loadbang; +#N canvas 1062 27 528 709 shader 0; +#X obj 32 384 glsl_program; +#X obj 32 36 inlet; +#X obj 32 453 outlet; +#X obj 155 18 inlet; +#N canvas 0 0 450 300 init_shader 0; +#X obj 89 154 outlet; +#X obj 89 45 inlet; +#X obj 89 73 change; +#X obj 89 100 t b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 113 408 pd init_shader; +#X obj 278 25 inlet; +#X obj 113 438 outlet; +#X obj 126 247 change; +#X obj 126 323 print linking; +#X obj 32 227 glsl_fragment; +#N canvas 0 0 450 300 load_shader 0; +#X obj 89 99 t b b; +#X msg 119 126 0; +#X obj 89 154 outlet; +#X obj 89 71 gemhead 1; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 3 0; +#X connect 3 0 0 0; +#X restore 148 49 pd load_shader; +#X obj 32 137 glsl_vertex; +#X obj 94 74 t b b; +#X obj 126 272 pack f f; +#X msg 126 296 link \$1 \$2; +#X msg 42 113 open link.vert; +#X msg 42 203 open link.frag; +#X connect 0 0 2 0; +#X connect 0 1 4 0; +#X connect 1 0 11 0; +#X connect 3 0 12 0; +#X connect 4 0 6 0; +#X connect 5 0 0 0; +#X connect 7 0 13 0; +#X connect 9 0 0 0; +#X connect 9 1 7 0; +#X connect 10 0 12 0; +#X connect 11 0 9 0; +#X connect 11 1 13 1; +#X connect 12 0 16 0; +#X connect 12 1 15 0; +#X connect 13 0 14 0; +#X connect 14 0 8 0; +#X connect 14 0 0 0; +#X connect 15 0 11 0; +#X connect 16 0 9 0; +#X restore 261 256 pd shader; +#X obj 292 231 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 280 539 loadbang; +#X obj 119 448 s texture_mass; +#X obj 359 444 s texture_link; +#X obj 530 373 loadbang; +#X msg 530 394 texunit 2; +#X msg 286 390 texunit 3; +#X obj 601 440 s texture_mass2; +#X obj 321 229 r shader_link; +#X obj 321 277 s init_shader_link; +#X obj 261 612 square 4; +#X obj 613 34 inlet; +#X obj 24 201 gemhead 2; +#X obj 261 185 gemhead 11; +#X obj 506 236 gemhead 21; +#X msg 41 561 rectangle 1 \, quality 0; +#X msg 280 560 rectangle 1 \, quality 0; +#X obj 615 58 t b b; +#X obj 658 36 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 621 113 s init_shader_link; +#X obj 84 233 r shader_mass; +#X obj 84 281 s init_shader_mass; +#X obj 601 140 s init_shader_mass; +#X obj 261 589 pix_texture; +#X obj 261 418 gemframebuffer; +#X obj 24 588 pix_texture; +#X obj 24 425 gemframebuffer; +#X obj 65 310 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 506 418 gemframebuffer; +#X obj 524 513 loadbang; +#X msg 524 532 rectangle 1 \, quality 0; +#X obj 506 588 pix_texture; +#X obj 580 565 r texture_mass; +#X obj 103 260 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 341 251 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 616 79 delay 500; +#N canvas 0 0 446 324 init_fb 0; +#X msg 100 173 type BYTE; +#X msg 78 151 format RGB32; +#X obj 46 121 t b b; +#X obj 78 261 t a; +#X obj 78 285 outlet; +#X msg 137 215 rectangle 1; +#X msg 46 196 dimen 128 128; +#X obj 46 11 inlet; +#X msg 137 42 0; +#X obj 46 49 spigot 1; +#X obj 46 72 t a b; +#X connect 0 0 3 0; +#X connect 1 0 3 0; +#X connect 2 0 6 0; +#X connect 2 1 1 0; +#X connect 2 1 0 0; +#X connect 2 1 5 0; +#X connect 3 0 4 0; +#X connect 5 0 3 0; +#X connect 6 0 3 0; +#X connect 7 0 9 0; +#X connect 8 0 9 1; +#X connect 9 0 10 0; +#X connect 10 0 2 0; +#X connect 10 1 8 0; +#X restore 56 337 pd init_fb; +#X obj 24 306 t a b; +#X obj 302 300 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#N canvas 0 0 450 300 init_fb 0; +#X msg 100 153 type BYTE; +#X msg 78 131 format RGB32; +#X obj 46 101 t b b; +#X obj 78 241 t a; +#X obj 78 265 outlet; +#X msg 137 195 rectangle 1; +#X msg 46 176 dimen 128 128; +#X obj 46 11 inlet; +#X msg 137 42 0; +#X obj 46 49 spigot 1; +#X obj 46 72 t a b; +#X connect 0 0 3 0; +#X connect 1 0 3 0; +#X connect 2 0 6 0; +#X connect 2 1 1 0; +#X connect 2 1 0 0; +#X connect 2 1 5 0; +#X connect 3 0 4 0; +#X connect 5 0 3 0; +#X connect 6 0 3 0; +#X connect 7 0 9 0; +#X connect 8 0 9 1; +#X connect 9 0 10 0; +#X connect 10 0 2 0; +#X connect 10 1 8 0; +#X restore 293 327 pd init_fb; +#X obj 261 296 t a b; +#X obj 547 298 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#N canvas 0 0 450 300 init_fb 0; +#X msg 100 153 type BYTE; +#X msg 78 131 format RGB32; +#X obj 46 101 t b b; +#X obj 78 241 t a; +#X obj 78 265 outlet; +#X msg 137 195 rectangle 1; +#X msg 46 176 dimen 128 128; +#X obj 46 11 inlet; +#X msg 137 42 0; +#X obj 46 49 spigot 1; +#X obj 46 72 t a b; +#X connect 0 0 3 0; +#X connect 1 0 3 0; +#X connect 2 0 6 0; +#X connect 2 1 1 0; +#X connect 2 1 0 0; +#X connect 2 1 5 0; +#X connect 3 0 4 0; +#X connect 5 0 3 0; +#X connect 6 0 3 0; +#X connect 7 0 9 0; +#X connect 8 0 9 1; +#X connect 9 0 10 0; +#X connect 10 0 2 0; +#X connect 10 1 8 0; +#X restore 538 325 pd init_fb; +#X obj 506 294 t a b; +#X obj 32 29 gemhead 2; +#X msg 271 106 0; +#X obj 271 82 loadbang; +#X msg 33 59 20; +#X obj 32 90 until; +#X obj 44 540 loadbang; +#X msg 804 378 init \$1; +#X floatatom 804 360 5 0 1 0 - - -; +#X obj 762 371 t b; +#X obj 762 254 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 762 407 texture_link 3; +#X msg 804 338 1; +#X msg 950 229 gravite \$1; +#X floatatom 948 189 5 0 0 0 - - -; +#X floatatom 1012 190 5 0 0 0 - - -; +#X msg 1012 206 D \$1; +#X msg 1063 208 K1 \$1; +#X floatatom 1062 189 5 0 0 0 - - -; +#X obj 948 207 / 100; +#X obj 950 251 t a; +#X obj 950 526 s shader_link; +#X obj 952 90 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 952 70 r init_shader_link; +#X obj 950 146 t b; +#X obj 952 127 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 1059 168 0.05; +#X msg 950 169 -0.0025; +#X msg 1009 170 0.004; +#X obj 842 314 delay 1000; +#X msg 842 337 0; +#X obj 762 454 s shader_mass; +#X obj 762 225 r init_shader_mass; +#X obj 804 286 t b; +#X msg 992 362 init \$1; +#X floatatom 992 344 5 0 1 0 - - -; +#X msg 992 322 1; +#X obj 1030 298 delay 1000; +#X msg 1030 321 0; +#X obj 991 270 t b; +#X msg 1049 470 texture_mass 1; +#X msg 1040 496 texture_mass_old 2; +#X obj 1040 419 t b; +#X msg 771 426 texture_mass_old 2; +#X msg 1071 391 N \$1; +#X msg 1071 367 0.01; +#X msg 1121 368 0; +#X obj 1078 340 delay 100; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 31 0; +#X connect 3 0 39 0; +#X connect 5 0 40 0; +#X connect 6 0 5 0; +#X connect 7 0 51 0; +#X connect 7 1 35 0; +#X connect 8 0 7 1; +#X connect 9 0 45 0; +#X connect 11 0 37 0; +#X connect 12 0 20 0; +#X connect 13 0 54 0; +#X connect 13 1 23 0; +#X connect 14 0 13 1; +#X connect 15 0 30 0; +#X connect 18 0 19 0; +#X connect 19 0 42 0; +#X connect 20 0 38 0; +#X connect 22 0 13 2; +#X connect 25 0 31 0; +#X connect 26 0 7 0; +#X connect 27 0 13 0; +#X connect 28 0 57 0; +#X connect 29 0 39 0; +#X connect 30 0 37 0; +#X connect 31 0 49 0; +#X connect 31 1 8 0; +#X connect 31 1 14 0; +#X connect 32 0 31 0; +#X connect 34 0 7 2; +#X connect 37 0 24 0; +#X connect 38 0 11 0; +#X connect 38 1 17 0; +#X connect 38 1 37 1; +#X connect 39 0 4 0; +#X connect 40 0 3 0; +#X connect 40 1 16 0; +#X connect 40 1 39 1; +#X connect 41 0 50 0; +#X connect 42 0 9 0; +#X connect 42 1 21 0; +#X connect 43 0 44 0; +#X connect 44 0 45 0; +#X connect 45 0 10 0; +#X connect 46 0 45 1; +#X connect 47 0 35 0; +#X connect 48 0 23 0; +#X connect 49 0 33 0; +#X connect 49 0 36 0; +#X connect 50 0 40 0; +#X connect 51 0 40 0; +#X connect 51 1 50 0; +#X connect 52 0 53 0; +#X connect 53 0 38 0; +#X connect 54 0 38 0; +#X connect 54 1 53 0; +#X connect 55 0 56 0; +#X connect 56 0 42 0; +#X connect 57 0 42 0; +#X connect 57 1 56 0; +#X connect 58 0 61 0; +#X connect 59 0 26 0; +#X connect 59 0 27 0; +#X connect 59 0 28 0; +#X connect 60 0 59 0; +#X connect 61 0 62 0; +#X connect 62 0 26 0; +#X connect 62 0 27 0; +#X connect 62 0 28 0; +#X connect 63 0 29 0; +#X connect 64 0 88 0; +#X connect 65 0 64 0; +#X connect 66 0 68 0; +#X connect 66 0 100 0; +#X connect 67 0 66 0; +#X connect 67 0 90 0; +#X connect 68 0 88 0; +#X connect 69 0 65 0; +#X connect 70 0 77 0; +#X connect 71 0 76 0; +#X connect 72 0 73 0; +#X connect 73 0 77 0; +#X connect 74 0 77 0; +#X connect 75 0 74 0; +#X connect 76 0 70 0; +#X connect 77 0 78 0; +#X connect 79 0 82 0; +#X connect 79 0 96 0; +#X connect 80 0 79 0; +#X connect 81 0 84 0; +#X connect 81 0 85 0; +#X connect 81 0 83 0; +#X connect 82 0 81 0; +#X connect 83 0 75 0; +#X connect 84 0 71 0; +#X connect 85 0 72 0; +#X connect 86 0 87 0; +#X connect 87 0 65 0; +#X connect 89 0 67 0; +#X connect 90 0 69 0; +#X connect 90 0 86 0; +#X connect 91 0 78 0; +#X connect 92 0 91 0; +#X connect 93 0 92 0; +#X connect 94 0 95 0; +#X connect 94 0 102 0; +#X connect 94 0 104 0; +#X connect 95 0 92 0; +#X connect 96 0 93 0; +#X connect 96 0 94 0; +#X connect 96 0 99 0; +#X connect 97 0 78 0; +#X connect 98 0 78 0; +#X connect 99 0 97 0; +#X connect 99 0 98 0; +#X connect 100 0 88 0; +#X connect 101 0 78 0; +#X connect 102 0 101 0; +#X connect 103 0 101 0; +#X connect 104 0 103 0; +#X restore 27 323 pd shaders_PM _________________; +#N canvas 267 495 450 300 config 0; +#X msg 16 75 W \$1; +#X floatatom 225 101 5 0 0 0 - - -; +#X msg 225 120 f \$1; +#X obj 133 155 t a; +#X msg 133 83 N \$1; +#X text 141 101 bruit; +#X obj 16 53 / 11000; +#X obj 225 78 + 5; +#X obj 225 55 * 5; +#X obj 133 61 / 5000; +#X msg 338 120 t \$1; +#X obj 338 31 gemhead 77; +#X obj 338 56 t b; +#X obj 338 79 f; +#X obj 338 99 + 0.3; +#X obj 338 141 s shader_link; +#X obj 133 181 s shader_link; +#X obj 16 29 r oscillation1; +#X obj 133 31 r qqt_noise; +#X obj 225 31 r force_wind; +#X connect 0 0 3 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 16 0; +#X connect 4 0 3 0; +#X connect 6 0 0 0; +#X connect 7 0 1 0; +#X connect 8 0 7 0; +#X connect 9 0 4 0; +#X connect 10 0 15 0; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 13 0 14 0; +#X connect 14 0 13 1; +#X connect 14 0 10 0; +#X connect 17 0 6 0; +#X connect 18 0 9 0; +#X connect 19 0 8 0; +#X restore 27 361 pd config _____________________; +#N canvas 0 0 450 300 render 0; +#X obj 43 137 pix_texture; +#X obj 43 181 square 4; +#X obj 43 115 gemhead 66; +#X obj 241 120 != 0; +#X obj 210 119 == 0; +#X obj 133 58 r texture_link; +#X obj 146 77 r texture_interpol; +#X obj 210 146 s aff_drapeau; +#X obj 120 39 r texture_mass; +#X msg 43 94 0; +#X obj 43 73 loadbang; +#N canvas 0 0 656 297 spigot4 0; +#X obj 40 21 inlet; +#X obj 458 22 inlet; +#X obj 40 179 outlet; +#X obj 113 24 inlet; +#X obj 112 91 spigot 0; +#X obj 196 24 inlet; +#X obj 195 91 spigot 0; +#X obj 86 68 == 1; +#X obj 159 71 == 2; +#X obj 240 71 == 3; +#X obj 40 88 spigot 0; +#X obj 283 29 inlet; +#X obj 282 96 spigot 0; +#X obj 327 76 == 4; +#X obj 361 32 inlet; +#X obj 360 99 spigot 0; +#X obj 405 79 == 5; +#X connect 0 0 10 0; +#X connect 1 0 7 0; +#X connect 1 0 8 0; +#X connect 1 0 9 0; +#X connect 1 0 13 0; +#X connect 1 0 16 0; +#X connect 3 0 4 0; +#X connect 4 0 2 0; +#X connect 5 0 6 0; +#X connect 6 0 2 0; +#X connect 7 0 10 1; +#X connect 8 0 4 1; +#X connect 9 0 6 1; +#X connect 10 0 2 0; +#X connect 11 0 12 0; +#X connect 12 0 2 0; +#X connect 13 0 12 1; +#X connect 14 0 15 0; +#X connect 15 0 2 0; +#X connect 16 0 15 1; +#X restore 120 115 pd spigot4; +#X obj 160 96 r texture_normal; +#X obj 43 160 translateXYZ 0 0 -40; +#X obj 240 27 f; +#X obj 238 5 inlet; +#X connect 0 0 13 0; +#X connect 2 0 0 0; +#X connect 3 0 2 0; +#X connect 4 0 7 0; +#X connect 5 0 11 1; +#X connect 6 0 11 2; +#X connect 8 0 11 0; +#X connect 9 0 2 0; +#X connect 10 0 9 0; +#X connect 11 0 0 1; +#X connect 12 0 11 3; +#X connect 13 0 1 0; +#X connect 14 0 3 0; +#X connect 14 0 4 0; +#X connect 14 0 11 5; +#X connect 15 0 14 0; +#X restore 27 398 pd render _____________________; +#X text 288 6 Made by Cyrille Henry 2008 10 24; +#N canvas 452 305 812 549 shader_render 0; +#X obj 315 429 pix_texture; +#X obj 67 256 gemframebuffer; +#X obj 67 443 pix_texture; +#X obj 67 305 translateXYZ 0 0 -4; +#X obj 67 462 square 4; +#X obj 85 369 loadbang; +#N canvas 224 312 1052 398 init 0; +#X obj 14 130 outlet; +#X obj 14 30 inlet; +#X obj 14 53 spigot 1; +#X obj 31 81 t b; +#X msg 67 31 0; +#X msg 14 104 rectangle 1 \, type BYTE \, format RGB32 \, dim 256 256 +; +#X connect 1 0 2 0; +#X connect 2 0 5 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 2 1; +#X connect 5 0 0 0; +#X restore 99 223 pd init; +#N canvas 573 206 496 427 shader 0; +#X obj 32 264 glsl_program; +#X obj 126 187 change; +#X obj 126 233 print linking; +#X obj 32 167 glsl_fragment; +#X msg 126 208 link \$1; +#N canvas 0 0 450 300 load_shader 0; +#X obj 89 99 t b b; +#X msg 119 126 0; +#X obj 89 154 outlet; +#X obj 89 71 gemhead 30; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 3 0; +#X connect 3 0 0 0; +#X restore 120 89 pd load_shader; +#X obj 32 36 inlet; +#X obj 32 333 outlet; +#X obj 155 18 inlet; +#N canvas 0 0 450 300 init_shader 0; +#X obj 89 154 outlet; +#X obj 89 45 inlet; +#X obj 89 73 change; +#X obj 89 100 t b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 113 288 pd init_shader; +#X obj 278 25 inlet; +#X obj 113 318 outlet; +#X msg 43 143 open interpol.frag; +#X msg 135 265 set -1; +#X connect 0 0 7 0; +#X connect 0 1 9 0; +#X connect 1 0 4 0; +#X connect 3 0 0 0; +#X connect 3 1 1 0; +#X connect 4 0 0 0; +#X connect 4 0 2 0; +#X connect 5 0 12 0; +#X connect 6 0 3 0; +#X connect 8 0 12 0; +#X connect 8 0 13 0; +#X connect 9 0 11 0; +#X connect 10 0 0 0; +#X connect 12 0 3 0; +#X connect 13 0 9 0; +#X restore 67 175 pd shader; +#X obj 92 156 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 146 134 t b; +#X msg 146 155 texture_mass 1; +#N canvas 668 405 301 465 shader 0; +#X obj 110 298 pack 0 0; +#X obj 131 278 t b f; +#X msg 110 321 link \$1 \$2; +#X floatatom 131 259 2 0 0 0 ID - -; +#X floatatom 110 158 2 0 0 0 ID - -; +#X obj 128 342 print linking; +#X obj 74 70 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 38 213 glsl_fragment; +#X obj 38 116 glsl_vertex; +#X obj 110 135 change; +#X obj 131 233 change; +#X obj 38 371 glsl_program; +#N canvas 703 231 450 300 load_glsl 0; +#X obj 51 22 gemhead; +#X obj 51 98 outlet; +#X obj 51 50 route gem_state; +#X obj 51 74 route 1; +#X connect 0 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X restore 74 45 pd load_glsl; +#X obj 41 13 inlet; +#X obj 37 397 outlet; +#X obj 150 10 inlet; +#X obj 265 14 inlet; +#N canvas 0 0 450 300 init_shader 0; +#X obj 89 154 outlet; +#X obj 89 45 inlet; +#X obj 89 73 change; +#X obj 89 100 t b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 107 399 pd init_shader; +#X obj 107 429 outlet; +#X msg 52 94 open fetching2.vert; +#X msg 48 183 open fetching2.frag; +#X msg 132 373 set -1; +#X connect 0 0 2 0; +#X connect 1 0 0 0; +#X connect 1 1 0 1; +#X connect 2 0 5 0; +#X connect 2 0 11 0; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X connect 6 0 19 0; +#X connect 6 0 20 0; +#X connect 7 0 11 0; +#X connect 7 1 10 0; +#X connect 8 0 7 0; +#X connect 8 1 9 0; +#X connect 9 0 4 0; +#X connect 10 0 3 0; +#X connect 11 0 14 0; +#X connect 11 1 17 0; +#X connect 12 0 6 0; +#X connect 13 0 8 0; +#X connect 15 0 6 0; +#X connect 15 0 21 0; +#X connect 16 0 11 0; +#X connect 17 0 18 0; +#X connect 19 0 8 0; +#X connect 20 0 7 0; +#X connect 21 0 17 0; +#X restore 315 208 pd shader; +#X obj 345 185 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 387 229 t b; +#X obj 315 116 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 147 114 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 163 278 s texture_interpol; +#X obj 315 96 r aff_drapeau; +#X obj 67 102 gemhead 31; +#X obj 315 135 gemhead 51; +#X obj 410 25 inlet; +#X obj 410 156 delay 1000; +#X obj 315 461 mesh_square 92 64; +#X obj 315 156 alpha; +#X obj 315 316 scaleXYZ 15 15 15; +#X obj 315 286 translateXYZ 0 0.55 -8; +#X msg 327 399 quality 0; +#X msg 521 258 draw line; +#X msg 521 238 draw default; +#X msg 522 279 draw point; +#X floatatom 485 203 5 0 0 0 - - -; +#X obj 485 28 inlet; +#X obj 327 365 loadbang; +#X obj 67 198 t a b; +#X msg 410 185 texture 4; +#X msg 85 396 rectangle 1 \, quality 0; +#X obj 637 140 loadbang; +#X msg 637 162 15; +#X obj 637 184 s \$0-scale; +#X connect 0 0 22 0; +#X connect 1 0 3 0; +#X connect 1 1 0 1; +#X connect 1 1 2 1; +#X connect 1 1 16 0; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 5 0 35 0; +#X connect 6 0 1 0; +#X connect 7 0 33 0; +#X connect 7 1 15 0; +#X connect 8 0 7 1; +#X connect 9 0 10 0; +#X connect 10 0 7 2; +#X connect 11 0 25 0; +#X connect 11 1 13 0; +#X connect 12 0 11 1; +#X connect 13 0 34 0; +#X connect 14 0 19 0; +#X connect 15 0 9 0; +#X connect 17 0 14 0; +#X connect 18 0 7 0; +#X connect 19 0 23 0; +#X connect 20 0 21 0; +#X connect 20 0 12 0; +#X connect 20 0 8 0; +#X connect 21 0 34 0; +#X connect 23 0 11 0; +#X connect 24 0 0 0; +#X connect 25 0 24 0; +#X connect 26 0 0 0; +#X connect 27 0 22 0; +#X connect 28 0 22 0; +#X connect 29 0 22 0; +#X connect 30 0 24 1; +#X connect 30 0 24 2; +#X connect 30 0 24 3; +#X connect 31 0 30 0; +#X connect 32 0 26 0; +#X connect 33 0 1 0; +#X connect 33 1 6 0; +#X connect 34 0 11 2; +#X connect 35 0 2 0; +#X connect 36 0 37 0; +#X connect 37 0 38 0; +#X restore 27 304 pd shader_render ______________; +#X text 12 6 "Potential Flag" \, by Samuel Bianchini; +#X floatatom 606 304 5 0 0 0 - - -; +#X obj 606 324 * 10; +#N canvas 830 53 450 300 Gem.init 0; +#X obj 26 3 loadbang; +#X msg 26 26 perspec -1 1 -1 1 10 100; +#X obj 26 124 t a; +#X obj 25 153 outlet; +#X msg 55 77 dimen 800 600; +#X msg 37 51 FSAA 5; +#X connect 0 0 1 0; +#X connect 0 0 5 0; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 4 0 2 0; +#X connect 5 0 2 0; +#X restore 66 188 pd Gem.init; +#N canvas 341 104 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 1 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X obj 318 255 gemwin 30; +#X msg 441 219 color 0.2 0.3 0.5; +#X msg 443 257 dimen 1024 768; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 7 0; +#X connect 6 0 7 0; +#X connect 7 0 17 0; +#X connect 7 1 9 0; +#X connect 9 0 10 0; +#X connect 9 1 12 0; +#X connect 10 0 11 0; +#X connect 11 0 14 0; +#X connect 12 0 13 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 0 0; +#X connect 17 0 8 0; +#X connect 18 0 17 0; +#X connect 19 0 17 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 47 209 pd gemwin 30; +#X floatatom 210 282 5 0 0 0 scale-> #0-scale -; +#X obj 6 325 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#N canvas 290 239 395 502 shader_normal 0; +#X obj 51 233 gemframebuffer; +#X obj 51 347 pix_texture; +#X obj 51 276 translateXYZ 0 0 -4; +#X obj 51 366 square 4; +#X obj 67 304 loadbang; +#N canvas 0 0 1052 398 init 0; +#X obj 14 140 outlet; +#X obj 14 30 inlet; +#X obj 14 55 spigot 1; +#X obj 24 76 b; +#X msg 67 31 0; +#X msg 14 114 rectangle 1 \, type BYTE \, format RGB32 \, dim 128 128 +; +#X connect 1 0 2 0; +#X connect 2 0 5 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 2 1; +#X connect 5 0 0 0; +#X restore 83 160 pd init; +#N canvas 555 24 496 709 shader 0; +#X obj 32 474 glsl_program; +#X obj 126 357 change; +#X obj 126 443 print linking; +#X obj 32 337 glsl_fragment; +#N canvas 0 0 450 300 load_shader 0; +#X obj 89 99 t b b; +#X msg 119 126 0; +#X obj 89 154 outlet; +#X obj 89 71 gemhead 30; +#X connect 0 0 2 0; +#X connect 0 1 1 0; +#X connect 1 0 3 0; +#X connect 3 0 0 0; +#X restore 134 96 pd load_shader; +#X obj 32 36 inlet; +#X obj 32 543 outlet; +#X obj 175 28 inlet; +#N canvas 0 0 450 300 init_shader 0; +#X obj 89 154 outlet; +#X obj 89 45 inlet; +#X obj 89 73 change; +#X obj 89 100 t b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X restore 113 498 pd init_shader; +#X obj 278 25 inlet; +#X obj 113 528 outlet; +#X msg 43 313 open normal.frag; +#X obj 32 185 glsl_vertex; +#X obj 96 122 t b b; +#X obj 126 393 pack f f; +#X msg 126 418 link \$1 \$2; +#X msg 42 161 open normal.vert; +#X connect 0 0 6 0; +#X connect 0 1 8 0; +#X connect 1 0 14 0; +#X connect 3 0 0 0; +#X connect 3 1 1 0; +#X connect 4 0 13 0; +#X connect 5 0 12 0; +#X connect 7 0 13 0; +#X connect 8 0 10 0; +#X connect 9 0 0 0; +#X connect 11 0 3 0; +#X connect 12 0 3 0; +#X connect 12 1 14 1; +#X connect 13 0 11 0; +#X connect 13 1 16 0; +#X connect 14 0 15 0; +#X connect 15 0 0 0; +#X connect 15 0 2 0; +#X connect 16 0 12 0; +#X restore 51 112 pd shader; +#X obj 76 93 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 143 65 t b; +#X obj 146 45 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 157 252 s texture_normal; +#X obj 51 39 gemhead 32; +#X obj 78 189 loadbang; +#X msg 78 208 texunit 4; +#X msg 141 88 texture_mass 1; +#X obj 51 136 t a b; +#X msg 67 323 rectangle 1 \, quality 1; +#X connect 0 0 2 0; +#X connect 0 1 10 0; +#X connect 0 1 1 1; +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 4 0 16 0; +#X connect 5 0 0 0; +#X connect 6 0 15 0; +#X connect 6 1 9 0; +#X connect 7 0 6 1; +#X connect 8 0 14 0; +#X connect 9 0 8 0; +#X connect 11 0 6 0; +#X connect 12 0 13 0; +#X connect 13 0 0 0; +#X connect 14 0 6 2; +#X connect 15 0 0 0; +#X connect 15 1 5 0; +#X connect 16 0 1 0; +#X restore 27 342 pd shader_normal ______________; +#X obj 6 304 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#N canvas 1468 153 767 700 \$0-pad 0; +#X msg 158 309 clear; +#N canvas 6 50 590 367 clear-all 0; +#X obj 89 46 inlet; +#X obj 89 122 s pd-\$0-work; +#X msg 89 99 clear; +#X obj 89 72 t b; +#X connect 0 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X restore 158 331 pd clear-all; +#X obj 92 646 outlet; +#X obj 72 171 loadbang; +#X obj 191 411 metro 50; +#N canvas 581 163 695 660 pointer-parser 0; +#X obj 129 165 pointer; +#X text 276 46 from metro; +#X obj 282 346 t b f; +#X obj 117 49 inlet; +#X obj 237 48 inlet; +#X obj 129 541 outlet; +#X obj 129 398 pack 0 0; +#X obj 129 193 get \$0-xy-pad-knob-1 x0 y0; +#X obj 129 320 change -1; +#X obj 282 325 change -1; +#X obj 129 238 / 90; +#X obj 282 236 / 90; +#X obj 129 420 unpack 0 0; +#X obj 129 442 * 2; +#X obj 129 464 - 1; +#X obj 129 516 pack; +#X obj 169 442 * 2; +#X obj 169 464 - 1; +#X obj 384 202 set \$0-xy-pad-knob-1 x0 y0; +#X obj 384 43 inlet set; +#X obj 384 65 unpack; +#X text 432 67 -1..+1; +#X obj 384 112 + 1; +#X obj 384 134 / 2; +#X obj 384 156 * 90; +#X obj 424 112 + 1; +#X obj 424 134 / 2; +#X floatatom 173 241 5 0 0 0 - - -; +#X obj 424 156 * 90; +#X connect 0 0 18 2; +#X connect 0 0 7 0; +#X connect 2 0 6 0; +#X connect 2 1 6 1; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 6 0 12 0; +#X connect 7 0 10 0; +#X connect 7 0 27 0; +#X connect 7 1 11 0; +#X connect 8 0 6 0; +#X connect 9 0 2 0; +#X connect 10 0 8 0; +#X connect 11 0 9 0; +#X connect 12 0 13 0; +#X connect 12 1 16 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 5 0; +#X connect 16 0 17 0; +#X connect 17 0 15 1; +#X connect 19 0 20 0; +#X connect 20 0 22 0; +#X connect 20 1 25 0; +#X connect 22 0 23 0; +#X connect 23 0 24 0; +#X connect 24 0 18 0; +#X connect 25 0 26 0; +#X connect 26 0 28 0; +#X connect 28 0 18 1; +#X restore 72 448 pd pointer-parser; +#N canvas 419 563 751 371 add-controller 0; +#X msg 520 189 traverse \$1 \, bang; +#X obj 520 216 pointer; +#X obj 405 322 outlet; +#X obj 405 21 inlet; +#X obj 405 50 t f b; +#X obj 520 132 symbol pd-\$0-work; +#X obj 405 285 append \$0-xy-pad-knob-1 x0 y0 id; +#X obj 23 35 struct \$0-xy-pad-knob-1 float x0 float y0 float id; +#X obj 22 81 filledpolygon id 999 1 x0(0:90)(0:90) y0(0:90)(0:90) x0(0:90)(10:100) +y0(0:90)(0:90) x0(0:90)(10:100) y0(0:90)(10:100) x0(0:90)(0:90) y0(0:90)(10:100) +; +#X msg 405 261 45 45 \$1; +#X connect 0 0 1 0; +#X connect 1 0 6 3; +#X connect 3 0 4 0; +#X connect 4 0 9 0; +#X connect 4 1 5 0; +#X connect 5 0 0 0; +#X connect 6 0 2 0; +#X connect 9 0 6 0; +#X restore 72 379 pd add-controller; +#X obj 192 391 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X msg 193 370 1; +#X obj 72 303 t f b b; +#X text 111 233 5/10 red; +#X text 111 248 3/10 green; +#X text 111 263 2/10 blue; +#X text 522 76 (c) 2010 Thomas Musil; +#X text 521 58 (c) -2010 Frank Barknecht; +#X msg 72 233 900; +#X obj 162 646 outlet; +#X text 486 42 based on: xy-pad; +#N canvas 1444 366 450 300 xy2rphi 0; +#X obj 46 35 inlet x y; +#X obj 46 272 outlet r; +#X obj 136 266 outlet phi; +#X text 244 77 r=sqrt(x^2+y^2); +#X text 246 97 phi=atan2(y \, x); +#X obj 102 106 t f f f; +#X obj 102 129 *; +#X obj 46 169 +; +#X obj 46 106 t f f f; +#X obj 46 129 *; +#X obj 46 201 sqrt; +#X obj 136 157 pack; +#X obj 136 196 atan2; +#X msg 136 177 \$2 \$1; +#X obj 46 61 unpack 0 0; +#X text 147 282 in rad; +#X connect 0 0 14 0; +#X connect 5 0 6 0; +#X connect 5 1 6 1; +#X connect 5 2 11 1; +#X connect 6 0 7 1; +#X connect 7 0 10 0; +#X connect 8 0 9 0; +#X connect 8 1 9 1; +#X connect 8 2 11 0; +#X connect 9 0 7 0; +#X connect 10 0 1 0; +#X connect 11 0 13 0; +#X connect 12 0 2 0; +#X connect 13 0 12 0; +#X connect 14 0 8 0; +#X connect 14 1 5 0; +#X restore 394 485 pd xy2rphi; +#X obj 92 530 t l l; +#X obj 92 552 unpack 0 0; +#X obj 387 102 inlet r; +#X obj 456 103 inlet phi; +#X obj 444 333 t f f; +#X obj 444 357 cos; +#X obj 387 354 t f f; +#X obj 387 390 * 1; +#X obj 417 389 * 0; +#X obj 387 277 unpack 0 0; +#X obj 387 254 pack; +#X obj 456 225 t b f; +#X obj 471 356 sin; +#X obj 387 412 pack; +#X obj 387 204 t f; +#X obj 387 226 clip 0 1; +#X obj 304 74 cnv 10 12 12 empty empty empty 20 12 0 14 -99865 -66577 +0; +#N canvas 493 264 450 300 \$0-work 0; +#X scalar 1002-xy-pad-knob-1 71.2205 45 900 \;; +#X coords 0 100 100 0 100 100 1; +#X restore 260 30 pd \$0-work; +#X obj 451 532 wrap; +#X obj 72 193 t b b; +#X obj 608 163 atan2; +#X msg 608 138 1 0; +#X obj 608 185 * 4; +#X obj 608 207 t f f; +#X obj 378 612 s \$0-force; +#X obj 451 632 s \$0-direction; +#X msg 451 554 set \$1; +#X msg 378 564 set \$1; +#X obj 451 507 / 6.28; +#X obj 444 309 * -6.28; +#X obj 394 507 t f f; +#X obj 337 537 s force_wind; +#X obj 160 611 * -1; +#X connect 0 0 1 0; +#X connect 3 0 38 0; +#X connect 4 0 5 1; +#X connect 5 0 19 0; +#X connect 6 0 5 0; +#X connect 7 0 4 0; +#X connect 8 0 7 0; +#X connect 9 0 6 0; +#X connect 9 1 8 0; +#X connect 9 2 0 0; +#X connect 15 0 9 0; +#X connect 18 0 49 0; +#X connect 18 1 47 0; +#X connect 19 0 20 0; +#X connect 19 1 18 0; +#X connect 20 0 2 0; +#X connect 20 1 51 0; +#X connect 21 0 33 0; +#X connect 22 0 30 0; +#X connect 23 0 24 0; +#X connect 23 1 31 0; +#X connect 24 0 26 1; +#X connect 25 0 26 0; +#X connect 25 1 27 0; +#X connect 26 0 32 0; +#X connect 27 0 32 1; +#X connect 28 0 25 0; +#X connect 28 1 48 0; +#X connect 29 0 28 0; +#X connect 30 0 29 0; +#X connect 30 1 29 1; +#X connect 31 0 27 1; +#X connect 32 0 5 2; +#X connect 33 0 34 0; +#X connect 34 0 29 0; +#X connect 37 0 45 0; +#X connect 38 0 15 0; +#X connect 38 1 40 0; +#X connect 39 0 41 0; +#X connect 40 0 39 0; +#X connect 41 0 42 0; +#X connect 42 0 48 1; +#X connect 42 1 47 1; +#X connect 45 0 44 0; +#X connect 46 0 43 0; +#X connect 47 0 37 0; +#X connect 48 0 23 0; +#X connect 49 0 50 0; +#X connect 49 1 46 0; +#X connect 51 0 16 0; +#X coords 0 -1 1 1 100 100 2 260 30; +#X restore 445 290 pd \$0-pad; +#X obj 445 151 vsl 15 128 0 1 0 0 empty \$0-force force 0 -9 0 10 -262144 +-1 -1 7400 1; +#X obj 538 152 vsl 15 128 0 1 0 0 empty \$0-direction direction 0 -9 +0 10 -262144 -1 -1 0 1; +#N canvas 424 571 337 368 wind-control. 0; +#X obj 41 82 pack f f; +#X msg 41 104 wind \$1 \$2; +#X obj 41 126 s shader_link; +#X obj 41 30 inlet; +#X obj 105 32 inlet; +#X obj 181 304 s oscillation1; +#X obj 41 58 / 11000; +#X obj 105 58 / 11000; +#X obj 181 187 *; +#X obj 181 164 t f f; +#X obj 181 212 +; +#X obj 181 236 sqrt; +#X obj 231 187 *; +#X obj 231 164 t f f; +#X obj 181 259 * 600; +#X obj 181 281 min 300; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 3 0 6 0; +#X connect 3 0 9 0; +#X connect 4 0 7 0; +#X connect 4 0 13 0; +#X connect 6 0 0 0; +#X connect 7 0 0 1; +#X connect 8 0 10 0; +#X connect 9 0 8 0; +#X connect 9 1 8 1; +#X connect 10 0 11 0; +#X connect 11 0 14 0; +#X connect 12 0 10 1; +#X connect 13 0 12 0; +#X connect 13 1 12 1; +#X connect 14 0 15 0; +#X connect 15 0 5 0; +#X restore 445 397 pd wind-control.; +#X text 28 20 Simple version for Gem examples; +#X text 29 34 Did work under Linux \, with Nvidia driver. I don't know +on other OS/hardware.; +#X text 29 72 This patch is quite huge. the GPU compute the position +of 64x92 masses \, and 64x92x12 links at 50x20 Hz. (about 7e+07 links/sec +\, so about 100 time faster than what is curently possible with MSD +on a CPU) (My GPU is old \, this patch performs 10 to 50 times faster +on a good GPU); +#X obj 606 346 s qqt_noise; +#X connect 0 0 5 0; +#X connect 2 0 1 0; +#X connect 9 0 10 0; +#X connect 10 0 24 0; +#X connect 11 0 12 0; +#X connect 13 0 7 1; +#X connect 14 0 3 0; +#X connect 16 0 7 0; +#X connect 17 0 20 0; +#X connect 17 1 20 1; +#X connect 18 0 17 0; +#X connect 19 0 17 1; diff --git a/Gem/examples/10.glsl/11.geometry.pd b/Gem/examples/10.glsl/11.geometry.pd new file mode 100644 index 0000000..1851c8a --- /dev/null +++ b/Gem/examples/10.glsl/11.geometry.pd @@ -0,0 +1,123 @@ +#N canvas 197 25 552 632 10; +#X floatatom 132 447 9 0 0 0 ID - -; +#X floatatom 132 279 9 0 0 0 ID - -; +#X obj 150 506 print linking; +#X obj 132 465 pack 0 0 0; +#X floatatom 126 364 9 0 0 0 ID - -; +#X obj 44 139 gemhead; +#X msg 132 485 link \$1 \$2 \$3; +#X obj 44 319 glsl_vertex; +#X obj 44 403 glsl_fragment; +#X obj 44 237 glsl_geometry; +#X obj 44 158 alpha; +#X floatatom 122 531 5 0 0 0 - - -; +#X floatatom 164 531 5 0 0 0 - - -; +#X floatatom 209 532 5 0 0 0 - - -; +#X obj 44 512 glsl_program; +#X msg 182 200 -1; +#X obj 182 156 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 132 258 change; +#X obj 126 341 change; +#X obj 132 426 change; +#X obj 44 552 translateXYZ 0 0 0; +#X obj 44 197 colorRGB 1 1 1; +#X floatatom 128 174 5 0 0 0 - - -; +#X obj 44 177 depth 1; +#X obj 44 576 circle; +#X obj 182 176 t b b; +#X text 184 7 geometry shader; +#X text 48 28 The geometry shader is usefull to create new geometry +; +#X text 51 47 Here is an example where 40 circles are draw with 1 single +primitive.; +#X text 49 87 Be aware that the geometry shader is computed after the +vertex shader. coordinate are in 2d.; +#X msg 58 217 open geo.geom; +#X msg 56 299 open geo.vert; +#X msg 57 384 open geo.frag; +#X obj 182 136 loadbang; +#X text 205 155 load shaders; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 366 247 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 336 264 pd gemwin; +#X connect 0 0 3 0; +#X connect 1 0 3 2; +#X connect 3 0 6 0; +#X connect 4 0 3 1; +#X connect 5 0 10 0; +#X connect 6 0 2 0; +#X connect 6 0 14 0; +#X connect 7 0 8 0; +#X connect 7 1 18 0; +#X connect 8 0 14 0; +#X connect 8 1 19 0; +#X connect 9 0 7 0; +#X connect 9 1 17 0; +#X connect 10 0 23 0; +#X connect 11 0 20 1; +#X connect 12 0 20 2; +#X connect 13 0 20 3; +#X connect 14 0 20 0; +#X connect 15 0 19 0; +#X connect 16 0 25 0; +#X connect 17 0 1 0; +#X connect 18 0 4 0; +#X connect 19 0 0 0; +#X connect 20 0 24 0; +#X connect 21 0 9 0; +#X connect 22 0 21 2; +#X connect 23 0 21 0; +#X connect 25 0 15 0; +#X connect 25 1 32 0; +#X connect 25 1 30 0; +#X connect 25 1 31 0; +#X connect 30 0 9 0; +#X connect 31 0 7 0; +#X connect 32 0 8 0; +#X connect 33 0 16 0; +#X connect 35 0 36 0; diff --git a/Gem/examples/10.glsl/12.tri2fan.pd b/Gem/examples/10.glsl/12.tri2fan.pd new file mode 100644 index 0000000..5437d4b --- /dev/null +++ b/Gem/examples/10.glsl/12.tri2fan.pd @@ -0,0 +1,157 @@ +#N canvas 1775 56 785 745 10; +#X floatatom 286 440 9 0 0 0 ID - -; +#X floatatom 249 264 9 0 0 0 ID - -; +#X obj 296 500 print linking; +#X obj 286 458 pack 0 0 0; +#X floatatom 244 350 9 0 0 0 ID - -; +#X obj 161 78 gemhead; +#X msg 286 479 link \$1 \$2 \$3; +#X obj 161 151 alpha; +#X floatatom 202 578 5 0 0 0 - - -; +#X floatatom 244 578 5 0 0 0 - - -; +#X floatatom 289 579 5 0 0 0 - - -; +#X obj 161 526 glsl_program; +#X obj 42 117 t b b b b; +#X msg 42 147 -1; +#X obj 42 98 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 249 242 change; +#X obj 244 329 change; +#X obj 286 419 change; +#X obj 161 650 t a b; +#X obj 209 650 loadbang; +#X msg 340 672 2; +#X obj 161 217 glsl_geometry; +#X obj 161 307 glsl_vertex; +#X obj 161 394 glsl_fragment; +#X obj 42 76 loadbang; +#X text 65 97 reload; +#X msg 422 113 create \, 1; +#X msg 431 135 destroy; +#X obj 402 654 triangle; +#X msg 473 202 lighting 1; +#X obj 161 627 spigot 1; +#X obj 230 628 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 470 633 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 402 631 spigot 0; +#X msg 460 180 perspec -0.1 0.1 -0.1 0.1 1 110; +#X obj 422 229 gemwin; +#X obj 460 159 loadbang; +#N canvas 0 0 877 520 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 obj 225 227 world_light; +#X obj 250 151 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X msg 250 172 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 obj 27 233 world_light; +#X obj 48 158 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X msg 48 179 debug \$1; +#X obj 27 109 rotateXYZ 0 -90 0; +#X msg 297 207 0.8 0.8 0.8; +#X msg 100 210 0.7 0.7 0.7; +#X obj 408 73 loadbang; +#X connect 0 0 7 0; +#X connect 1 0 7 1; +#X connect 2 0 7 2; +#X connect 3 0 7 3; +#X connect 5 0 6 0; +#X connect 6 0 4 0; +#X connect 7 0 4 0; +#X connect 8 0 15 0; +#X connect 9 0 15 1; +#X connect 10 0 15 2; +#X connect 11 0 15 3; +#X connect 13 0 14 0; +#X connect 14 0 12 0; +#X connect 15 0 12 0; +#X connect 16 0 4 1; +#X connect 17 0 12 1; +#X connect 18 0 17 0; +#X connect 18 0 16 0; +#X restore 421 253 pd light; +#X obj 161 595 rotateXYZ -55 20 0; +#X floatatom 298 537 5 0 0 0 - - -; +#X text 235 13 replace triangle with 3 triangles thoses orientation +depend on the normal of the original primitive; +#X obj 161 554 scaleXYZ 0.2 0.2 0.2; +#X msg 172 129 auto 1; +#X obj 172 108 loadbang; +#X msg 176 195 open tri2fan.geom; +#X msg 177 286 open tri2fan.vert; +#X msg 178 370 open tri2fan.frag; +#X obj 161 724 newWave 25 25; +#X msg 209 671 D1 0.01 \, D2 0.1; +#X floatatom 520 593 5 0 25 0 - - -; +#X obj 552 635 pack f f; +#X obj 520 611 t f f; +#X msg 552 655 force \$1 \$2 0.3; +#X connect 0 0 3 0; +#X connect 1 0 3 2; +#X connect 3 0 6 0; +#X connect 4 0 3 1; +#X connect 5 0 7 0; +#X connect 6 0 2 0; +#X connect 6 0 11 0; +#X connect 7 0 21 0; +#X connect 8 0 38 1; +#X connect 9 0 38 2; +#X connect 10 0 38 3; +#X connect 11 0 41 0; +#X connect 12 0 13 0; +#X connect 12 1 46 0; +#X connect 12 2 45 0; +#X connect 12 3 44 0; +#X connect 13 0 17 0; +#X connect 14 0 12 0; +#X connect 15 0 1 0; +#X connect 16 0 4 0; +#X connect 17 0 0 0; +#X connect 18 0 47 0; +#X connect 18 1 47 0; +#X connect 19 0 48 0; +#X connect 20 0 47 3; +#X connect 21 0 22 0; +#X connect 21 1 15 0; +#X connect 22 0 23 0; +#X connect 22 1 16 0; +#X connect 23 0 11 0; +#X connect 23 1 17 0; +#X connect 24 0 14 0; +#X connect 26 0 35 0; +#X connect 27 0 35 0; +#X connect 29 0 35 0; +#X connect 30 0 18 0; +#X connect 31 0 30 1; +#X connect 32 0 33 1; +#X connect 33 0 28 0; +#X connect 34 0 35 0; +#X connect 36 0 34 0; +#X connect 36 0 29 0; +#X connect 38 0 30 0; +#X connect 38 0 33 0; +#X connect 39 0 41 2; +#X connect 39 0 41 3; +#X connect 39 0 41 1; +#X connect 41 0 38 0; +#X connect 42 0 7 0; +#X connect 43 0 42 0; +#X connect 44 0 21 0; +#X connect 45 0 22 0; +#X connect 46 0 23 0; +#X connect 48 0 47 0; +#X connect 49 0 51 0; +#X connect 50 0 52 0; +#X connect 51 0 50 1; +#X connect 51 1 50 0; +#X connect 52 0 47 0; diff --git a/Gem/examples/10.glsl/13.panoramique.pd b/Gem/examples/10.glsl/13.panoramique.pd new file mode 100644 index 0000000..c483a4c --- /dev/null +++ b/Gem/examples/10.glsl/13.panoramique.pd @@ -0,0 +1,525 @@ +#N canvas 189 90 1107 660 10; +#X msg 17 91 create \, 1; +#X msg 30 114 0 \, destroy; +#X obj 160 405 pix_texture; +#X obj 169 165 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#N canvas 1338 29 792 790 glsl 0; +#X obj 78 339 glsl_vertex; +#X msg 32 338 print; +#X obj 78 626 glsl_program; +#X obj 163 555 pack 0 0; +#X msg 30 476 print; +#X obj 163 511 change; +#X obj 150 358 change; +#X msg 163 579 link \$1 \$2; +#X msg 32 620 print; +#X obj 77 490 glsl_fragment; +#X floatatom 163 535 2 0 0 0 ID - -; +#X floatatom 150 381 2 0 0 0 ID - -; +#X obj 181 600 print linking; +#X obj 15 21 inlet; +#X obj 78 662 outlet; +#X obj 577 95 inlet; +#X obj 15 44 route bang; +#X obj 255 11 gemhead 1; +#X msg 255 33 1; +#X obj 255 57 change; +#X obj 255 81 t b; +#X obj 157 647 change; +#X obj 157 668 t b; +#X obj 158 690 outlet; +#X obj 90 426 symbol; +#X obj 90 401 t b; +#X msg 287 598 0; +#X obj 15 65 t b b b; +#X msg 118 307 open panoramique.vert; +#X msg 90 453 open panoramique.frag; +#X connect 0 0 9 0; +#X connect 0 1 6 0; +#X connect 1 0 0 0; +#X connect 2 0 14 0; +#X connect 2 1 21 0; +#X connect 3 0 7 0; +#X connect 4 0 9 0; +#X connect 5 0 10 0; +#X connect 6 0 11 0; +#X connect 6 0 25 0; +#X connect 7 0 2 0; +#X connect 7 0 12 0; +#X connect 8 0 2 0; +#X connect 9 0 2 0; +#X connect 9 1 5 0; +#X connect 10 0 3 0; +#X connect 11 0 3 1; +#X connect 13 0 16 0; +#X connect 15 0 2 0; +#X connect 16 0 27 0; +#X connect 16 1 0 0; +#X connect 17 0 18 0; +#X connect 18 0 19 0; +#X connect 19 0 20 0; +#X connect 20 0 28 0; +#X connect 21 0 22 0; +#X connect 22 0 23 0; +#X connect 24 0 29 0; +#X connect 25 0 24 0; +#X connect 26 0 21 0; +#X connect 27 0 26 0; +#X connect 27 1 10 0; +#X connect 27 2 28 0; +#X connect 28 0 0 0; +#X connect 29 0 9 0; +#X restore 160 182 pd glsl; +#X obj 175 245 loadbang; +#X obj 160 288 pix_image; +#X msg 174 379 rectangle 1; +#X obj 174 358 loadbang; +#X obj 160 317 pix_info 0 0 0; +#X msg 238 148 sizeX \$1; +#X msg 253 169 sizeY \$1; +#X obj 353 406 pix_texture; +#X obj 362 166 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#N canvas 1338 29 792 790 glsl 0; +#X obj 78 339 glsl_vertex; +#X msg 32 338 print; +#X obj 78 626 glsl_program; +#X obj 163 555 pack 0 0; +#X msg 30 476 print; +#X obj 163 511 change; +#X obj 150 358 change; +#X msg 163 579 link \$1 \$2; +#X msg 32 620 print; +#X obj 77 490 glsl_fragment; +#X floatatom 163 535 2 0 0 0 ID - -; +#X floatatom 150 381 2 0 0 0 ID - -; +#X obj 181 600 print linking; +#X obj 15 21 inlet; +#X obj 78 662 outlet; +#X obj 577 95 inlet; +#X obj 15 44 route bang; +#X obj 255 11 gemhead 1; +#X msg 255 33 1; +#X obj 255 57 change; +#X obj 255 81 t b; +#X obj 157 647 change; +#X obj 157 668 t b; +#X obj 158 690 outlet; +#X obj 90 426 symbol; +#X obj 90 401 t b; +#X msg 287 598 0; +#X obj 15 65 t b b b; +#X msg 118 307 open panoramique.vert; +#X msg 90 453 open panoramique.frag; +#X connect 0 0 9 0; +#X connect 0 1 6 0; +#X connect 1 0 0 0; +#X connect 2 0 14 0; +#X connect 2 1 21 0; +#X connect 3 0 7 0; +#X connect 4 0 9 0; +#X connect 5 0 10 0; +#X connect 6 0 11 0; +#X connect 6 0 25 0; +#X connect 7 0 2 0; +#X connect 7 0 12 0; +#X connect 8 0 2 0; +#X connect 9 0 2 0; +#X connect 9 1 5 0; +#X connect 10 0 3 0; +#X connect 11 0 3 1; +#X connect 13 0 16 0; +#X connect 15 0 2 0; +#X connect 16 0 27 0; +#X connect 16 1 0 0; +#X connect 17 0 18 0; +#X connect 18 0 19 0; +#X connect 19 0 20 0; +#X connect 20 0 28 0; +#X connect 21 0 22 0; +#X connect 22 0 23 0; +#X connect 24 0 29 0; +#X connect 25 0 24 0; +#X connect 26 0 21 0; +#X connect 27 0 26 0; +#X connect 27 1 10 0; +#X connect 27 2 28 0; +#X connect 28 0 0 0; +#X connect 29 0 9 0; +#X restore 353 183 pd glsl; +#X obj 368 246 loadbang; +#X obj 353 289 pix_image; +#X msg 367 378 rectangle 1; +#X obj 367 359 loadbang; +#X obj 353 318 pix_info 0 0 0; +#X msg 431 144 sizeX \$1; +#X msg 446 170 sizeY \$1; +#X obj 552 407 pix_texture; +#X obj 561 167 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#N canvas 1338 29 792 790 glsl 0; +#X obj 78 339 glsl_vertex; +#X msg 32 338 print; +#X obj 78 626 glsl_program; +#X obj 163 555 pack 0 0; +#X msg 30 476 print; +#X obj 163 511 change; +#X obj 150 358 change; +#X msg 163 579 link \$1 \$2; +#X msg 32 620 print; +#X obj 77 490 glsl_fragment; +#X floatatom 163 535 2 0 0 0 ID - -; +#X floatatom 150 381 2 0 0 0 ID - -; +#X obj 181 600 print linking; +#X obj 15 21 inlet; +#X obj 78 662 outlet; +#X obj 577 95 inlet; +#X obj 15 44 route bang; +#X obj 255 11 gemhead 1; +#X msg 255 33 1; +#X obj 255 57 change; +#X obj 255 81 t b; +#X obj 157 647 change; +#X obj 157 668 t b; +#X obj 158 690 outlet; +#X obj 90 426 symbol; +#X obj 90 401 t b; +#X msg 287 598 0; +#X obj 15 65 t b b b; +#X msg 118 307 open panoramique.vert; +#X msg 90 453 open panoramique.frag; +#X connect 0 0 9 0; +#X connect 0 1 6 0; +#X connect 1 0 0 0; +#X connect 2 0 14 0; +#X connect 2 1 21 0; +#X connect 3 0 7 0; +#X connect 4 0 9 0; +#X connect 5 0 10 0; +#X connect 6 0 11 0; +#X connect 6 0 25 0; +#X connect 7 0 2 0; +#X connect 7 0 12 0; +#X connect 8 0 2 0; +#X connect 9 0 2 0; +#X connect 9 1 5 0; +#X connect 10 0 3 0; +#X connect 11 0 3 1; +#X connect 13 0 16 0; +#X connect 15 0 2 0; +#X connect 16 0 27 0; +#X connect 16 1 0 0; +#X connect 17 0 18 0; +#X connect 18 0 19 0; +#X connect 19 0 20 0; +#X connect 20 0 28 0; +#X connect 21 0 22 0; +#X connect 22 0 23 0; +#X connect 24 0 29 0; +#X connect 25 0 24 0; +#X connect 26 0 21 0; +#X connect 27 0 26 0; +#X connect 27 1 10 0; +#X connect 27 2 28 0; +#X connect 28 0 0 0; +#X connect 29 0 9 0; +#X restore 552 184 pd glsl; +#X obj 567 247 loadbang; +#X obj 552 290 pix_image; +#X msg 566 379 rectangle 1; +#X obj 566 360 loadbang; +#X obj 552 319 pix_info 0 0 0; +#X msg 614 148 sizeX \$1; +#X msg 633 166 sizeY \$1; +#X obj 160 427 translateXYZ -3 0 0; +#X obj 352 426 translateXYZ -1 0 0; +#X obj 551 427 translateXYZ 1 0 0; +#X obj 747 408 pix_texture; +#X obj 756 168 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#N canvas 1338 29 792 790 glsl 0; +#X obj 78 339 glsl_vertex; +#X msg 32 338 print; +#X obj 78 626 glsl_program; +#X obj 163 555 pack 0 0; +#X msg 30 476 print; +#X obj 163 511 change; +#X obj 150 358 change; +#X msg 163 579 link \$1 \$2; +#X msg 32 620 print; +#X obj 77 490 glsl_fragment; +#X floatatom 163 535 2 0 0 0 ID - -; +#X floatatom 150 381 2 0 0 0 ID - -; +#X obj 181 600 print linking; +#X obj 15 21 inlet; +#X obj 78 662 outlet; +#X obj 577 95 inlet; +#X obj 15 44 route bang; +#X obj 255 11 gemhead 1; +#X msg 255 33 1; +#X obj 255 57 change; +#X obj 255 81 t b; +#X obj 157 647 change; +#X obj 157 668 t b; +#X obj 158 690 outlet; +#X obj 90 426 symbol; +#X obj 90 401 t b; +#X msg 287 598 0; +#X obj 15 65 t b b b; +#X msg 118 307 open panoramique.vert; +#X msg 90 452 open panoramique.frag; +#X connect 0 0 9 0; +#X connect 0 1 6 0; +#X connect 1 0 0 0; +#X connect 2 0 14 0; +#X connect 2 1 21 0; +#X connect 3 0 7 0; +#X connect 4 0 9 0; +#X connect 5 0 10 0; +#X connect 6 0 11 0; +#X connect 6 0 25 0; +#X connect 7 0 2 0; +#X connect 7 0 12 0; +#X connect 8 0 2 0; +#X connect 9 0 2 0; +#X connect 9 1 5 0; +#X connect 10 0 3 0; +#X connect 11 0 3 1; +#X connect 13 0 16 0; +#X connect 15 0 2 0; +#X connect 16 0 27 0; +#X connect 16 1 0 0; +#X connect 17 0 18 0; +#X connect 18 0 19 0; +#X connect 19 0 20 0; +#X connect 20 0 28 0; +#X connect 21 0 22 0; +#X connect 22 0 23 0; +#X connect 24 0 29 0; +#X connect 25 0 24 0; +#X connect 26 0 21 0; +#X connect 27 0 26 0; +#X connect 27 1 10 0; +#X connect 27 2 28 0; +#X connect 28 0 0 0; +#X connect 29 0 9 0; +#X restore 747 185 pd glsl; +#X obj 762 248 loadbang; +#X obj 747 291 pix_image; +#X msg 761 380 rectangle 1; +#X obj 761 361 loadbang; +#X obj 747 320 pix_info 0 0 0; +#X msg 825 146 sizeX \$1; +#X msg 840 172 sizeY \$1; +#X obj 746 428 translateXYZ 3 0 0; +#X floatatom 199 68 5 0 0 0 - - -; +#X msg 199 87 dZ \$1; +#X obj 17 430 s shaders; +#X obj 206 205 s init_shader; +#X obj 399 204 s init_shader; +#X obj 600 204 s init_shader; +#X obj 794 206 s init_shader; +#X obj 399 124 r shaders; +#X obj 598 126 r shaders; +#X obj 793 127 r shaders; +#X obj 160 506 rectangle 1 0.75; +#X obj 352 507 rectangle 1 0.75; +#X obj 551 508 rectangle 1 0.75; +#X obj 746 509 rectangle 1 0.75; +#X obj 160 463 translateXYZ 0 0 0; +#X obj 201 446 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 0.12 256; +#X obj 259 446 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 -0.06 256; +#X obj 352 465 translateXYZ 0 0 0; +#X obj 393 448 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 0 256; +#X obj 451 448 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 0 256; +#X obj 551 466 translateXYZ 0 0 0; +#X obj 592 449 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 -0.11 256; +#X obj 650 449 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 -0.03 256; +#X obj 746 465 translateXYZ 0 0 0; +#X obj 787 448 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 -0.18 256; +#X obj 845 448 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 -0.05 256; +#X obj 160 -30 gemhead 10; +#X obj 353 -29 gemhead 20; +#X obj 552 -28 gemhead 30; +#X obj 747 -27 gemhead 40; +#X obj 160 104 alpha; +#X obj 353 103 alpha; +#X obj 552 99 alpha; +#X obj 747 102 alpha; +#X msg 256 113 ShadeL \$1; +#X obj 199 25 r init_shader; +#X obj 256 92 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 0 256; +#X msg 447 93 ShadeL \$1; +#X obj 447 72 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 39 256; +#X msg 634 95 ShadeL \$1; +#X obj 634 74 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 35 256; +#X msg 831 93 ShadeL \$1; +#X obj 831 72 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-262144 -1 -1 23 256; +#X msg 212 486 -1; +#X msg 269 485 -0.75; +#X text 163 486 invert; +#X msg 406 485 -1; +#X msg 463 484 -0.75; +#X text 357 485 invert; +#X msg 605 488 -1; +#X msg 662 487 -0.75; +#X text 556 488 invert; +#X msg 800 489 -1; +#X msg 857 488 -0.75; +#X text 751 489 invert; +#X obj 17 218 gemwin; +#X obj 37 168 loadbang; +#X obj 160 -8 scaleXYZ 4 4 1; +#X obj 353 -8 scaleXYZ 4 4 1; +#X obj 552 -4 scaleXYZ 4 4 1; +#X obj 747 -5 scaleXYZ 4 4 1; +#X text 21 548 This patch allow multiples images to be assembled in +order to dreate a panoramic image.; +#X text 20 575 A shader distord the image to correct distance distortion +\, and allow a fade between 2 images; +#X text 17 602 "dz" depend on the angles between images.; +#X text 462 579 copyright cyrille Henry and iem.; +#X text 463 596 This developement was suported by the COMEDIA project +; +#X floatatom 18 354 5 0 0 0 - - -; +#X msg 18 373 dZ \$1; +#X obj 18 311 r init_shader; +#X msg 18 333 1.62; +#X msg 199 47 1.38; +#X msg 37 192 dimen 1024 256; +#X msg 177 264 thread 0 \, open cam1.jpg; +#X msg 370 265 thread 0 \, open cam2.jpg; +#X msg 569 266 thread 0 \, open cam3.jpg; +#X msg 764 267 thread 0 \, open cam4.jpg; +#X connect 0 0 101 0; +#X connect 1 0 101 0; +#X connect 2 0 32 0; +#X connect 3 0 4 0; +#X connect 4 0 6 0; +#X connect 4 1 49 0; +#X connect 4 1 82 0; +#X connect 5 0 118 0; +#X connect 6 0 9 0; +#X connect 7 0 2 0; +#X connect 8 0 7 0; +#X connect 9 0 2 0; +#X connect 9 1 10 0; +#X connect 9 2 11 0; +#X connect 10 0 4 1; +#X connect 11 0 4 1; +#X connect 12 0 33 0; +#X connect 13 0 14 0; +#X connect 14 0 16 0; +#X connect 14 1 50 0; +#X connect 14 1 84 0; +#X connect 15 0 119 0; +#X connect 16 0 19 0; +#X connect 17 0 12 0; +#X connect 18 0 17 0; +#X connect 19 0 12 0; +#X connect 19 1 20 0; +#X connect 19 2 21 0; +#X connect 20 0 14 1; +#X connect 21 0 14 1; +#X connect 22 0 34 0; +#X connect 23 0 24 0; +#X connect 24 0 26 0; +#X connect 24 1 51 0; +#X connect 24 1 86 0; +#X connect 25 0 120 0; +#X connect 26 0 29 0; +#X connect 27 0 22 0; +#X connect 28 0 27 0; +#X connect 29 0 22 0; +#X connect 29 1 30 0; +#X connect 29 2 31 0; +#X connect 30 0 24 1; +#X connect 31 0 24 1; +#X connect 32 0 60 0; +#X connect 33 0 63 0; +#X connect 34 0 66 0; +#X connect 35 0 45 0; +#X connect 36 0 37 0; +#X connect 37 0 39 0; +#X connect 37 1 52 0; +#X connect 37 1 88 0; +#X connect 38 0 121 0; +#X connect 39 0 42 0; +#X connect 40 0 35 0; +#X connect 41 0 40 0; +#X connect 42 0 35 0; +#X connect 42 1 43 0; +#X connect 42 2 44 0; +#X connect 43 0 37 1; +#X connect 44 0 37 1; +#X connect 45 0 69 0; +#X connect 46 0 47 0; +#X connect 47 0 4 1; +#X connect 53 0 14 1; +#X connect 54 0 24 1; +#X connect 55 0 37 1; +#X connect 60 0 56 0; +#X connect 61 0 60 1; +#X connect 62 0 60 2; +#X connect 63 0 57 0; +#X connect 64 0 63 1; +#X connect 65 0 63 2; +#X connect 66 0 58 0; +#X connect 67 0 66 1; +#X connect 68 0 66 2; +#X connect 69 0 59 0; +#X connect 70 0 69 1; +#X connect 71 0 69 2; +#X connect 72 0 103 0; +#X connect 73 0 104 0; +#X connect 74 0 105 0; +#X connect 75 0 106 0; +#X connect 76 0 4 0; +#X connect 77 0 14 0; +#X connect 78 0 24 0; +#X connect 79 0 37 0; +#X connect 80 0 4 1; +#X connect 81 0 116 0; +#X connect 82 0 80 0; +#X connect 83 0 14 1; +#X connect 84 0 83 0; +#X connect 85 0 24 1; +#X connect 86 0 85 0; +#X connect 87 0 37 1; +#X connect 88 0 87 0; +#X connect 89 0 56 1; +#X connect 90 0 56 2; +#X connect 92 0 57 1; +#X connect 93 0 57 2; +#X connect 95 0 58 1; +#X connect 96 0 58 2; +#X connect 98 0 59 1; +#X connect 99 0 59 2; +#X connect 102 0 117 0; +#X connect 103 0 76 0; +#X connect 104 0 77 0; +#X connect 105 0 78 0; +#X connect 106 0 79 0; +#X connect 112 0 113 0; +#X connect 113 0 48 0; +#X connect 114 0 115 0; +#X connect 115 0 112 0; +#X connect 116 0 46 0; +#X connect 117 0 101 0; +#X connect 118 0 6 0; +#X connect 119 0 16 0; +#X connect 120 0 26 0; +#X connect 121 0 39 0; diff --git a/Gem/examples/10.glsl/14.blur.pd b/Gem/examples/10.glsl/14.blur.pd new file mode 100644 index 0000000..ed1c099 --- /dev/null +++ b/Gem/examples/10.glsl/14.blur.pd @@ -0,0 +1,177 @@ +#N canvas 481 142 778 497 10; +#X obj 16 74 gemhead; +#X obj 16 130 gemframebuffer; +#X obj 129 13 loadbang; +#X obj 16 185 translateXYZ 0 0 -4; +#X obj 14 283 cnv 15 125 200 empty empty empty 20 12 0 14 -228856 -66577 +0; +#X floatatom 82 334 5 0 0 0 - - -; +#X obj 16 362 rotateXYZ 30 30 0; +#X obj 16 385 colorRGB 1 0 1; +#X obj 16 408 teapot 1.5; +#N canvas 385 358 230 231 shunt 0; +#X obj 171 17 inlet; +#X obj 72 67 * -1; +#X obj 72 91 + 1; +#X obj 27 17 inlet; +#X obj 27 200 outlet; +#X obj 126 197 outlet; +#X obj 27 117 spigot 1; +#X obj 126 115 spigot 0; +#X connect 0 0 1 0; +#X connect 0 0 7 1; +#X connect 1 0 2 0; +#X connect 2 0 6 1; +#X connect 3 0 6 0; +#X connect 3 0 7 0; +#X connect 6 0 4 0; +#X connect 7 0 5 0; +#X restore 16 223 pd shunt; +#X obj 81 224 tgl 15 0 empty empty empty 17 7 0 10 -257985 -1 -1 0 +1; +#X obj 162 283 cnv 15 125 200 empty empty empty 20 12 0 14 -228856 +-66577 0; +#X obj 169 385 colorRGB 1 1 0; +#X text 76 286 Scene A; +#X text 223 287 Scene B; +#X text 105 223 Scene A / Scene B; +#X obj 169 360 rotateXYZ 0 0 45; +#X obj 169 463 square 2.8; +#X floatatom 197 409 5 0 0 0 - - -; +#X obj 169 429 translateXYZ; +#X obj 129 54 s to_fb; +#X obj 30 103 r to_fb; +#X msg 129 34 dimen 500 500 \, rectangle 0; +#X obj 327 379 pix_texture; +#X obj 327 399 square 4; +#X msg 344 358 quality 1 \, rectangle 0; +#X obj 344 337 loadbang; +#X obj 327 309 gemhead 99; +#N canvas 1070 136 503 739 14_pass_blur 0; +#X obj 87 102 inlet; +#X obj 87 527 outlet; +#X obj 87 173 single_blur 76 0 64; +#X obj 87 263 single_blur 80 0 16; +#X obj 87 284 single_blur 81 16 0; +#X obj 87 305 single_blur 82 0 8; +#X obj 87 326 single_blur 83 8 0; +#X obj 87 347 single_blur 84 0 4; +#X obj 87 368 single_blur 85 4 0; +#X obj 87 389 single_blur 86 0 2; +#X obj 87 410 single_blur 87 2 0; +#X obj 87 430 single_blur 88 0 1; +#X obj 87 451 single_blur 89 1 0; +#X obj 87 236 single_blur 79 32 0; +#X obj 87 215 single_blur 78 0 32; +#X obj 87 194 single_blur 77 64 0; +#X connect 0 0 2 0; +#X connect 2 0 15 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 7 0 8 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 12 0; +#X connect 12 0 1 0; +#X connect 13 0 3 0; +#X connect 14 0 13 0; +#X connect 15 0 14 0; +#X restore 114 149 pd 14_pass_blur; +#X obj 557 245 pack f f; +#X obj 557 264 s motion_blur; +#X obj 575 205 cos; +#X obj 557 151 / 500; +#X obj 557 171 t f f; +#X obj 610 226 *; +#X obj 628 205 sin; +#X floatatom 596 129 5 0 6.28 0 - - -; +#X obj 596 150 t b f; +#N canvas 0 22 454 304 gemwin 0; +#X obj 132 136 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 182 68 set create; +#X msg 132 112 create \, 1; +#X msg 238 112 destroy; +#N canvas 87 154 850 451 Gem.init 0; +#X obj 59 46 loadbang; +#X obj 119 130 outlet; +#X msg 118 81 reset \, dimen 500 500 \, lighting 1 \, title blur \, +frame 20 \,; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X restore 289 80 pd Gem.init; +#X obj 75 217 world_light; +#X obj 75 194 gemhead 1; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 6 0; +#X connect 3 1 5 0; +#X connect 3 1 7 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 0 0; +#X connect 10 0 9 0; +#X restore 17 32 pd gemwin; +#X msg 17 8 create; +#X obj 383 89 cnv 15 150 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#X obj 392 95 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 0 1; +#X obj 389 140 s blur; +#X obj 389 115 / 500; +#X text 389 69 blur; +#X obj 551 91 cnv 15 150 25 empty empty empty 20 12 0 14 -257985 -66577 +0; +#X obj 560 97 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144 +-1 -1 0 1; +#X text 556 67 motion blur; +#X obj 557 226 * 1; +#X text 640 129 angle (radian); +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X connect 1 1 28 0; +#X connect 2 0 22 0; +#X connect 3 0 9 0; +#X connect 5 0 6 2; +#X connect 5 0 6 1; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 9 0 6 0; +#X connect 9 1 16 0; +#X connect 10 0 9 1; +#X connect 12 0 19 0; +#X connect 16 0 12 0; +#X connect 18 0 19 1; +#X connect 19 0 17 0; +#X connect 21 0 1 0; +#X connect 22 0 20 0; +#X connect 23 0 24 0; +#X connect 25 0 23 0; +#X connect 26 0 25 0; +#X connect 27 0 23 0; +#X connect 28 0 23 1; +#X connect 29 0 30 0; +#X connect 31 0 48 1; +#X connect 32 0 33 0; +#X connect 33 0 48 0; +#X connect 33 1 34 0; +#X connect 34 0 29 1; +#X connect 35 0 34 1; +#X connect 36 0 37 0; +#X connect 37 0 32 0; +#X connect 37 1 35 0; +#X connect 37 1 31 0; +#X connect 38 0 39 0; +#X connect 39 0 38 0; +#X connect 41 0 43 0; +#X connect 43 0 42 0; +#X connect 46 0 32 0; +#X connect 48 0 29 0; diff --git a/Gem/examples/10.glsl/15.bicubic_image_interpolation.pd b/Gem/examples/10.glsl/15.bicubic_image_interpolation.pd new file mode 100644 index 0000000..e1ae128 --- /dev/null +++ b/Gem/examples/10.glsl/15.bicubic_image_interpolation.pd @@ -0,0 +1,63 @@ +#N canvas 722 145 681 529 10; +#X obj 232 189 gemhead; +#X obj 232 356 pix_noise 5 5; +#X obj 232 446 pix_texture; +#X obj 232 465 square 4; +#X msg 240 403 rectangle 1; +#X obj 240 382 loadbang; +#X obj 242 222 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X floatatom 250 272 5 0 0 0 - - -; +#X obj 35 196 gemwin; +#X msg 250 334 set \$1 \$2; +#X obj 250 314 pack f f; +#X obj 303 288 t b f; +#X floatatom 303 271 5 0 0 0 - - -; +#X msg 35 151 create \, 1; +#X msg 42 173 0 \, destroy; +#X obj 232 243 _glsl bicubic_interpolation; +#X obj 436 191 gemhead; +#X msg 358 408 quality \$1; +#X obj 358 389 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X obj 33 246 vradio 15 1 1 3 empty empty empty 0 -8 0 10 -262144 -1 +-1 0; +#X text 53 246 bicubic interpolation; +#X text 53 264 bilinear interpolation; +#X text 55 276 no interpolation; +#X obj 33 304 s sel_interpolation; +#X obj 232 169 == 0; +#X obj 232 149 r sel_interpolation; +#X obj 436 152 r sel_interpolation; +#X obj 436 172 != 0; +#X obj 358 369 != 2; +#X obj 358 349 r sel_interpolation; +#X text 46 16 This example use shader in order to compute a bicubic +image interpolation. Bicubic interpolation offer a smoother surface +than obtain with bilinear interpolation. But since it need 16 sample +to compute the interpolation \, it is quite slow.; +#X connect 0 0 15 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 4 0 2 0; +#X connect 5 0 4 0; +#X connect 6 0 15 0; +#X connect 7 0 10 0; +#X connect 9 0 1 0; +#X connect 10 0 9 0; +#X connect 11 0 10 0; +#X connect 11 1 10 1; +#X connect 12 0 11 0; +#X connect 13 0 8 0; +#X connect 14 0 8 0; +#X connect 15 0 1 0; +#X connect 16 0 1 0; +#X connect 17 0 2 0; +#X connect 18 0 17 0; +#X connect 19 0 23 0; +#X connect 24 0 0 0; +#X connect 25 0 24 0; +#X connect 26 0 27 0; +#X connect 27 0 16 0; +#X connect 28 0 18 0; +#X connect 29 0 28 0; diff --git a/Gem/examples/10.glsl/GLSL_mix.frag b/Gem/examples/10.glsl/GLSL_mix.frag new file mode 100644 index 0000000..ce47bf8 --- /dev/null +++ b/Gem/examples/10.glsl/GLSL_mix.frag @@ -0,0 +1,35 @@ +//jack/RYBN 2010 +#extension GL_EXT_gpu_shader4 : enable +#extension GL_ARB_texture_rectangle : enable +uniform sampler2DRect Ttex1; +uniform sampler2DRect Ttex2; +uniform sampler2DRect tex0; +uniform float style; +uniform float mix_factor; +varying vec2 texcoord0; +ivec2 size1 = textureSize2DRect(Ttex1, 0); +ivec2 size2 = textureSize2DRect(Ttex2, 0); +ivec2 size0 = textureSize2DRect(tex0, 0); + +void main (void) +{ + float sizeF1X = float(size1.x)/float(size0.x); + float sizeF1Y = float(size1.y)/float(size0.y); + float sizeF2X = float(size2.x)/float(size0.x); + float sizeF2Y = float(size2.y)/float(size0.y); + vec4 color1 = texture2DRect(Ttex1, vec2(texcoord0.s*sizeF1X,texcoord0.t*sizeF1Y)); + vec4 color2 = texture2DRect(Ttex2, vec2(texcoord0.s*sizeF2X,texcoord0.t*sizeF2Y)); + if (style == 0.) { + gl_FragColor = (color1 + color2); + } else if (style == 1.) { + gl_FragColor = (color1 - color2); + } else if (style == 2.) { + gl_FragColor = abs(color1 - color2); + } else if (style == 3.) { + gl_FragColor = (color1 * color2); + } else if (style == 4.) { + gl_FragColor = mix(color1,color2,mix_factor); + } + +} + diff --git a/Gem/examples/10.glsl/GLSL_mix.vert b/Gem/examples/10.glsl/GLSL_mix.vert new file mode 100644 index 0000000..a69a61f --- /dev/null +++ b/Gem/examples/10.glsl/GLSL_mix.vert @@ -0,0 +1,9 @@ +//jack/RYBN 2010 +varying vec2 texcoord0; + +void main() +{ + texcoord0 = (gl_TextureMatrix[0]*gl_MultiTexCoord0).st; + gl_Position = ftransform(); + +} diff --git a/Gem/examples/10.glsl/P_distord.frag b/Gem/examples/10.glsl/P_distord.frag new file mode 100644 index 0000000..5460d6c --- /dev/null +++ b/Gem/examples/10.glsl/P_distord.frag @@ -0,0 +1,19 @@ +// Cyrille Henry 2007 + +uniform sampler2D tex0; + +void main() +{ + vec2 C = (gl_TextureMatrix[0] * gl_TexCoord[0]).st; + gl_FragColor = texture2D(tex0, C ) ; +} + + + + + + + + + + diff --git a/Gem/examples/10.glsl/P_distord.vert b/Gem/examples/10.glsl/P_distord.vert new file mode 100644 index 0000000..f0db5f3 --- /dev/null +++ b/Gem/examples/10.glsl/P_distord.vert @@ -0,0 +1,21 @@ +// Cyrille Henry 2007 + +uniform float K; +uniform sampler2D tex0; + +void main() +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + + float xs1 = sin((1.2 + gl_TexCoord[0].s)*(2.3+gl_TexCoord[0].t)); + float xs2 = sin(xs1*533.); + float xs3 = K * sin(xs2*1013.); + + float ys1 = sin((2.1 + gl_TexCoord[0].s)*(3.2+gl_TexCoord[0].t)); + float ys2 = sin(ys1*5313.); + float ys3 = K * sin(ys2*10113.); + + gl_Position = gl_ModelViewProjectionMatrix * (gl_Vertex + vec4(xs3,ys3,0.,0.)); + +} + diff --git a/Gem/examples/10.glsl/T_distord.frag b/Gem/examples/10.glsl/T_distord.frag new file mode 100644 index 0000000..385f427 --- /dev/null +++ b/Gem/examples/10.glsl/T_distord.frag @@ -0,0 +1,31 @@ +// Cyrille Henry 2007 + +uniform float K1, seed; +uniform sampler2D tex0; + +void main() +{ + + vec2 C = (gl_TextureMatrix[0] * gl_TexCoord[0]).st; + + float xs1 = sin(gl_TexCoord[0].s*gl_TexCoord[0].t/(abs(seed)+1.)); + float xs2 = sin(xs1*533.); + float xs3 = sin(xs2*1013.); + + float ys1 = sin(gl_TexCoord[0].s*gl_TexCoord[0].t/(abs(seed)+1.)); + float ys2 = sin(ys1*5313.); + float ys3 = sin(ys2*10113.); + + gl_FragColor = texture2D(tex0, C + K1 * 0.01 *vec2(xs3,ys3)) ; + +} + + + + + + + + + + diff --git a/Gem/examples/10.glsl/T_distord.vert b/Gem/examples/10.glsl/T_distord.vert new file mode 100644 index 0000000..1143615 --- /dev/null +++ b/Gem/examples/10.glsl/T_distord.vert @@ -0,0 +1,9 @@ +// Cyrille Henry 2007 + +void main() +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_Position = ftransform(); + +} + diff --git a/Gem/examples/10.glsl/_glsl.pd b/Gem/examples/10.glsl/_glsl.pd new file mode 100644 index 0000000..de6228c --- /dev/null +++ b/Gem/examples/10.glsl/_glsl.pd @@ -0,0 +1,73 @@ +#N canvas 652 79 668 661 10; +#X obj 78 339 glsl_vertex; +#X msg 32 338 print; +#X obj 78 626 glsl_program; +#X obj 163 555 pack 0 0; +#X msg 30 476 print; +#X obj 163 511 change; +#X obj 150 358 change; +#X msg 163 579 link \$1 \$2; +#X msg 32 620 print; +#X obj 77 490 glsl_fragment; +#X floatatom 163 535 2 0 0 0 ID - -; +#X floatatom 150 381 2 0 0 0 ID - -; +#X obj 181 600 print linking; +#X obj 15 21 inlet; +#X obj 78 662 outlet; +#X msg 106 309 open \$1.vert; +#X msg 90 453 open \$1.frag; +#X obj 577 95 inlet; +#X obj 15 44 route bang; +#X obj 255 11 gemhead 1; +#X msg 255 33 1; +#X obj 255 57 change; +#X obj 255 81 t b; +#X obj 157 647 change; +#X obj 157 668 t b; +#X obj 158 690 outlet; +#X obj 140 224 t a a; +#X obj 90 426 symbol; +#X obj 90 401 t b; +#X msg 287 598 0; +#X obj 15 65 t b b b; +#X obj 140 199 symbol \$1; +#X text 270 193 This abstraction can be usefull to load shader. Shader +location is relative to this abstraction path.; +#X connect 0 0 9 0; +#X connect 0 1 6 0; +#X connect 1 0 0 0; +#X connect 2 0 14 0; +#X connect 2 1 23 0; +#X connect 3 0 7 0; +#X connect 4 0 9 0; +#X connect 5 0 10 0; +#X connect 6 0 11 0; +#X connect 6 0 28 0; +#X connect 7 0 2 0; +#X connect 7 0 12 0; +#X connect 8 0 2 0; +#X connect 9 0 2 0; +#X connect 9 1 5 0; +#X connect 10 0 3 0; +#X connect 11 0 3 1; +#X connect 13 0 18 0; +#X connect 15 0 0 0; +#X connect 16 0 9 0; +#X connect 17 0 2 0; +#X connect 18 0 30 0; +#X connect 18 1 0 0; +#X connect 19 0 20 0; +#X connect 20 0 21 0; +#X connect 21 0 22 0; +#X connect 22 0 31 0; +#X connect 23 0 24 0; +#X connect 24 0 25 0; +#X connect 26 0 15 0; +#X connect 26 1 27 1; +#X connect 27 0 16 0; +#X connect 28 0 27 0; +#X connect 29 0 23 0; +#X connect 30 0 29 0; +#X connect 30 1 10 0; +#X connect 30 2 31 0; +#X connect 31 0 26 0; diff --git a/Gem/examples/10.glsl/bicubic_interpolation.frag b/Gem/examples/10.glsl/bicubic_interpolation.frag new file mode 100644 index 0000000..9482bc6 --- /dev/null +++ b/Gem/examples/10.glsl/bicubic_interpolation.frag @@ -0,0 +1,90 @@ +// Cyrille Henry 2007 + +#extension GL_ARB_texture_rectangle : enable +uniform sampler2DRect texture; + +void main (void) +{ + vec2 coordinate = (gl_TextureMatrix[0] * gl_TexCoord[0]).st-vec2(0.5,0.5); + + vec2 coord = floor(coordinate)+vec2(0.5,0.5); + vec2 interpol = fract(coordinate); + vec2 interpol2 = interpol * interpol; + vec2 interpol3 = interpol2 * interpol; + + vec4 C00 = texture2DRect(texture, coord + vec2(-1,-1) ); + vec4 C10 = texture2DRect(texture, coord + vec2( 0,-1) ); + vec4 C20 = texture2DRect(texture, coord + vec2( 1,-1) ); + vec4 C30 = texture2DRect(texture, coord + vec2( 2,-1) ); + vec4 C01 = texture2DRect(texture, coord + vec2(-1, 0) ); + vec4 C11 = texture2DRect(texture, coord ); + vec4 C21 = texture2DRect(texture, coord + vec2( 1, 0) ); + vec4 C31 = texture2DRect(texture, coord + vec2( 2, 0) ); + vec4 C02 = texture2DRect(texture, coord + vec2(-1, 1) ); + vec4 C12 = texture2DRect(texture, coord + vec2( 0, 1) ); + vec4 C22 = texture2DRect(texture, coord + vec2( 1, 1) ); + vec4 C32 = texture2DRect(texture, coord + vec2( 2, 1) ); + vec4 C03 = texture2DRect(texture, coord + vec2(-1, 2) ); + vec4 C13 = texture2DRect(texture, coord + vec2( 0, 2) ); + vec4 C23 = texture2DRect(texture, coord + vec2( 1, 2) ); + vec4 C33 = texture2DRect(texture, coord + vec2( 2, 2) ); + + vec4 w0 = C11; + vec4 w1 = C21; + vec4 w2 = C12; + vec4 w3 = C22; + // x derivative + vec4 x0 = (C21 - C01) / 2.; + vec4 x1 = (C31 - C11) / 2.; + vec4 x2 = (C22 - C02) / 2.; + vec4 x3 = (C32 - C12) / 2.; + // y derivative + vec4 y0 = (C12 - C10) / 2.; + vec4 y1 = (C22 - C20) / 2.; + vec4 y2 = (C13 - C11) / 2.; + vec4 y3 = (C23 - C21) / 2.; + // xy derivative + vec4 z0 = (C22 - C00) / 2.; + vec4 z1 = (C32 - C10) / 2.; + vec4 z2 = (C23 - C01) / 2.; + vec4 z3 = (C33 - C11) / 2.; + + + + vec4 a00 = w0; + vec4 a01 = y0; + vec4 a02 = -3.*w0 + 3.*w2 -2.*y0 - y2; + vec4 a03 = 2.*w0 - 2.*w2 + y0 + y2; + vec4 a10 = x0; + vec4 a11 = z0; + vec4 a12 = -3.*x0 + 3.*x2 - 2.*z0 - z2; + vec4 a13 = 2.*x0 - 2.*x2 + z0 + z2; + vec4 a20 = -3.*w0 + 3.*w1 - 2.*x0 - x1; + vec4 a21 = -3.*y0 + 3.*y1 - 2.*z0 - z1; + vec4 a22 = 9.*w0 - 9.*w1 - 9.*w2 + 9.*w3 + 6.*x0 + 3.*x1 + -6.*x2 - 3.*x3 + 6.*y0 - 6.*y1 + 3.*y2 - 3.*y3 + 4.*z0 + 2.*z1 + 2.*z2 + z3; + vec4 a23 = -6.*w0 + 6.*w1 + 6.*w2 - 6.*w3 -4.*x0 - 2.*x1 + 4.*x2 + 2.*x3 -3.*y0 + 3.*y1 - 3.*y2 + 3.*y3 + -2.*z0 - z1 - 2.*z2 - z3; + vec4 a30 = 2.*w0 - 2.*w1 + x0 + x1; + vec4 a31 = 2.*y0 - 2.*y1 + z0 + z1; + vec4 a32 = -6.*w0 + 6.*w1 + 6.*w2 -6.*w3 -3.*x0 - 3.*x1 + 3.*x2 + 3.*x3 -4.*y0 + 4.*y1 - 2.*y2 + 2.*y3 + -2.*z0 - 2.*z1 - z2 - z3; + vec4 a33 = 4.*w0 - 4.*w1 - 4.*w2 + 4.*w3 + 2.*x0 + 2.*x1 + -2.*x2 - 2.*x3 + 2.*y0 - 2.*y1 + 2.*y2 - 2.*y3 + z0 + z1 + z2 + z3; + + + vec4 color = a00; + color += a01 * interpol.y; + color += a02 * interpol2.y; + color += a03 * interpol3.y; + color += a10 * interpol.x; + color += a11 * interpol.x * interpol.y; + color += a12 * interpol.x * interpol2.y; + color += a13 * interpol.x * interpol3.y; + color += a20 * interpol2.x; + color += a21 * interpol2.x * interpol.y; + color += a22 * interpol2.x * interpol2.y; + color += a23 * interpol2.x * interpol3.y; + color += a30 * interpol3.x; + color += a31 * interpol3.x * interpol.y; + color += a32 * interpol3.x * interpol2.y; + color += a33 * interpol3.x * interpol3.y; + + gl_FragColor = color; +} diff --git a/Gem/examples/10.glsl/bicubic_interpolation.vert b/Gem/examples/10.glsl/bicubic_interpolation.vert new file mode 100644 index 0000000..c890bd7 --- /dev/null +++ b/Gem/examples/10.glsl/bicubic_interpolation.vert @@ -0,0 +1,8 @@ +// Cyrille Henry 2007 + +void main() +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_Position = ftransform(); + +} diff --git a/Gem/examples/10.glsl/blur.frag b/Gem/examples/10.glsl/blur.frag new file mode 100644 index 0000000..f54e03a --- /dev/null +++ b/Gem/examples/10.glsl/blur.frag @@ -0,0 +1,18 @@ +uniform sampler2D tex0; +uniform vec2 distance; +uniform vec2 TX; + +void main (void) +{ + + vec2 texcoord = (gl_TextureMatrix[0] * gl_TexCoord[0]).st; + vec4 sample = 0.5 * texture2D(tex0, texcoord - distance); + sample += texture2D(tex0, texcoord); + sample += 0.5 * texture2D(tex0, texcoord + distance); + + sample /= 2.; + + gl_FragColor = sample; +} + + diff --git a/Gem/examples/10.glsl/blur.vert b/Gem/examples/10.glsl/blur.vert new file mode 100644 index 0000000..0254682 --- /dev/null +++ b/Gem/examples/10.glsl/blur.vert @@ -0,0 +1,9 @@ +varying vec2 texcoord0; +void main() +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + + // perform standard transform on vertex + gl_Position = ftransform(); + +} diff --git a/Gem/examples/10.glsl/cam1.jpg b/Gem/examples/10.glsl/cam1.jpg new file mode 100644 index 0000000..c5023ba Binary files /dev/null and b/Gem/examples/10.glsl/cam1.jpg differ diff --git a/Gem/examples/10.glsl/cam2.jpg b/Gem/examples/10.glsl/cam2.jpg new file mode 100644 index 0000000..dd7ab0b Binary files /dev/null and b/Gem/examples/10.glsl/cam2.jpg differ diff --git a/Gem/examples/10.glsl/cam3.jpg b/Gem/examples/10.glsl/cam3.jpg new file mode 100644 index 0000000..76b6898 Binary files /dev/null and b/Gem/examples/10.glsl/cam3.jpg differ diff --git a/Gem/examples/10.glsl/cam4.jpg b/Gem/examples/10.glsl/cam4.jpg new file mode 100644 index 0000000..8d2c096 Binary files /dev/null and b/Gem/examples/10.glsl/cam4.jpg differ diff --git a/Gem/examples/10.glsl/fetching.frag b/Gem/examples/10.glsl/fetching.frag new file mode 100644 index 0000000..3d1af1f --- /dev/null +++ b/Gem/examples/10.glsl/fetching.frag @@ -0,0 +1,8 @@ +varying vec4 C; + +void main (void) +{ + gl_FragColor = C; +} + + diff --git a/Gem/examples/10.glsl/fetching.vert b/Gem/examples/10.glsl/fetching.vert new file mode 100644 index 0000000..b41cc16 --- /dev/null +++ b/Gem/examples/10.glsl/fetching.vert @@ -0,0 +1,15 @@ +uniform sampler2D MyTex; +varying vec4 C; +void main() +{ + vec4 v = vec4(gl_Vertex); + vec4 color = texture2D(MyTex, (gl_TextureMatrix[0] * gl_MultiTexCoord0).st); + v.z = color.r; +// v.x += (color.b-0.5)/2.; +// v.y += (color.g-0.5)/2.; + + C=color; + gl_Position = gl_ModelViewProjectionMatrix * v; + +} + diff --git a/Gem/examples/10.glsl/fetching2.frag b/Gem/examples/10.glsl/fetching2.frag new file mode 100644 index 0000000..1b576a5 --- /dev/null +++ b/Gem/examples/10.glsl/fetching2.frag @@ -0,0 +1,56 @@ +// Cyrille Henry 2008 +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect texture; +uniform float K2, K; + +vec2 pos_(vec2 V, float x, float y) +{ + V += vec2(x,y); + return(max(min(V,vec2(91.,63.)),vec2(0.))); +} + + +void main (void) +{ + vec2 pos = gl_TexCoord[0].st * vec2(90.,62.)/256. ; + + vec4 color1 = texture2DRect(texture,pos_(pos,-1./256.,-1./256.)); + vec4 color2 = texture2DRect(texture,pos_(pos, 0./256.,-1./256.)); + vec4 color3 = texture2DRect(texture,pos_(pos, 1./256.,-1./256.)); + vec4 color4 = texture2DRect(texture,pos_(pos,-1./256., 0./256.)); + vec4 color5 = texture2DRect(texture,pos_(pos, 0./256., 0./256.)); + vec4 color6 = texture2DRect(texture,pos_(pos, 1./256., 0./256.)); + vec4 color7 = texture2DRect(texture,pos_(pos,-1./256., 1./256.)); + vec4 color8 = texture2DRect(texture,pos_(pos, 0./256., 1./256.)); + vec4 color9 = texture2DRect(texture,pos_(pos, 1./256., 1./256.)); + + vec4 colorBG = color1 + color2 + color4 + color5; + vec4 colorBD = color3 + color2 + color6 + color5; + vec4 colorHG = color4 + color5 + color7 + color8; + vec4 colorHD = color5 + color6 + color8 + color9; + + vec2 fract_pos = (fract(pos)); + + vec4 XB = mix(colorBG,colorBD,fract_pos.x); + vec4 XH = mix(colorHG,colorHD,fract_pos.x); + vec4 X = mix(XB,XH,fract_pos.y) / 4.; + + X -= vec4(0.5); + X.xyz = normalize(X.xyz); + + if(gl_FrontFacing) + {X *= -1.;} + + float tmp = dot(X.xyz,normalize(vec3(0.,1.,1.))); + tmp = -tmp; + tmp = max(0.,tmp) + 0.3 * min(0.,tmp); + + tmp = 0.1 + 0.9 * tmp; + vec4 color = tmp * vec4(1,0.95,0.9,1); + color.a = smoothstep(0.75,1.,pos.x); + gl_FragColor = color; + +} + + diff --git a/Gem/examples/10.glsl/fetching2.vert b/Gem/examples/10.glsl/fetching2.vert new file mode 100644 index 0000000..01fbf0a --- /dev/null +++ b/Gem/examples/10.glsl/fetching2.vert @@ -0,0 +1,21 @@ +// Cyrille Henry 2008 +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect MyTex; +uniform float K; + +void main() +{ + vec4 v = vec4(gl_Vertex); + vec4 color = texture2DRect(MyTex, gl_MultiTexCoord0.st * vec2(91./128.,63./128.)); + + gl_TexCoord[0] = gl_MultiTexCoord0; + + v.x = color.r -0.5; + v.y = color.g -0.5; + v.z = color.b -0.5; + + gl_Position = gl_ModelViewProjectionMatrix * v; + +} + diff --git a/Gem/examples/10.glsl/game.frag b/Gem/examples/10.glsl/game.frag new file mode 100644 index 0000000..9b5800d --- /dev/null +++ b/Gem/examples/10.glsl/game.frag @@ -0,0 +1,30 @@ +// Cyrille Henry 2007 + +uniform sampler2D texture; + +const float dx = 1./500.; // change to gemwin dim + +void main (void) +{ + vec2 tmp = (gl_TextureMatrix[0] * gl_TexCoord[0]).st; + + float x = tmp.s; + float y = tmp.t; + + vec4 c; + c = texture2D(texture, vec2(x-dx, y-dx)); + c += texture2D(texture, vec2(x, y-dx)); + c += texture2D(texture, vec2(x+dx, y-dx)); + c += texture2D(texture, vec2(x-dx, y)); + c += texture2D(texture, vec2(x+dx, y)); + c += texture2D(texture, vec2(x-dx, y+dx)); + c += texture2D(texture, vec2(x, y+dx)); + c += texture2D(texture, vec2(x+dx, y+dx)); + + vec4 c1 = texture2D(texture, vec2(x, y)); + + c.rgb = vec3(step(2.5-c1.r,c.r)*step(c.r,3.5)); + c.a = 1.; + + gl_FragColor = c; +} diff --git a/Gem/examples/10.glsl/game.vert b/Gem/examples/10.glsl/game.vert new file mode 100644 index 0000000..64eb4f4 --- /dev/null +++ b/Gem/examples/10.glsl/game.vert @@ -0,0 +1,14 @@ +// Cyrille Henry 2007 + +uniform float K1; +uniform float K2; +uniform float K3; + +uniform vec2 offset; + +void main() +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_Position = ftransform(); +} + diff --git a/Gem/examples/10.glsl/geo.frag b/Gem/examples/10.glsl/geo.frag new file mode 100644 index 0000000..7ec0b43 --- /dev/null +++ b/Gem/examples/10.glsl/geo.frag @@ -0,0 +1,8 @@ +void main() +{ + vec4 tmp = gl_Color; + tmp.a /= 10.; + gl_FragColor = tmp; + // set color but alpha is 20 time less +} + diff --git a/Gem/examples/10.glsl/geo.geom b/Gem/examples/10.glsl/geo.geom new file mode 100644 index 0000000..3271c6f --- /dev/null +++ b/Gem/examples/10.glsl/geo.geom @@ -0,0 +1,28 @@ +#version 120 +#extension GL_EXT_geometry_shader4: enable + +void main(void) +{ + //increment variable + int i,j; + float rnd1,rnd2; + rnd1 = 0.0216767863321334264; // seed + rnd2 = 0.0475785688678678345; + for(j=0; j< 40; j++) + { + rnd1 = fract(124.321345312123465*rnd1) -0.5; // easy way to generated pseudo random number + rnd2 = fract(5234.43532345435245*rnd2) -0.5; + + //draw 40 time the same geometry, but with small shift in it's position + for(i=0; i< gl_VerticesIn; i++) + { + gl_FrontColor = gl_FrontColorIn[i]; + gl_TexCoord[0] = gl_TexCoordIn[i][0]; + gl_Position = gl_PositionIn[i]; // get position of the original point + gl_Position.xy += vec2(rnd1,rnd2)/3.; // add small random + // the geometry as already been transform in 2d, so we jut have to move it in X and Y + EmitVertex(); + } + EndPrimitive(); + } +} diff --git a/Gem/examples/10.glsl/geo.vert b/Gem/examples/10.glsl/geo.vert new file mode 100644 index 0000000..4359aa3 --- /dev/null +++ b/Gem/examples/10.glsl/geo.vert @@ -0,0 +1,7 @@ +void main() +{ + gl_FrontColor = gl_Color; + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_Position = ftransform(); + //simple passthrow +} diff --git a/Gem/examples/10.glsl/img1.jpg b/Gem/examples/10.glsl/img1.jpg new file mode 100644 index 0000000..8e17c8b Binary files /dev/null and b/Gem/examples/10.glsl/img1.jpg differ diff --git a/Gem/examples/10.glsl/img2.jpg b/Gem/examples/10.glsl/img2.jpg new file mode 100644 index 0000000..5934461 Binary files /dev/null and b/Gem/examples/10.glsl/img2.jpg differ diff --git a/Gem/examples/10.glsl/img3.jpg b/Gem/examples/10.glsl/img3.jpg new file mode 100644 index 0000000..edfaf1e Binary files /dev/null and b/Gem/examples/10.glsl/img3.jpg differ diff --git a/Gem/examples/10.glsl/interpol.frag b/Gem/examples/10.glsl/interpol.frag new file mode 100644 index 0000000..a3c2c08 --- /dev/null +++ b/Gem/examples/10.glsl/interpol.frag @@ -0,0 +1,13 @@ +// Cyrille Henry 2008 +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect texture_mass; +uniform float init; + +void main (void) +{ + vec2 coord = gl_TexCoord[0].st/2.; + vec4 pos = texture2DRect(texture_mass, coord); + + gl_FragColor = pos; +} diff --git a/Gem/examples/10.glsl/link.frag b/Gem/examples/10.glsl/link.frag new file mode 100644 index 0000000..053cd5e --- /dev/null +++ b/Gem/examples/10.glsl/link.frag @@ -0,0 +1,164 @@ +// Cyrille Henry 2008 +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect texture_mass, texture_mass_old, texture_normal; +uniform float init, gravite; +uniform vec2 wind; +uniform float D; +uniform float K1; // rigiditée liaison +uniform float W,f,N; // amplitude du Wind et frequence; Noise +uniform float t; //temps + +varying vec2 coord; + +vec2 test1(vec2 V) +{ +// return(max(min(V,vec2(64.)),vec2(0.))); + return(V); +} + +void main (void) +{ + vec4 force = vec4(0,1.,0.,1.); + + if ( (coord.x < 92.) && (coord.y < 64.) ) + { + vec3 dist; + float taille; + + vec4 pos = texture2DRect(texture_mass, coord );// -vec4(0.5); + vec4 pos_old = texture2DRect(texture_mass_old,coord );// -vec4(0.5); + vec4 posG = texture2DRect(texture_mass, (coord+vec2(-1., 0.)));// -vec4(0.5); + vec4 posD = texture2DRect(texture_mass, (coord+vec2( 1., 0.)));// -vec4(0.5); + vec4 posH = texture2DRect(texture_mass, (coord+vec2( 0., 1.)));// -vec4(0.5); + vec4 posB = texture2DRect(texture_mass, (coord+vec2( 0.,-1.)));// -vec4(0.5); + vec4 posHD = texture2DRect(texture_mass, (coord+vec2( 1.,-1.)));// -vec4(0.5); + vec4 posBG = texture2DRect(texture_mass, (coord+vec2(-1., 1.)));// -vec4(0.5); + vec4 posHG = texture2DRect(texture_mass, (coord+vec2( 1., 1.)));// -vec4(0.5); + vec4 posBD = texture2DRect(texture_mass, (coord+vec2(-1.,-1.)));// -vec4(0.5); + vec4 pos2G = texture2DRect(texture_mass, (coord+vec2(-2., 0.)));// -vec4(0.5); + vec4 pos2D = texture2DRect(texture_mass, (coord+vec2( 2., 0.)));// -vec4(0.5); + vec4 pos2H = texture2DRect(texture_mass, (coord+vec2( 0., 2.)));// -vec4(0.5); + vec4 pos2B = texture2DRect(texture_mass, (coord+vec2( 0.,-2.)));// -vec4(0.5); + // lecture des position des masses voisinnes + + force = pos-pos_old; + // ajout de la force d'inertie (conservation de la vitesse) + + force *= 1.-D; + // damping relatif a un point fix + // ATTENTION, c'est le seul damping du system! + + + // 4 liens direct (gauche / droite et haut / bas) + // on ajoute une force ssi la taille est > 0 + // on limite aussi ds l'espace pour ne prendre en compte que le lien valide (effet de bord) + + dist = pos.xyz - posG.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.x > 1.) ) + { force.xyz += -K1 * (taille - 1./1000.)* normalize(dist); } + + dist = pos.xyz - posD.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.x < 91.) ) + { force.xyz += -K1 * (taille - 1./1000.)* normalize(dist); } + + dist = pos.xyz - posH.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.y < 63.) ) + { force.xyz += -K1 * (taille - 1./1000.)* normalize(dist); } + + dist = pos.xyz - posB.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.y > 1.) ) + { force.xyz += -K1 * (taille - 1./1000.)* normalize(dist); } + + // 4 liens diagonaux (haut gauche, bas droite, etc) + dist = pos.xyz - posHD.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.x < 91.) && (coord.y > 1.) ) + { force.xyz += -K1 * (taille - 1.4142/1000.)* normalize(dist); } + + dist = pos.xyz - posBG.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.x > 1.) && (coord.y < 63.) ) + { force.xyz += -K1 * (taille - 1.4142/1000.)* normalize(dist); } + + dist = pos.xyz - posHG.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.x < 91.) && (coord.y < 63.) ) + { force.xyz += -K1 * (taille - 1.4142/1000.)* normalize(dist); } + + dist = pos.xyz - posBD.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.x > 1.) && (coord.y > 1.) ) + { force.xyz += -K1 * (taille - 1.4142/1000.)* normalize(dist); } + + // 4 liens double longeur (rigidité de flexion) + dist = pos.xyz - pos2G.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.x > 2.) ) + { force.xyz += -K1 * (taille - 2./1000.)* normalize(dist); } + + dist = pos.xyz - pos2D.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.x < 90.) ) + { force.xyz += -K1 * (taille - 2./1000.)* normalize(dist); } + + dist = pos.xyz - pos2H.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.y < 62.) ) + { force.xyz += -K1 * (taille - 2./1000.)* normalize(dist); } + + dist = pos.xyz - pos2B.xyz ; + taille = length(dist) ; + if ( (taille > 0.) && (coord.y > 2.) ) + { force.xyz += -K1 * (taille - 2./1000.)* normalize(dist); } + + // autres forces + vec4 normal = texture2DRect(texture_normal, coord*64.) -vec4(0.5); + normal = normalize(normal); + // float force_wind = abs(dot(normalize(vec3(wind.xy,0.)),normal.xyz)); + + force.r += wind.x/100.; + force.g += gravite/100.; + force.b += wind.y/100.; + + // ajout d'une force sinusoidal perpendiculaire a la direction du vent + float W_sin = cos(-t + f*0.01*gl_TexCoord[0].s); + W_sin *= 91.- gl_TexCoord[0].s; + W_sin /= 91.; + W_sin *= 91.- gl_TexCoord[0].s; + W_sin /= 91.; + + W_sin *= gl_TexCoord[0].t + 50.; + W_sin /= 63.; + W_sin *= gl_TexCoord[0].t + 50.; + W_sin /= 63.; + + force.x += W*(-wind.y*W_sin); + force.z += W*( wind.x*W_sin); + + // ajout d'un pseuo buit + float W_noiseX = cos(t + 0.353 * coord.t + 0.0234434* coord.s + 345.2342); + W_noiseX = cos(123456.35345 * W_noiseX + 234.23); + float W_noiseY = cos(-2.2 * t + 6235.457456 * W_noiseX + 567.456); + float W_noiseZ = cos(5.*t + 8976457.457 * W_noiseX + 3464.54); + W_noiseX = cos(323344.64345 * W_noiseX + 567.45); + + force.x += 0.00001 * N * W_noiseX; + force.y += 0.00001 * N * W_noiseY; + force.z += 0.00001 * N * W_noiseZ; + + + // preparation de la sortie + force = min(max(force,vec4(-0.5)),vec4(0.5)); + // min et max pour virer les +inf + force += vec4(0.5,0.5,0.5,1.); + // ajout de l'ofset pour etre entre 0 et 1 + force.a = 1.; + // on vire la 4eme composante au cas ou. + } + gl_FragColor = mix(force,vec4(0.5,0.5,0.5,1.),init); +} diff --git a/Gem/examples/10.glsl/link.vert b/Gem/examples/10.glsl/link.vert new file mode 100644 index 0000000..fefc366 --- /dev/null +++ b/Gem/examples/10.glsl/link.vert @@ -0,0 +1,10 @@ +varying vec2 coord; + + +void main() +{ + + coord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; + gl_Position = ftransform(); + +} diff --git a/Gem/examples/10.glsl/mass.frag b/Gem/examples/10.glsl/mass.frag new file mode 100644 index 0000000..29a2ef2 --- /dev/null +++ b/Gem/examples/10.glsl/mass.frag @@ -0,0 +1,34 @@ +// Cyrille Henry 2008 +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect texture_mass_old,texture_link; +varying vec2 coord; +uniform float init; + +void main (void) +{ + vec4 color = vec4(0.,0.,1.,1.); + if ( (coord.x < 92.) && (coord.y < 64.) ) + { + vec4 pos = texture2DRect(texture_mass_old, coord)-vec4(0.5); + vec4 force = texture2DRect(texture_link, coord)-vec4(0.5); + + force = min(max(force,vec4(-0.5)),vec4(0.5)); + // on vire les +inf et -inf qui peuvent poser pb en cas d'instabilités + pos += force; + //increment de la position + + float reset = step(coord.x,1.); +// reset *= step(mod(coord.y,10.),4.); + // les point en x<1 sont tjrs reseté : ils sont dc imobiles + + color = mix(pos,vec4(coord.x/1000.,(coord.y-32.)/1000.,0.,0.),reset+(1.-reset)*init); + // couleur de sortie mixé avec couleur d'initialisation + + color += vec4(0.5); + color.a = 1.; + // preparation de la sortie (ajout de l'offset + virer l'alpha) + } + + gl_FragColor = color; +} diff --git a/Gem/examples/10.glsl/mass.vert b/Gem/examples/10.glsl/mass.vert new file mode 100644 index 0000000..fefc366 --- /dev/null +++ b/Gem/examples/10.glsl/mass.vert @@ -0,0 +1,10 @@ +varying vec2 coord; + + +void main() +{ + + coord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; + gl_Position = ftransform(); + +} diff --git a/Gem/examples/10.glsl/multitexture.frag b/Gem/examples/10.glsl/multitexture.frag new file mode 100644 index 0000000..9e8ed0c --- /dev/null +++ b/Gem/examples/10.glsl/multitexture.frag @@ -0,0 +1,13 @@ +uniform sampler2D MyTex; +uniform sampler2D MyTex1; + +varying vec2 texcoord1; +varying vec2 texcoord2; + +void main (void) +{ + vec4 color = texture2D(MyTex, texcoord1); + vec4 color2 = texture2D(MyTex1, texcoord2); + gl_FragColor = (color + color2) / 2.; +} + diff --git a/Gem/examples/10.glsl/multitexture.vert b/Gem/examples/10.glsl/multitexture.vert new file mode 100644 index 0000000..2cade19 --- /dev/null +++ b/Gem/examples/10.glsl/multitexture.vert @@ -0,0 +1,11 @@ +varying vec2 texcoord1; +varying vec2 texcoord2; + +void main() +{ + + texcoord1 = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; + texcoord2 = (gl_TextureMatrix[1] * gl_MultiTexCoord1).st; + gl_Position = ftransform(); + +} diff --git a/Gem/examples/10.glsl/multitexture_rect.frag b/Gem/examples/10.glsl/multitexture_rect.frag new file mode 100644 index 0000000..3eb9b2b --- /dev/null +++ b/Gem/examples/10.glsl/multitexture_rect.frag @@ -0,0 +1,15 @@ +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect MyTex; +uniform sampler2DRect MyTex1; + +varying vec2 texcoord1; +varying vec2 texcoord2; + +void main (void) +{ + vec4 color = texture2DRect(MyTex, texcoord1); + vec4 color2 = texture2DRect(MyTex1, texcoord1); // texcoord2 does not work. + gl_FragColor = (color + color2) / 2.; +} + diff --git a/Gem/examples/10.glsl/multitexture_rect.vert b/Gem/examples/10.glsl/multitexture_rect.vert new file mode 100644 index 0000000..2cade19 --- /dev/null +++ b/Gem/examples/10.glsl/multitexture_rect.vert @@ -0,0 +1,11 @@ +varying vec2 texcoord1; +varying vec2 texcoord2; + +void main() +{ + + texcoord1 = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; + texcoord2 = (gl_TextureMatrix[1] * gl_MultiTexCoord1).st; + gl_Position = ftransform(); + +} diff --git a/Gem/examples/10.glsl/normal.frag b/Gem/examples/10.glsl/normal.frag new file mode 100644 index 0000000..eef7f86 --- /dev/null +++ b/Gem/examples/10.glsl/normal.frag @@ -0,0 +1,37 @@ +// Cyrille Henry 2008 +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect texture_mass; +varying vec2 coord; + +vec2 test1(vec2 V) +{ + return(max(min(V,vec2(91.,63.)),vec2(0.))); +} + +void main (void) +{ + vec4 color = vec4(1.,0.,0.,1.); + + if ( (coord.x < 91.) && (coord.y < 63.) ) + { + vec4 posG = texture2DRect(texture_mass, test1(coord+vec2(-1., 0.))) ; + vec4 posD = texture2DRect(texture_mass, test1(coord+vec2( 1., 0.))) ; + vec4 posH = texture2DRect(texture_mass, test1(coord+vec2( 0.,-1.))) ; + vec4 posB = texture2DRect(texture_mass, test1(coord+vec2( 0., 1.))) ; + + vec3 normal = cross((posG.xyz-posD.xyz),(posH.xyz-posB.xyz)); + color.xyz = normalize(normal); + color.xyz = normal; + + vec3 DX = posG.xyz-posD.xyz; + vec3 DY = posH.xyz-posB.xyz; + + color += vec4(1.); + color *= 0.5; + + } + color.a = 1.; + gl_FragColor = color; + +} diff --git a/Gem/examples/10.glsl/normal.vert b/Gem/examples/10.glsl/normal.vert new file mode 100644 index 0000000..fefc366 --- /dev/null +++ b/Gem/examples/10.glsl/normal.vert @@ -0,0 +1,10 @@ +varying vec2 coord; + + +void main() +{ + + coord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st; + gl_Position = ftransform(); + +} diff --git a/Gem/examples/10.glsl/panoramique.frag b/Gem/examples/10.glsl/panoramique.frag new file mode 100644 index 0000000..d0378b6 --- /dev/null +++ b/Gem/examples/10.glsl/panoramique.frag @@ -0,0 +1,28 @@ +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2DRect MyTex; +uniform float dZ, ShadeL, ShadeR, sizeX, sizeY; + +void main (void) +{ + + vec2 pos_out; + pos_out.x=-1.+(2.*gl_TexCoord[0].s)/sizeX; + pos_out.y=-1.+(2.*gl_TexCoord[0].t)/sizeY; + pos_out.y *= sqrt(pos_out.x*pos_out.x+dZ*dZ)/dZ; + + pos_out.x = sizeX*(pos_out.x+1.)/2.; + pos_out.y = sizeY*(pos_out.y+1.)/2.; + + vec4 color = texture2DRect(MyTex, pos_out); + + color.a = 1.; + float tmp = mix(0.,1.,gl_TexCoord[0].s/ShadeL); + tmp = min(tmp,1.); + color.a *= tmp; + tmp = mix(0.,1.,(sizeX-gl_TexCoord[0].s)/ShadeR); + tmp = min(tmp,1.); + color.a *= tmp; + + gl_FragColor = color; +} diff --git a/Gem/examples/10.glsl/panoramique.vert b/Gem/examples/10.glsl/panoramique.vert new file mode 100644 index 0000000..5fcb9d8 --- /dev/null +++ b/Gem/examples/10.glsl/panoramique.vert @@ -0,0 +1,5 @@ +void main() +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; +} diff --git a/Gem/examples/10.glsl/single_blur.pd b/Gem/examples/10.glsl/single_blur.pd new file mode 100644 index 0000000..76088b7 --- /dev/null +++ b/Gem/examples/10.glsl/single_blur.pd @@ -0,0 +1,55 @@ +#N canvas 310 229 681 595 10; +#X obj 99 59 inlet; +#X obj 26 145 gemframebuffer; +#X obj 26 215 translateXYZ 0 0 -4; +#X obj 26 285 pix_texture; +#X obj 26 305 square 4; +#X msg 43 264 quality 1 \, rectangle 0; +#X obj 43 243 loadbang; +#X obj 128 431 outlet; +#X obj 26 195 _glsl blur; +#X obj 47 166 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 248 85 t f f; +#X obj 248 17 r blur; +#X obj 248 133 pack f f; +#X obj 26 85 gemhead \$1; +#X obj 248 112 * \$2; +#X obj 301 111 * \$3; +#X msg 248 153 distance \$1 \$2; +#X obj 42 119 r to_fb; +#X obj 248 39 route float; +#X obj 322 61 unpack f f; +#X obj 441 18 r motion_blur; +#X obj 441 90 pack f f; +#X obj 441 65 * \$2; +#X obj 441 41 unpack f f; +#X obj 508 65 * \$2; +#X connect 0 0 3 1; +#X connect 1 0 8 0; +#X connect 1 1 7 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 5 0 3 0; +#X connect 6 0 5 0; +#X connect 8 0 2 0; +#X connect 9 0 8 0; +#X connect 10 0 14 0; +#X connect 10 1 15 0; +#X connect 11 0 18 0; +#X connect 12 0 16 0; +#X connect 13 0 1 0; +#X connect 14 0 12 0; +#X connect 15 0 12 1; +#X connect 16 0 8 1; +#X connect 17 0 1 0; +#X connect 18 0 10 0; +#X connect 18 1 19 0; +#X connect 19 0 14 0; +#X connect 19 1 15 0; +#X connect 20 0 23 0; +#X connect 21 0 16 0; +#X connect 22 0 21 0; +#X connect 23 0 22 0; +#X connect 23 1 24 0; +#X connect 24 0 21 1; diff --git a/Gem/examples/10.glsl/texture.frag b/Gem/examples/10.glsl/texture.frag new file mode 100644 index 0000000..aaee824 --- /dev/null +++ b/Gem/examples/10.glsl/texture.frag @@ -0,0 +1,16 @@ +// Cyrille Henry 2007 + +//#extension GL_ARB_texture_rectangle : enable +//uniform sampler2DRect MyTex; +uniform sampler2D MyTex; +uniform float B,C; + +void main (void) +{ + vec4 color = texture2D(MyTex, (gl_TextureMatrix[0] * gl_TexCoord[0]).st); + + color *= B+1.; // brightness + vec4 gray = vec4(dot(color.rgb,vec3(0.2125, 0.7154, 0.0721))); + color = mix(gray, color, C+1.); // contrast + gl_FragColor = color; +} diff --git a/Gem/examples/10.glsl/texture.vert b/Gem/examples/10.glsl/texture.vert new file mode 100644 index 0000000..bda9f47 --- /dev/null +++ b/Gem/examples/10.glsl/texture.vert @@ -0,0 +1,8 @@ +// Cyrille Henry 2007 + +void main() +{ + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + +} diff --git a/Gem/examples/10.glsl/texture_rect.frag b/Gem/examples/10.glsl/texture_rect.frag new file mode 100644 index 0000000..98adc1f --- /dev/null +++ b/Gem/examples/10.glsl/texture_rect.frag @@ -0,0 +1,16 @@ +// Cyrille Henry 2007 + +#extension GL_ARB_texture_rectangle : enable +uniform sampler2DRect MyTex; +//uniform sampler2D MyTex; +uniform float B,C; + +void main (void) +{ + vec4 color = texture2DRect(MyTex, (gl_TextureMatrix[0] * gl_TexCoord[0]).st); + + color *= B+1.; // brightness + vec4 gray = vec4(dot(color.rgb,vec3(0.2125, 0.7154, 0.0721))); + color = mix(gray, color, C+1.); // contrast + gl_FragColor = color; +} diff --git a/Gem/examples/10.glsl/tri2fan.frag b/Gem/examples/10.glsl/tri2fan.frag new file mode 100644 index 0000000..391dc68 --- /dev/null +++ b/Gem/examples/10.glsl/tri2fan.frag @@ -0,0 +1,6 @@ +void main() +{ + gl_FragColor = vec4(1.0,1.0,1.0,0.1); + // set color +} + diff --git a/Gem/examples/10.glsl/tri2fan.geom b/Gem/examples/10.glsl/tri2fan.geom new file mode 100644 index 0000000..45961e2 --- /dev/null +++ b/Gem/examples/10.glsl/tri2fan.geom @@ -0,0 +1,51 @@ +// Cyrille Henry 2010 + +#version 120 +#extension GL_EXT_geometry_shader4 : enable + +void main(void) +{ + + int i; //increment variable + vec4 pos1,pos2, pos3, pos4, pos5; // tmp + vec3 high; + + for(i=0; i< gl_VerticesIn; i += 3){ // for all triangles + pos1 = gl_PositionIn[i]; + pos2 = gl_PositionIn[i+1]; + pos3 = gl_PositionIn[i+2]; + pos4 = (pos1 + pos2 + pos3) / 3.; // center of the triangle + + high = 10.*cross(pos2.xyz-pos1.xyz,pos3.xyz-pos2.xyz); + // hight and orientation of the piramide + + high = normalize(high); + high *= length(pos2-pos1); + pos5 = pos4 ; + pos5.xyz += high; + + gl_Position = gl_ModelViewProjectionMatrix * pos1; + EmitVertex(); + gl_Position = gl_ModelViewProjectionMatrix * pos4; + EmitVertex(); + gl_Position = gl_ModelViewProjectionMatrix * pos5; + EmitVertex(); + gl_Position = gl_ModelViewProjectionMatrix * pos2; + EmitVertex(); + gl_Position = gl_ModelViewProjectionMatrix * pos4; + EmitVertex(); + gl_Position = gl_ModelViewProjectionMatrix * pos5; + EmitVertex(); + gl_Position = gl_ModelViewProjectionMatrix * pos3; + EmitVertex(); + gl_Position = gl_ModelViewProjectionMatrix * pos4; + EmitVertex(); + gl_Position = gl_ModelViewProjectionMatrix * pos5; + EmitVertex(); + + EndPrimitive(); + // new primitive + } + +} + diff --git a/Gem/examples/10.glsl/tri2fan.vert b/Gem/examples/10.glsl/tri2fan.vert new file mode 100644 index 0000000..2d22ff2 --- /dev/null +++ b/Gem/examples/10.glsl/tri2fan.vert @@ -0,0 +1,6 @@ +void main() +{ + gl_Position = gl_Vertex; +} + + diff --git a/Gem/examples/10.glsl/vague.frag b/Gem/examples/10.glsl/vague.frag new file mode 100644 index 0000000..7b6a2f3 --- /dev/null +++ b/Gem/examples/10.glsl/vague.frag @@ -0,0 +1,23 @@ +// Cyrille Henry 2007 + +#extension GL_ARB_texture_rectangle : enable + +uniform float K; +uniform sampler2DRect texture, texture1, texture2; + +const float dx = 1.; +const float dy = 1.; +const float dp = 1.; + +void main (void) +{ + float light; + vec2 position = gl_TexCoord[0].st; + vec4 C, C1; + C = texture2DRect(texture2, position) ; + + vec4 color2 = texture2DRect(texture1, (position+K*C.rg)); + + gl_FragColor = color2; + +} diff --git a/Gem/examples/10.glsl/wave.frag b/Gem/examples/10.glsl/wave.frag new file mode 100644 index 0000000..d455f88 --- /dev/null +++ b/Gem/examples/10.glsl/wave.frag @@ -0,0 +1,40 @@ +// Cyrille Henry 2007 + +#extension GL_ARB_texture_rectangle : enable + +uniform float K1,K3,D1,K; +uniform sampler2DRect text; + +const float dx = 1.; +const float dy = 1.; + +void main (void) +{ + float x,y; + vec4 C; + vec2 texture1 = gl_TexCoord[0].st ; + + x=texture1.x; + y=texture1.y; + + C = texture2DRect(text, vec2(x, y)); + + vec4 color_cote = texture2DRect(text, vec2(x-dx, y-dy)); + color_cote += texture2DRect(text, vec2(x+dx, y-dy)); + color_cote += texture2DRect(text, vec2(x-dx, y+dy)); + color_cote += texture2DRect(text, vec2(x+dx, y+dy)); + color_cote += texture2DRect(text, vec2(x, y-dy)); + color_cote += texture2DRect(text, vec2(x-dx, y)); + color_cote += texture2DRect(text, vec2(x+dx, y)); + color_cote += texture2DRect(text, vec2(x, y+dy)); + + + float K = K1 * color_cote.r + K3 * 0.5 - (8. * K1 + K3) * C.r; + float D = D1 * (C.r - C.g); + + C.b = C.g; + C.g = C.r; + C.r = (2.* C.g) - C.b + K - D ; + + gl_FragColor = vec4(C.rgb,1.); +} -- cgit v1.2.1