@@ -6,31 +6,38 @@ def settings
66
77def setup
88 @pass = 0
9- @shader_grayscott = load_shader ( sketch_path ( 'grayscott2.frag' ) )
10- @shader_render = load_shader ( sketch_path ( 'render2.frag' ) )
11- @pg_src = create_texture ( width , height )
9+ @shader_render = load_shader ( data_path ( 'render2.frag' ) )
1210 @pg_dst = create_texture ( width , height )
13- # init
14- pg_src . begin_draw
15- pg_src . background ( color ( 0xFFFF0000 ) )
16- pg_src . fill ( color ( 0x0000FFFF ) )
17- pg_src . no_stroke
18- pg_src . rect_mode ( CENTER )
19- pg_src . rect ( width / 2 , height / 2 , 20 , 20 )
20- pg_src . end_draw
21- frame_rate ( 1000 )
11+ @pg_src = create_texture ( width , height ) . tap do |src |
12+ src . begin_draw
13+ src . background ( color ( 0xFFFF0000 ) )
14+ src . fill ( color ( 0x0000FFFF ) )
15+ src . no_stroke
16+ src . rect_mode ( CENTER )
17+ src . rect ( width / 2 , height / 2 , 20 , 20 )
18+ src . end_draw
19+ end
20+ @shader_grayscott = load_shader ( data_path ( 'grayscott2.frag' ) )
21+ shader_grayscott . set ( 'dA' , 1.0 )
22+ shader_grayscott . set ( 'dB' , 0.5 )
23+ shader_grayscott . set ( 'feed' , 0.055 )
24+ shader_grayscott . set ( 'kill' , 0.062 )
25+ shader_grayscott . set ( 'dt' , 1.0 )
26+ shader_grayscott . set ( 'wh_rcp' , 1.0 / width , 1.0 / height )
27+ shader_grayscott . set ( 'tex' , pg_src )
28+ frame_rate ( 1_000 )
2229end
2330
2431def create_texture ( w , h )
25- pg = create_graphics ( w , h , P2D )
26- pg . smooth ( 0 )
27- pg . begin_draw
28- pg . texture_sampling ( 2 )
29- pg . blend_mode ( REPLACE )
30- pg . clear
31- pg . no_stroke
32- pg . end_draw
33- pg
32+ create_graphics ( w , h , P2D ) . tap do | pg |
33+ pg . smooth ( 0 )
34+ pg . begin_draw
35+ pg . texture_sampling ( 2 )
36+ pg . blend_mode ( REPLACE )
37+ pg . clear
38+ pg . no_stroke
39+ pg . end_draw
40+ end
3441end
3542
3643def swap
@@ -39,13 +46,6 @@ def swap
3946
4047def reaction_diffusion_pass
4148 pg_dst . begin_draw
42- shader_grayscott . set ( 'dA' , 1.0 )
43- shader_grayscott . set ( 'dB' , 0.5 )
44- shader_grayscott . set ( 'feed' , 0.055 )
45- shader_grayscott . set ( 'kill' , 0.062 )
46- shader_grayscott . set ( 'dt' , 1.0 )
47- shader_grayscott . set ( 'wh_rcp' , 1.0 / width , 1.0 / height )
48- shader_grayscott . set ( 'tex' , pg_src )
4949 pg_dst . shader ( shader_grayscott )
5050 pg_dst . rect_mode ( CORNER )
5151 pg_dst . rect ( 0 , 0 , width , height )
@@ -56,7 +56,7 @@ def reaction_diffusion_pass
5656
5757def draw
5858 # multipass rendering, ping-pong
59- 100 . times { reaction_diffusion_pass }
59+ 20 . times { reaction_diffusion_pass }
6060 # display result
6161 shader_render . set ( 'wh_rcp' , 1.0 / width , 1.0 / height )
6262 shader_render . set ( 'tex' , pg_src )
0 commit comments