hello,
i finally have a patch that use the stencil buffer (to create a mask). nothing very impressive, but i send it here for the record.
cyrille
#N canvas 576 30 849 894 10; #X obj 39 330 GEMglEnable; #X floatatom 125 332 5 0 0 0 - - -; #X obj 111 282 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 111 305 GLdefine GL_STENCIL_TEST; #X obj 129 280 loadbang; #X obj 104 382 GLdefine GL_STENCIL_BUFFER_BIT; #X obj 166 361 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X floatatom 119 407 5 0 0 0 - - -; #X obj 104 359 loadbang; #X obj 39 249 GEMglClearStencil 0; #X obj 39 407 GEMglClear; #X obj 39 33 gemhead 45; #X obj 39 506 GEMglStencilFunc; #X msg 146 480 1; #X obj 75 436 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 74 459 GLdefine GL_ALWAYS; #X obj 96 436 loadbang; #X floatatom 100 480 5 0 0 0 - - -; #X obj 39 579 GEMglStencilOp; #X floatatom 149 582 5 0 0 0 - - -; #X obj 70 486 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 70 552 GLdefine GL_REPLACE; #X obj 95 530 loadbang; #X obj 230 723 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 161 722 loadbang; #X obj 39 790 GEMglClear; #X floatatom 157 791 5 0 0 0 - - -; #X obj 133 768 GLdefine GL_DEPTH_BUFFER_BIT; #X obj 117 723 t b b; #X obj 490 287 GEMglStencilFunc; #X msg 597 263 1; #X obj 525 220 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 546 218 loadbang; #X floatatom 535 264 5 0 0 0 - - -; #X obj 525 241 GLdefine GL_NOTEQUAL; #X obj 490 396 color 1 0 0; #X obj 490 659 GEMglStencilFunc; #X msg 597 634 1; #X obj 525 594 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 547 592 loadbang; #X floatatom 536 638 5 0 0 0 - - -; #X obj 490 709 rotateXYZ 0 0 45; #X obj 525 615 GLdefine GL_EQUAL; #X obj 490 685 color 1 1 0; #X obj 117 746 GLdefine GL_COLOR_BUFFER_BIT; #X obj 490 365 GEMglStencilOp; #X floatatom 601 364 5 0 0 0 - - -; #X obj 521 310 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 544 307 loadbang; #X obj 521 331 GLdefine GL_KEEP; #X floatatom 58 115 5 0 0 0 - - -; #X floatatom 97 115 5 0 0 0 - - -; #X obj 39 167 colorRGB 0 0 1; #X obj 117 789 |; #X floatatom 587 810 5 0 0 0 - - -; #X obj 569 762 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 569 785 GLdefine GL_STENCIL_TEST; #X obj 587 760 loadbang; #X obj 490 810 GEMglDisable; #X text 67 212 allow , clear and configure stencil buffer; #X obj 39 655 circle 1.5; #X obj 490 734 sphere 1.2 25; #X text 121 655 draw in all buffer; #X text 104 820 clear color and depth buffer; #X text 488 189 draw where the stencil buffer is not 1; #X obj 490 423 square 3; #X text 522 565 draw where the stencil buffer is 1; #X msg 365 41 0 , destroy; #X obj 529 21 gemhead 10; #X floatatom 562 41 5 0 0 0 - - -; #X floatatom 602 41 5 0 0 0 - - -; #X floatatom 642 41 5 0 0 0 - - -; #X obj 529 87 world_light; #X obj 529 62 rotateXYZ 0 0 0; #X msg 356 22 lighting 1 , create , 1; #X obj 356 66 gemwin; #X obj 39 138 rotateXYZ; #X text 151 115 <- play with this.; #X connect 0 0 10 0; #X connect 2 0 3 0; #X connect 3 0 1 0; #X connect 3 0 0 1; #X connect 4 0 3 0; #X connect 5 0 7 0; #X connect 5 0 10 1; #X connect 6 0 5 0; #X connect 8 0 5 0; #X connect 9 0 0 0; #X connect 10 0 12 0; #X connect 11 0 76 0; #X connect 12 0 18 0; #X connect 13 0 12 3; #X connect 13 0 12 2; #X connect 14 0 15 0; #X connect 14 0 13 0; #X connect 15 0 12 1; #X connect 15 0 17 0; #X connect 16 0 13 0; #X connect 16 0 15 0; #X connect 18 0 60 0; #X connect 20 0 21 0; #X connect 21 0 19 0; #X connect 21 0 18 1; #X connect 21 0 18 2; #X connect 21 0 18 3; #X connect 22 0 20 0; #X connect 23 0 28 0; #X connect 24 0 28 0; #X connect 25 0 29 0; #X connect 27 0 53 1; #X connect 28 0 44 0; #X connect 28 1 27 0; #X connect 29 0 45 0; #X connect 30 0 29 3; #X connect 30 0 29 2; #X connect 31 0 34 0; #X connect 32 0 30 0; #X connect 32 0 34 0; #X connect 34 0 29 1; #X connect 34 0 33 0; #X connect 35 0 65 0; #X connect 36 0 43 0; #X connect 37 0 36 3; #X connect 37 0 36 2; #X connect 38 0 42 0; #X connect 39 0 37 0; #X connect 39 0 42 0; #X connect 41 0 61 0; #X connect 42 0 36 1; #X connect 42 0 40 0; #X connect 43 0 41 0; #X connect 44 0 53 0; #X connect 45 0 35 0; #X connect 47 0 49 0; #X connect 48 0 47 0; #X connect 49 0 46 0; #X connect 49 0 45 1; #X connect 49 0 45 2; #X connect 49 0 45 3; #X connect 50 0 76 1; #X connect 51 0 76 2; #X connect 52 0 9 0; #X connect 53 0 26 0; #X connect 53 0 25 1; #X connect 55 0 56 0; #X connect 56 0 54 0; #X connect 56 0 58 1; #X connect 57 0 56 0; #X connect 60 0 25 0; #X connect 61 0 58 0; #X connect 65 0 36 0; #X connect 67 0 75 0; #X connect 68 0 73 0; #X connect 69 0 73 1; #X connect 70 0 73 2; #X connect 71 0 73 3; #X connect 73 0 72 0; #X connect 74 0 75 0; #X connect 76 0 52 0;
IOhannes m zmoelnig a écrit :
cyrille henry wrote:
hello,
i finally have a patch that use the stencil buffer (to create a mask). nothing very impressive, but i send it here for the record.
thanks. i have checked it into the openGL examples (if you don't mind)
no problem.
if you feel adding exemple to gem, i can offer this patchs :
gem_oscillo : questions about oscillo with gem comes offen on the list. clip_plane : how to use GEMglClipPlane motion_blur : a "clean" version of the patch send on this list. and the patch i made for the graz conference : how to use repeat, any etc.
cyrille
mf.adr IOhannes
#N canvas 845 583 450 300 10; #N canvas 428 247 645 555 osc~ 0; #X obj 82 14 block~ 512; #X obj 82 67 pack~; #X obj 82 42 inlet~; #X text 171 15 change block size; #X text 137 67 pack 512 audio value in a list; #X obj 131 360 zl slice 2; #X obj 66 160 t a b; #X msg 126 205 0; #X obj 96 229 f; #X obj 66 184 repeat 511; #X obj 112 254 + 1; #X obj 161 406 unpack f f; #X obj 20 524 curve 2; #X obj 66 137 l; #X obj 20 418 any; #X obj 66 205 t a b; #X obj 131 383 t b a; #X obj 6 79 gemhead; #X obj 66 339 zl slice 0; #X obj 212 427 / 64; #X obj 212 449 - 4; #X obj 292 427 / 64; #X obj 292 449 - 4; #X msg 161 491 $2 $1 0; #X obj 241 470 pack f f; #X obj 161 469 pack f f; #X msg 241 493 $2 $1 0; #X text 140 42 audio input; #X text 96 94 wait for the gem rendering images (to comput position only when a frame is rendered : (you can change gem framerate...); #X text 162 175 repeat as many time as element in the list (as to be change if you change the block~ ); #X text 155 240 where are we in this list; #X text 222 347 get only 2 elements in this list to the good position ; #X text 238 381 render a line for each elements; #X text 348 439 compute the position of the line; #X obj 6 103 t b a; #X connect 1 0 13 1; #X connect 2 0 1 0; #X connect 5 0 16 0; #X connect 6 0 9 0; #X connect 6 1 7 0; #X connect 7 0 8 1; #X connect 8 0 10 0; #X connect 8 0 18 1; #X connect 8 0 19 0; #X connect 9 0 15 0; #X connect 10 0 8 1; #X connect 10 0 21 0; #X connect 11 0 25 0; #X connect 11 1 24 0; #X connect 13 0 6 0; #X connect 14 0 12 0; #X connect 15 0 18 0; #X connect 15 1 8 0; #X connect 16 0 14 0; #X connect 16 1 11 0; #X connect 17 0 34 0; #X connect 18 1 5 0; #X connect 19 0 20 0; #X connect 20 0 25 1; #X connect 21 0 22 0; #X connect 22 0 24 1; #X connect 23 0 12 1; #X connect 24 0 26 0; #X connect 25 0 23 0; #X connect 26 0 12 2; #X connect 34 0 13 0; #X connect 34 1 14 1; #X restore 138 152 pd osc~; #X obj 137 120 osc~ 333; #X msg 218 121 reset , create , 1; #X msg 224 143 0 , destroy; #X floatatom 137 97 5 0 0 0 - - -; #X obj 218 165 gemwin 60; #X msg 216 83 ; pd dsp 1 ;; #X obj 80 97 noise~; #X obj 80 120 *~ 0.1; #X connect 1 0 0 0; #X connect 2 0 5 0; #X connect 3 0 5 0; #X connect 4 0 1 0; #X connect 7 0 8 0;
#N canvas 0 0 643 505 10; #X obj 155 216 GEMglClipPlane; #X obj 202 47 loadbang; #X obj 155 149 gemhead; #X obj 202 82 GLdefine GL_CLIP_PLANE1; #X obj 155 242 GEMglEnable; #X obj 23 109 gemwin; #X obj 265 49 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 23 46 lighting 1 , create , 1; #X msg 45 84 0 , destroy; #X obj 23 158 gemhead; #X obj 23 181 world_light; #X msg 248 154 -1 -1 -1 0; #X obj 569 155 gemhead 55; #X obj 155 338 GEMglDisable; #X msg 266 124 0 0 -1 0; #X obj 155 289 rotateXYZ; #X floatatom 174 268 5 0 0 0 - - -; #X obj 155 189 rotateXYZ; #X floatatom 174 168 5 0 0 0 - - -; #X obj 155 311 sphere 1 5; #X obj 569 183 sphere 0.5 30; #X obj 361 215 GEMglClipPlane; #X obj 408 46 loadbang; #X obj 361 148 gemhead; #X obj 361 241 GEMglEnable; #X obj 471 48 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 361 337 GEMglDisable; #X msg 472 123 0 0 -1 0; #X obj 361 288 rotateXYZ; #X floatatom 380 267 5 0 0 0 - - -; #X obj 361 188 rotateXYZ; #X floatatom 380 167 5 0 0 0 - - -; #X obj 408 81 GLdefine GL_CLIP_PLANE2; #X msg 454 153 1 1 -1 0; #X obj 361 310 cube 1.5; #X floatatom 426 170 5 0 0 0 - - -; #X floatatom 439 263 5 0 0 0 - - -; #X connect 0 0 4 0; #X connect 1 0 3 0; #X connect 1 0 11 0; #X connect 2 0 17 0; #X connect 3 0 0 1; #X connect 3 0 4 1; #X connect 3 0 13 1; #X connect 4 0 15 0; #X connect 6 0 3 0; #X connect 7 0 5 0; #X connect 8 0 5 0; #X connect 9 0 10 0; #X connect 11 0 0 2; #X connect 12 0 20 0; #X connect 14 0 0 2; #X connect 15 0 19 0; #X connect 16 0 15 1; #X connect 17 0 0 0; #X connect 18 0 17 1; #X connect 19 0 13 0; #X connect 21 0 24 0; #X connect 22 0 33 0; #X connect 22 0 32 0; #X connect 23 0 30 0; #X connect 24 0 28 0; #X connect 25 0 32 0; #X connect 27 0 21 2; #X connect 28 0 34 0; #X connect 29 0 28 1; #X connect 30 0 21 0; #X connect 31 0 30 1; #X connect 32 0 21 1; #X connect 32 0 24 1; #X connect 32 0 26 1; #X connect 33 0 21 2; #X connect 34 0 26 0; #X connect 35 0 30 2; #X connect 36 0 28 2;
#N canvas 417 23 739 849 10; #X obj 33 217 gemhead; #X obj 33 497 translateXYZ; #X obj 33 543 rotateXYZ; #X obj 519 248 gemhead; #X obj 158 250 line; #X msg 173 226 0 , 360 5000; #X obj 173 274 sel 360; #N canvas 245 99 680 638 iniciar 0; #X msg 318 132 reset; #X msg 234 281 create; #X obj 218 77 inlet; #X obj 218 107 t b b b b b b b; #X msg 218 313 1; #X obj 233 408 outlet; #X msg 268 212 buffer 1; #X msg 251 244 lighting 1; #X msg 301 156 title FERRARI; #X msg 284 184 dimen 320 240; #X connect 0 0 5 0; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 1 1 0; #X connect 3 2 7 0; #X connect 3 3 6 0; #X connect 3 4 9 0; #X connect 3 5 8 0; #X connect 3 6 0 0; #X connect 4 0 5 0; #X connect 6 0 5 0; #X connect 7 0 5 0; #X connect 8 0 5 0; #X connect 9 0 5 0; #X restore 514 87 pd iniciar; #X msg 514 59 bang; #X msg 523 112 destroy; #X obj 33 51 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 ; #X floatatom 112 479 5 0 0 0 - - -; #X floatatom 598 370 5 0 0 0 - - -; #X floatatom 545 338 5 0 0 0 - - -; #X floatatom 571 354 5 0 0 0 - - -; #X obj 519 309 rotateXYZ; #X obj 519 394 translateXYZ; #X obj 519 446 world_light; #X obj 33 385 colorRGB; #X obj 45 305 / 360; #X obj 58 330 expr 1-$f1; #X msg 634 422 1 1 1; #X msg 543 421 debug 1; #X obj 33 585 GEMglClearDepth; #X obj 33 667 GEMglClear; #X obj 98 640 GLdefine GL_DEPTH_BUFFER_BIT; #X obj 33 697 rectangle 1.33 1; #X obj 33 69 metro 20; #X msg 98 612 bang; #X msg 112 460 1; #X msg 613 344 2; #X floatatom 557 285 5 0 0 0 - - -; #X obj 351 266 random 6; #X obj 351 294 - 3; #X obj 277 367 line; #X obj 277 319 t f b; #X obj 351 365 line; #X obj 351 317 t f b; #X obj 277 219 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; #X obj 277 265 random 8; #X obj 277 293 - 4; #X obj 634 307 loadbang; #X text 553 60 begin now; #X floatatom 87 353 5 0 0 0 - - -; #X obj 33 239 alpha; #X obj 277 239 metro 1000; #X msg 300 344 1000; #X msg 379 342 1000; #X obj 523 622 gemhead -1; #X obj 523 647 alpha; #X obj 523 699 rectangle 5.33 4; #X floatatom 644 652 5 0 0 0 - - -; #X obj 523 673 colorRGB 0 0 0 0.1; #X msg 133 565 2; #X obj 514 138 gemwin 60; #X obj 277 197 loadbang; #X obj 112 440 loadbang; #X obj 133 543 loadbang; #X obj 173 203 loadbang; #X obj 33 30 loadbang; #X obj 33 92 s metro; #X obj 33 195 r metro; #X obj 523 600 r metro; #X obj 519 226 r metro; #X connect 0 0 44 0; #X connect 1 0 2 0; #X connect 2 0 23 0; #X connect 3 0 15 0; #X connect 4 0 6 0; #X connect 4 0 2 3; #X connect 4 0 2 1; #X connect 4 0 2 2; #X connect 4 0 19 0; #X connect 5 0 4 0; #X connect 6 0 5 0; #X connect 7 0 54 0; #X connect 8 0 7 0; #X connect 9 0 54 0; #X connect 10 0 27 0; #X connect 11 0 1 3; #X connect 12 0 16 3; #X connect 13 0 16 1; #X connect 14 0 16 2; #X connect 15 0 16 0; #X connect 16 0 17 0; #X connect 18 0 1 0; #X connect 19 0 18 1; #X connect 19 0 20 0; #X connect 20 0 18 2; #X connect 21 0 17 1; #X connect 22 0 17 0; #X connect 23 0 24 0; #X connect 24 0 26 0; #X connect 25 0 24 1; #X connect 27 0 60 0; #X connect 28 0 25 0; #X connect 29 0 11 0; #X connect 30 0 12 0; #X connect 31 0 15 2; #X connect 32 0 33 0; #X connect 33 0 37 0; #X connect 34 0 1 1; #X connect 35 0 34 0; #X connect 35 1 46 0; #X connect 36 0 1 2; #X connect 37 0 36 0; #X connect 37 1 47 0; #X connect 38 0 45 0; #X connect 39 0 40 0; #X connect 40 0 35 0; #X connect 41 0 30 0; #X connect 41 0 21 0; #X connect 43 0 18 3; #X connect 44 0 18 0; #X connect 45 0 32 0; #X connect 45 0 39 0; #X connect 46 0 34 1; #X connect 47 0 36 1; #X connect 48 0 49 0; #X connect 49 0 52 0; #X connect 51 0 52 4; #X connect 52 0 50 0; #X connect 53 0 23 1; #X connect 55 0 38 0; #X connect 56 0 29 0; #X connect 57 0 53 0; #X connect 57 0 28 0; #X connect 58 0 5 0; #X connect 59 0 10 0; #X connect 61 0 0 0; #X connect 62 0 48 0; #X connect 63 0 3 0;