#N canvas 434 22 794 756 10; #X declare -path . -path .. -path data -path ../data -path ev-in -path ../ev-in -path ev-main -path ../ev-main -path ev-pano -path ../ev-pano -path ev-pro -path ../ev-pro -path libs/gil -path ../libs/gil -path libs/kollabs -path ../libs/kollabs -path media -path ../media -path ev-glsl -path ../ev-glsl -lib Gem; #X obj 6 164 cnv 15 380 750 empty empty Two-pass_Gaussian_Blur 20 12 0 14 -262130 -66577 0; #X obj 36 236 cnv 15 340 340 empty empty Horizontal_blur 20 12 0 14 -261682 -66577 0; #X obj 13 586 cnv 15 340 320 empty empty Vertical_blur 20 12 0 14 -261682 -66577 0; #X obj 6 26 cnv 15 700 16 empty empty exmple:_OpenGL_Shaders 2 8 0 14 -99865 -262144 0; #X text 403 871 (c)2012 Marian Weger \; part of EXTENDEDVIEW toolkit/ gpl v3; #X obj 396 353 cnv 15 310 330 empty empty controls_for_shader 20 12 0 14 -204800 -66577 0; #X obj 95 352 loadbang; #X obj 73 353 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 45 416 pix_image; #X text 427 490 These controls are only for the; #X text 429 536 Other shaders might need; #X text 429 549 different controls.; #X obj 6 52 cnv 15 700 100 empty empty description 5 12 0 12 -261234 -66577 0; #X obj 396 224 cnv 15 310 120 empty empty Create_Gem_Window 20 12 0 14 -204786 -66577 0; #X obj 417 319 gemwin 20; #X msg 453 295 0 \, destroy; #X msg 417 269 dimen 800 600 \, color 0.5 0.5 0.5 \, create \, 1; #X text 460 251 CLICK HERE TO START:; #X obj 476 194 ../ev-main/ev_declare; #X obj 18 211 t a a; #X obj 413 381 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144 -1 -1 7200 1; #X text 427 503 "gaussian_blur" shader \, loaded; #X text 429 516 in this example.; #X obj 410 650 t a; #X obj 396 700 cnv 15 310 160 empty empty Resulting_Image 20 12 0 14 -232576 -66577 0; #X text 437 169 set pathes to the needed abstractions; #X text 9 79 This example shows \, how OpenGL Shaders are implemented with Extended View Toolkit.; #X text 436 72 See [ev_glsl-help] for more information (./ev-glsl/ev_glsl-help.pd). ; #X msg 73 380 open media/cam2.jpg; #X text 57 489 apply the "gaussian_blur_horizontal" shader \, that is specified by 1st creation argument.; #X text 31 820 apply the "gaussian_blur_vertical" shader \, that is specified by 1st creation argument.; #X obj 497 776 r /ev/buf/vertical/texture_id; #X text 118 215 should use the same settings.; #X text 9 109 Here \, the implementation of a 2-pass gaussian blur is shown. It consists of two indidual shaders \, that are computed one after another.; #X text 153 695 The result of buffer 1 (horizontal) \; is used in buffer 2 (vertical); #X text 487 727 The result of buffer 2 (vertical) \; containing the final blurred image \; is rendered onto a rectangle.; #X text 430 432 both \, "gaussian_blur_horizontal" and "gaussian_blur_vertical" \; use the same control variable "blur_size".; #X text 123 408 load image; #X obj 416 741 gemhead 49; #X obj 18 189 gemhead 48; #X text 118 201 both [ev_buf] ("horizontal" and "vertical"); #X text 402 906 Source of fragment shader: http://www.gamerendering.com/2008/10/11/gaussian-blur-filter-shader/ ; #X obj 416 809 ev_rectangle result; #X obj 45 530 rectangle 4 3; #X msg 410 405 blur \$1; #X obj 45 264 ev_buf horizontal; #X obj 18 859 square 4; #X obj 45 447 ev_glsl horizontal dummy gaussian_blur.h; #X obj 18 610 ev_buf vertical; #X obj 18 776 ev_glsl vertical dummy gaussian_blur.v; #X obj 130 746 r /ev/buf/horizontal/texture_id; #X connect 6 0 28 0; #X connect 7 0 28 0; #X connect 8 0 47 0; #X connect 15 0 14 0; #X connect 16 0 14 0; #X connect 19 0 48 0; #X connect 19 1 45 0; #X connect 20 0 44 0; #X connect 23 0 49 2; #X connect 28 0 8 0; #X connect 31 0 42 1; #X connect 38 0 42 0; #X connect 39 0 19 0; #X connect 44 0 23 0; #X connect 44 0 47 2; #X connect 45 0 8 0; #X connect 47 0 43 0; #X connect 48 0 49 0; #X connect 49 0 46 0; #X connect 50 0 49 1; #X coords 0 756 1 755 85 60 0;