ashton 0.0.1alpha → 0.0.2alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. data/LICENSE +21 -21
  2. data/README.md +95 -68
  3. data/Rakefile +41 -23
  4. data/examples/bloom_example.rb +59 -0
  5. data/examples/lighting_example.rb +127 -0
  6. data/examples/media/SmallStar.png +0 -0
  7. data/examples/media/Starfighter.png +0 -0
  8. data/examples/media/simple.png +0 -0
  9. data/examples/noise_example.rb +94 -0
  10. data/examples/outline_example.rb +86 -0
  11. data/examples/particle_emitter_example.rb +114 -0
  12. data/examples/pixelate_example.rb +51 -49
  13. data/examples/pixelated_texture_example.rb +69 -0
  14. data/examples/radial_blur_example.rb +60 -62
  15. data/examples/shader_image_example.rb +74 -41
  16. data/examples/{shockwave2_example.rb → shockwave_example.rb} +74 -75
  17. data/examples/stencil_shader_example.rb +104 -0
  18. data/examples/{framebuffer_example.rb → texture_render_example.rb} +53 -49
  19. data/examples/{tv_screen_and_noise_example.rb → tv_screen_and_static_example.rb} +59 -59
  20. data/ext/ashton/GLee.c +18170 -0
  21. data/ext/ashton/GLee.h +17647 -0
  22. data/ext/ashton/ashton.c +42 -0
  23. data/ext/ashton/ashton.h +31 -0
  24. data/ext/ashton/color.c +45 -0
  25. data/ext/ashton/color.h +25 -0
  26. data/ext/ashton/common.h +41 -0
  27. data/ext/ashton/extconf.rb +42 -0
  28. data/ext/ashton/fast_math.c +30 -0
  29. data/ext/ashton/fast_math.h +30 -0
  30. data/ext/ashton/font.c +8 -0
  31. data/ext/ashton/font.h +16 -0
  32. data/ext/ashton/gosu.c +18 -0
  33. data/ext/ashton/gosu.h +19 -0
  34. data/ext/ashton/image.c +8 -0
  35. data/ext/ashton/image.h +16 -0
  36. data/ext/ashton/particle_emitter.c +788 -0
  37. data/ext/ashton/particle_emitter.h +171 -0
  38. data/ext/ashton/pixel_cache.c +237 -0
  39. data/ext/ashton/pixel_cache.h +58 -0
  40. data/ext/ashton/shader.c +9 -0
  41. data/ext/ashton/shader.h +16 -0
  42. data/ext/ashton/texture.c +442 -0
  43. data/ext/ashton/texture.h +63 -0
  44. data/ext/ashton/window.c +8 -0
  45. data/ext/ashton/window.h +16 -0
  46. data/lib/ashton.rb +38 -26
  47. data/lib/ashton/1.9/ashton.so +0 -0
  48. data/lib/ashton/gosu_ext/color.rb +24 -11
  49. data/lib/ashton/gosu_ext/font.rb +58 -0
  50. data/lib/ashton/gosu_ext/gosu_module.rb +16 -0
  51. data/lib/ashton/gosu_ext/image.rb +95 -31
  52. data/lib/ashton/gosu_ext/window.rb +78 -35
  53. data/lib/ashton/image_stub.rb +32 -36
  54. data/lib/ashton/lighting/light_source.rb +146 -0
  55. data/lib/ashton/lighting/manager.rb +98 -0
  56. data/lib/ashton/mixins/version_checking.rb +23 -0
  57. data/lib/ashton/particle_emitter.rb +87 -0
  58. data/lib/ashton/pixel_cache.rb +24 -0
  59. data/lib/ashton/shader.rb +353 -35
  60. data/lib/ashton/shaders/bloom.frag +41 -0
  61. data/lib/ashton/shaders/color_inversion.frag +11 -0
  62. data/lib/ashton/{post_process → shaders}/contrast.frag +16 -16
  63. data/lib/ashton/{shader → shaders}/default.frag +22 -19
  64. data/lib/ashton/{shader → shaders}/default.vert +13 -13
  65. data/lib/ashton/shaders/fade.frag +14 -0
  66. data/lib/ashton/shaders/grayscale.frag +15 -0
  67. data/lib/ashton/shaders/include/classicnoise2d.glsl +113 -0
  68. data/lib/ashton/shaders/include/classicnoise3d.glsl +177 -0
  69. data/lib/ashton/shaders/include/classicnoise4d.glsl +302 -0
  70. data/lib/ashton/{include/simplex.glsl → shaders/include/noise2d.glsl} +70 -63
  71. data/lib/ashton/shaders/include/noise3d.glsl +102 -0
  72. data/lib/ashton/shaders/include/noise4d.glsl +128 -0
  73. data/lib/ashton/shaders/include/rand.glsl +5 -0
  74. data/lib/ashton/shaders/lighting/distort.frag +57 -0
  75. data/lib/ashton/shaders/lighting/draw_shadows.frag +60 -0
  76. data/lib/ashton/shaders/lighting/shadow_blur.frag +60 -0
  77. data/lib/ashton/shaders/mezzotint.frag +22 -0
  78. data/lib/ashton/shaders/multitexture2.vert +19 -0
  79. data/lib/ashton/shaders/outline.frag +45 -0
  80. data/lib/ashton/{post_process → shaders}/pixelate.frag +48 -48
  81. data/lib/ashton/shaders/radial_blur.frag +63 -0
  82. data/lib/ashton/shaders/sepia.frag +26 -0
  83. data/lib/ashton/{post_process/shockwave2.frag → shaders/shockwave.frag} +38 -35
  84. data/lib/ashton/shaders/signed_distance_field.frag +80 -0
  85. data/lib/ashton/{post_process/noise.frag → shaders/static.frag} +25 -27
  86. data/lib/ashton/shaders/stencil.frag +27 -0
  87. data/lib/ashton/shaders/tv_screen.frag +23 -0
  88. data/lib/ashton/signed_distance_field.rb +151 -0
  89. data/lib/ashton/texture.rb +186 -0
  90. data/lib/ashton/version.rb +2 -2
  91. data/lib/ashton/window_buffer.rb +16 -0
  92. data/spec/ashton/ashton_spec.rb +22 -0
  93. data/spec/ashton/gosu_ext/color_spec.rb +34 -0
  94. data/spec/ashton/gosu_ext/font_spec.rb +57 -0
  95. data/spec/ashton/gosu_ext/gosu_spec.rb +11 -0
  96. data/spec/ashton/gosu_ext/image_spec.rb +66 -0
  97. data/spec/ashton/gosu_ext/window_spec.rb +71 -0
  98. data/spec/ashton/image_stub_spec.rb +46 -0
  99. data/spec/ashton/particle_emitter_spec.rb +123 -0
  100. data/spec/ashton/pixel_cache_spec.rb +153 -0
  101. data/spec/ashton/shader_spec.rb +152 -0
  102. data/spec/ashton/signed_distance_field_spec.rb +163 -0
  103. data/spec/ashton/texture_spec.rb +347 -0
  104. data/spec/helper.rb +12 -0
  105. metadata +159 -28
  106. data/examples/output/README.txt +0 -1
  107. data/lib/ashton/base_shader.rb +0 -172
  108. data/lib/ashton/framebuffer.rb +0 -183
  109. data/lib/ashton/post_process.rb +0 -83
  110. data/lib/ashton/post_process/default.vert +0 -9
  111. data/lib/ashton/post_process/fade.frag +0 -11
  112. data/lib/ashton/post_process/mezzotint.frag +0 -24
  113. data/lib/ashton/post_process/radial_blur.frag +0 -31
  114. data/lib/ashton/post_process/sepia.frag +0 -19
  115. data/lib/ashton/post_process/shockwave.frag +0 -40
  116. data/lib/ashton/post_process/tv_screen.frag +0 -32
