Aaron Bolyard's Portfolio

Algae.Canvas

advanced vector graphics API modeled after HTML5 canvas

Create the geometry once and render at any resolution--that is the idea behind Algae.Canvas. Suitable for a variety of real-time tasks, including video games and and user interfaces, Algae.Canvas manages to render entire scenes in one draw call.

Example of Algae.Canvas render

SVG courtesy of Jason Bolyard/arookas; image displayed here is rendered via Algae.Canvas

Most notably, Algae.Canvas supports rendering 'groups' with tint and alpha, as well as 255 nested levels of clipping, without having to create extra framebuffers. This is a marked difference from HTML5 canvas, which does not support alpha on groups of objects (instead, objects will bleed through each other, rather than masking each other). Again, this support is ensured with minimal draw calls and state changing; groups are supported for free, although clipping requires multiple draw calls per clip level.

features

  • API similar to HTML5 canvas
  • Geometry only needs to be created once; later can be rendered at any size
  • Retained path creation
  • Multithreaded renderer
  • Support for rendering single paths, groups, and clipping between paths and groups

technical details

  • Makes use of Loop-Blinn 'curves on GPU' algorithm
  • Batches all geometry into one buffer and uses one shader, for minimal resource switching
  • Supports groups and group alpha via depth buffer and nested clipping via stencil buffer
  • Makes use of multithreading in order to pack all the data into one buffer
  • Eight Seasons

    poetic justice for resolution-independent vector graphics

    In the world of Eight Seasons, Haiku is shunned by her tribe by the aging reliance on prophecies, despite her position as the overseer of seasons. After learning of a plot by the Thornwood Frog Spirit to assassinate the spirits that herald the seasons, she is forced to act and ensure that the cycle of seasons does not abruptly end.

    Eight Seasons screenshot

    features

    • Georgous vector graphics, scaled to any resolution
    • Captivating story set in a world where spirits and mortals interact
    • Beautiful, dynamic soundtrack

    technical details

    • Programmed primarily in Lua, with platform-specific details written in C
    • An early version of a vector graphics API similar to Algae.Canvas

    Algae

    a modern graphics API for C#

    Algae provides simple, platform-agnostic access to the underlying graphics API. On its own, the library makes it easy to rapidly develop applications that need the power of OpenGL 3.0 without any legacy cruft. It also provides basic functionality in creating and managing OpenGL contexts, user input, and general application design in a vein similar to XNA or MonoGame.

    Even though Algae on its own can be used for a variety of purposes, it is extended to develop games and other applications with less effort. Algae.Canvas is an example of vector graphics built atop Algae.

    features

    • OpenGL 3.0 forward-compatible design
    • Extensive math routines, including 2, 3, and 4 dimensional vectors; 4 by 4 matrices; and quaternions
    • Concise, extendable API, similar to XNA and MonoGame
    • Utilities in input, display creation, and timing

    technical details

    • PIMPL idiom: underlying graphics API is abstracted away from higher level objects via interfaces
    • Designed to support, in the future, DirectX and even platform-specific APIs
    • Built on reliable open-source software, including Allegro and OpenTK

    Fixel

    a game about a fighting pixel

    Venture out and about through five floors of terror, fighting Twornadoes, Ninja Crazy Dazies, polar bears, and other horrible mean things, in order to vanquish the evil Eggbert.

    Fixel screenshot

    Fixel was completed and later modified many moons ago as a high school project, and serves as a solid example of awesome gameplay in a real-time "rougelike" environment.

    features

    • Light-hearted roguelike gameplay
    • Five floors of monsters in a randomly generated dungeon
    • Customizable-and-intuitive input scheme

    technical details

    • Implemented using Allegro 4, Lua, and other open-source libraries
    • Platform interop coded in C++, the rest in Lua
    • Features randomly generated dungeons, team AI, A* path-finding, all coded in Lua