ashton 0.0.1alpha → 0.0.2alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
- }