@@ -1,11 +0,0 @@
1
- #version 110
2
-
3
- uniform sampler2D in_Texture;
4
-
5
- uniform float fade; # 1.0 => normal 0.0 => invisible.
6
-
7
- varying vec2 var_TexCoord;
8
-
9
- void main() {
10
- gl_FragColor = texture2D(in_Texture, var_TexCoord) * fade;
11
- }
@@ -1,24 +0,0 @@
1
- #version 110
2
-
3
- uniform sampler2D in_Texture;
4
-
5
- uniform int t;
6
-
7
- varying vec2 var_TexCoord;
8
-
9
- float rand(vec2 co) {
10
- return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);
11
- }
12
-
13
- void main() {
14
- vec4 color;
15
-
16
- color = texture2D(in_Texture, var_TexCoord);
17
-
18
- vec3 mezzo = vec3(0.0);
19
- if(rand(var_TexCoord + float(t)/640.0) <= color.r) { mezzo.r = 1.0; }
20
- if(rand(var_TexCoord + float(t)/640.0) <= color.g) { mezzo.g = 1.0; }
21
- if(rand(var_TexCoord + float(t)/640.0) <= color.b) { mezzo.b = 1.0; }
22
-
23
- gl_FragColor.rgb = mezzo;
24
- }
@@ -1,31 +0,0 @@
1
- #version 110
2
-
3
- uniform sampler2D in_Texture; // Texture to manipulate.
4
- uniform int in_WindowWidth;
5
- uniform int in_WindowHeight;
6
-
7
- uniform float in_BlurFactor;
8
- uniform float in_BrightFactor;
9
- uniform float in_OriginX;
10
- uniform float in_OriginY;
11
- uniform int in_Passes; // Number of passes to make (more is slower)
12
-
13
- varying vec2 var_TexCoord; // Coordinate coming from the default vertex shader.
14
-
15
- void main()
16
- {
17
- vec2 Origin = vec2(in_OriginX, 1.0 - in_OriginY);
18
-
19
- vec2 TexCoord = vec2(var_TexCoord);
20
-
21
- vec4 SumColor = vec4(0.0, 0.0, 0.0, 0.0);
22
- TexCoord += vec2(1.0 / float(in_WindowWidth), 1.0 / float(in_WindowHeight)) * 0.5 - Origin;
23
-
24
- for (int i = 0; i < in_Passes; i++)
25
- {
26
- float Scale = 1.0 - in_BlurFactor * (float(i) / float(in_Passes - 1));
27
- SumColor += texture2D(in_Texture, TexCoord * Scale + Origin);
28
- }
29
-
30
- gl_FragColor = SumColor / float(in_Passes) * in_BrightFactor;
31
- }
@@ -1,19 +0,0 @@
1
- #version 110
2
-
3
- uniform sampler2D in_Texture;
4
-
5
- varying vec2 var_TexCoord;
6
-
7
- void main()
8
- {
9
- vec4 Sepia1 = vec4( 0.2, 0.05, 0.0, 1.0 );
10
- vec4 Sepia2 = vec4( 1.0, 0.9, 0.5, 1.0 );
11
-
12
- vec4 Color = texture2D(in_Texture, vec2(var_TexCoord));
13
-
14
- float SepiaMix = dot(vec3(0.3, 0.59, 0.11), vec3(Color));
15
- Color = mix(Color, vec4(SepiaMix), vec4(0.5));
16
- vec4 Sepia = mix(Sepia1, Sepia2, SepiaMix);
17
-
18
- gl_FragColor = mix(Color, Sepia, 1.0);
19
- }
@@ -1,40 +0,0 @@
1
- #version 110
2
-
3
- uniform sampler2D in_Texture;
4
-
5
- varying vec2 var_TexCoord;
6
-
7
- uniform float in_Center;
8
- uniform float in_WaveWidth;
9
- uniform float in_Time;
10
- uniform float in_Ratio;
11
- uniform float in_Refraction;
12
-
13
- uniform int in_WindowWidth;
14
- uniform int in_WindowHeight;
15
-
16
- const float PI = 3.14159;
17
-
18
- void main()
19
- {
20
- vec2 source_coords = var_TexCoord;
21
- vec3 color = texture2D(in_Texture, source_coords).rgb;
22
-
23
- float x = in_X / float(in_WindowHeight);
24
- float y = 1.0 - in_Y / float(in_WindowHeight);
25
- vec2 rel = source_coords - vec2(x, y);
26
- rel.x *= in_Ratio;
27
-
28
- float dist = sqrt(rel.x * rel.x + rel.y * rel.y);
29
-
30
- if(dist >= in_Min && dist <= in_Max)
31
- {
32
- float inner = (dist - in_Min) / (in_Max - in_Min);
33
- float depth = 0.5 + 0.5 * cos((inner + 0.5) * 2.0 * PI);
34
-
35
- source_coords -= depth * rel / dist * in_Refraction;
36
- color = texture2D(in_Texture, source_coords).rgb;
37
- }
38
-
39
- gl_FragColor.rgb = color;
40
- }
@@ -1,32 +0,0 @@
1
- #version 110
2
- #extension GL_EXT_gpu_shader4 : enable
3
-
4
- uniform sampler2D in_Texture;
5
-
6
- uniform float in_ColumnWidth; // In pixels.
7
- uniform int in_WindowWidth;
8
- uniform int in_WindowHeight; // Not used in this shader.
9
-
10
- varying vec2 var_TexCoord;
11
-
12
- void main()
13
- {
14
- vec3 color = texture2D(in_Texture, var_TexCoord).rgb;
15
-
16
- gl_FragColor = vec4(color * 0.25, 1.0);
17
-
18
- float column_index = var_TexCoord.x * float(in_WindowWidth) / in_ColumnWidth;
19
-
20
- switch(int(column_index) % 3)
21
- {
22
- case 0:
23
- gl_FragColor.r = color.r;
24
- break;
25
- case 1:
26
- gl_FragColor.g = color.g;
27
- break;
28
- case 2:
29
- gl_FragColor.b = color.b;
30
- break;
31
- }
32
- }