Special graphical effects and other extensions for the Ruby/Gosu game library.
Clone or download
Spooner Merge pull request #23 from KoBeWi/master
Support for vec4 array uniforms
Latest commit 313673d Jan 4, 2015
Type Name Latest commit message Commit time
Failed to load latest commit information.
benchmarks Increased number of passes on particles benchmark, to make reading mo… Aug 5, 2012
examples Remembered to initialize @previous_program Sep 6, 2013
ext/ashton Fixed for osx (fixed #37) Jan 4, 2015
lib Merge pull request #23 from KoBeWi/master Jan 4, 2015
spec Reduced the number of emitters created during tests, since the graphi… Sep 25, 2012
.gitignore Fixed for osx (fixed #37) Jan 4, 2015
CHANGELOG Initial import. Jul 7, 2012
LICENSE Initial import. Jul 7, 2012
README.md i didn't see anything spooner Jun 16, 2013
Rakefile Remembered to require bundler in the rakefile (Thanks fowl). Aug 1, 2012




Add extra visual effects to the Gosu game-development library, utilising OpenGL shaders (using shader model 1.0, for maximum compatibility) and frame-buffers.

"Ashton" is named after Clark Ashton Smith, an fantasy/horror author with a particularly colourful imagination.


gem install ashton --pre


  • Gosu extensions

    • {Gosu::Color} - Converting to and from opengl values.

    • {Gosu::Font} - Apply shader to draw operations.

    • {Gosu::Image} - Apply shader to each draw operation or group of draws. Manipulation, such as flipping and scaling.

    • {Gosu::Window} - Post-processing with shaders. Converting to image.

  • Ashton

    • {Ashton::Texture} - Single texture (compared to Gosu::Image which uses a spritesheet) which can be drawn directly onto and drawn to the Window.

    • {Ashton::Lighting::Manager} - Manages and combines the lighting from {Ashton::Lighting::LightSource} objects.

    • {Ashton::Lighting::LightSource} - A single light-source that illuminates and whose can be blocked by shadow-casting objects.

    • {Ashton::ParticleEmitter} - Generates, manages and displays particles.

    • {Ashton::PixelCache} - Cached image data attached to an {Ashton::Texture} or {Gosu::Image}.

    • {Ashton::SignedDistanceField} - A signed distance field based on a an image mask.

    • {Ashton::Shader} - Wrapper around a GLSL shaders, Supports vertex and fragment shaders. Small shader/function library.

    • {Ashton::WindowBuffer} - Texture that is the same size as the Gosu Window that can capture the contents of the screen.


  • OSX/Linux: Requires OpenGL library be installed.

  • {Ashton::Shader} and {Ashton::Lighting} or anything else using shaders, require OpenGL 2.0.

Similar Libraries

  • TexPlay - Deals with Gosu::Image manipulation, such as per-pixel editing and drawing. It is compatible with, and complementary to, this gem.

Third party

  • OpenGL static library (in Windows binary gem) and headers.

  • GLee source.

  • Various trivial shaders - "randomly found on the Internet" :$

  • Classic and Simplex noise functions - Copyright (C) 2011 Ashima Arts - MIT license.

    • classicnoise2d.glsl - 2D Classic Perlin noise implementation - cnoise(vec2)
    • classicnoise3d.glsl - 3D Classic Perlin noise implementation - cnoise(vec3)
    • classicnoise4d.glsl - 4D Classic Perlin noise implementation - cnoise(vec4)
    • noise2d.glsl - 2D Simplex noise implementation - snoise(vec2)
    • noise3d.glsl - 3D Simplex noise implementation - snoise(vec3)
    • noise4d.glsl - 4D Simplex noise implementation - snoise(vec4)
  • Bloom filter by myheroics

    • bloom.frag
  • Shockwave by Crystalin

    • shockwave.frag
  • Radial Blur by gamerendering.com

    • radial_blur.frag
  • Lighting based on, but much optimised from, Catalin Zima's shader based dynamic shadows system.