ashton 0.0.1alpha → 0.0.2alpha
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +21 -21
- data/README.md +95 -68
- data/Rakefile +41 -23
- data/examples/bloom_example.rb +59 -0
- data/examples/lighting_example.rb +127 -0
- data/examples/media/SmallStar.png +0 -0
- data/examples/media/Starfighter.png +0 -0
- data/examples/media/simple.png +0 -0
- data/examples/noise_example.rb +94 -0
- data/examples/outline_example.rb +86 -0
- data/examples/particle_emitter_example.rb +114 -0
- data/examples/pixelate_example.rb +51 -49
- data/examples/pixelated_texture_example.rb +69 -0
- data/examples/radial_blur_example.rb +60 -62
- data/examples/shader_image_example.rb +74 -41
- data/examples/{shockwave2_example.rb → shockwave_example.rb} +74 -75
- data/examples/stencil_shader_example.rb +104 -0
- data/examples/{framebuffer_example.rb → texture_render_example.rb} +53 -49
- data/examples/{tv_screen_and_noise_example.rb → tv_screen_and_static_example.rb} +59 -59
- data/ext/ashton/GLee.c +18170 -0
- data/ext/ashton/GLee.h +17647 -0
- data/ext/ashton/ashton.c +42 -0
- data/ext/ashton/ashton.h +31 -0
- data/ext/ashton/color.c +45 -0
- data/ext/ashton/color.h +25 -0
- data/ext/ashton/common.h +41 -0
- data/ext/ashton/extconf.rb +42 -0
- data/ext/ashton/fast_math.c +30 -0
- data/ext/ashton/fast_math.h +30 -0
- data/ext/ashton/font.c +8 -0
- data/ext/ashton/font.h +16 -0
- data/ext/ashton/gosu.c +18 -0
- data/ext/ashton/gosu.h +19 -0
- data/ext/ashton/image.c +8 -0
- data/ext/ashton/image.h +16 -0
- data/ext/ashton/particle_emitter.c +788 -0
- data/ext/ashton/particle_emitter.h +171 -0
- data/ext/ashton/pixel_cache.c +237 -0
- data/ext/ashton/pixel_cache.h +58 -0
- data/ext/ashton/shader.c +9 -0
- data/ext/ashton/shader.h +16 -0
- data/ext/ashton/texture.c +442 -0
- data/ext/ashton/texture.h +63 -0
- data/ext/ashton/window.c +8 -0
- data/ext/ashton/window.h +16 -0
- data/lib/ashton.rb +38 -26
- data/lib/ashton/1.9/ashton.so +0 -0
- data/lib/ashton/gosu_ext/color.rb +24 -11
- data/lib/ashton/gosu_ext/font.rb +58 -0
- data/lib/ashton/gosu_ext/gosu_module.rb +16 -0
- data/lib/ashton/gosu_ext/image.rb +95 -31
- data/lib/ashton/gosu_ext/window.rb +78 -35
- data/lib/ashton/image_stub.rb +32 -36
- data/lib/ashton/lighting/light_source.rb +146 -0
- data/lib/ashton/lighting/manager.rb +98 -0
- data/lib/ashton/mixins/version_checking.rb +23 -0
- data/lib/ashton/particle_emitter.rb +87 -0
- data/lib/ashton/pixel_cache.rb +24 -0
- data/lib/ashton/shader.rb +353 -35
- data/lib/ashton/shaders/bloom.frag +41 -0
- data/lib/ashton/shaders/color_inversion.frag +11 -0
- data/lib/ashton/{post_process → shaders}/contrast.frag +16 -16
- data/lib/ashton/{shader → shaders}/default.frag +22 -19
- data/lib/ashton/{shader → shaders}/default.vert +13 -13
- data/lib/ashton/shaders/fade.frag +14 -0
- data/lib/ashton/shaders/grayscale.frag +15 -0
- data/lib/ashton/shaders/include/classicnoise2d.glsl +113 -0
- data/lib/ashton/shaders/include/classicnoise3d.glsl +177 -0
- data/lib/ashton/shaders/include/classicnoise4d.glsl +302 -0
- data/lib/ashton/{include/simplex.glsl → shaders/include/noise2d.glsl} +70 -63
- data/lib/ashton/shaders/include/noise3d.glsl +102 -0
- data/lib/ashton/shaders/include/noise4d.glsl +128 -0
- data/lib/ashton/shaders/include/rand.glsl +5 -0
- data/lib/ashton/shaders/lighting/distort.frag +57 -0
- data/lib/ashton/shaders/lighting/draw_shadows.frag +60 -0
- data/lib/ashton/shaders/lighting/shadow_blur.frag +60 -0
- data/lib/ashton/shaders/mezzotint.frag +22 -0
- data/lib/ashton/shaders/multitexture2.vert +19 -0
- data/lib/ashton/shaders/outline.frag +45 -0
- data/lib/ashton/{post_process → shaders}/pixelate.frag +48 -48
- data/lib/ashton/shaders/radial_blur.frag +63 -0
- data/lib/ashton/shaders/sepia.frag +26 -0
- data/lib/ashton/{post_process/shockwave2.frag → shaders/shockwave.frag} +38 -35
- data/lib/ashton/shaders/signed_distance_field.frag +80 -0
- data/lib/ashton/{post_process/noise.frag → shaders/static.frag} +25 -27
- data/lib/ashton/shaders/stencil.frag +27 -0
- data/lib/ashton/shaders/tv_screen.frag +23 -0
- data/lib/ashton/signed_distance_field.rb +151 -0
- data/lib/ashton/texture.rb +186 -0
- data/lib/ashton/version.rb +2 -2
- data/lib/ashton/window_buffer.rb +16 -0
- data/spec/ashton/ashton_spec.rb +22 -0
- data/spec/ashton/gosu_ext/color_spec.rb +34 -0
- data/spec/ashton/gosu_ext/font_spec.rb +57 -0
- data/spec/ashton/gosu_ext/gosu_spec.rb +11 -0
- data/spec/ashton/gosu_ext/image_spec.rb +66 -0
- data/spec/ashton/gosu_ext/window_spec.rb +71 -0
- data/spec/ashton/image_stub_spec.rb +46 -0
- data/spec/ashton/particle_emitter_spec.rb +123 -0
- data/spec/ashton/pixel_cache_spec.rb +153 -0
- data/spec/ashton/shader_spec.rb +152 -0
- data/spec/ashton/signed_distance_field_spec.rb +163 -0
- data/spec/ashton/texture_spec.rb +347 -0
- data/spec/helper.rb +12 -0
- metadata +159 -28
- data/examples/output/README.txt +0 -1
- data/lib/ashton/base_shader.rb +0 -172
- data/lib/ashton/framebuffer.rb +0 -183
- data/lib/ashton/post_process.rb +0 -83
- data/lib/ashton/post_process/default.vert +0 -9
- data/lib/ashton/post_process/fade.frag +0 -11
- data/lib/ashton/post_process/mezzotint.frag +0 -24
- data/lib/ashton/post_process/radial_blur.frag +0 -31
- data/lib/ashton/post_process/sepia.frag +0 -19
- data/lib/ashton/post_process/shockwave.frag +0 -40
- data/lib/ashton/post_process/tv_screen.frag +0 -32
@@ -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
|
-
}
|