Hypergiant

Hypergiant is an experimental high-level interface to OpenGL. It serves as a wrapper around over a dozen libraries, pulling them together into a cohesive set of tools for common graphics tasks.

Features

OpenGL in Lisp

Write familiar OpenGL code, in Scheme, with render performance identical to C. Hypergiant uses two high level structures — meshes and pipelines — that abstract the most common OpenGL operations. Pipelines encapsulate shaders in a Lispy DSL and when you use them to render meshes, you're calling auto-generated branchless C code.

Scene management

Manage the objects and cameras in your scene with a scene graph that uses an adaptive spatial partitioning system to perform well across a wide range of scene types. Hypergiant employs the target-agnostic Hyperscene library to perform the entire rendering stage in C.

Asset loading and rendering

Hypergiant knows how to load and render:

Window management

Cross-platform boring stuff like opening windows and setting up OpenGL contexts are taken care of by Hypergiant, with lots of help from GLFW. A high-level input system further makes handling events easy.

Effects

Fancy up your scene with lighting, particle effects, and GPU-based noise shaders.

Maths

Graphics needs math. Hypergiant has math. It also knows how to draw a cube-mapped texture onto a sphere, among other things.

Resources

Learning

Documentation
Hypergiant's complete documentation covers all of its features. You can also search for every Hypergiant function in CHICKEN's documentation index.
Tutorial
All of Hypergiant's basic concepts are explained in this tutorial, which illustrates the creation of a semi-complete game.
Examples
Hypergiant ships with a number of examples that cover just about everything Hypergiant can do.

Development

Source
Hypergiant's BSD licenced code can be found on GitHub.
Bugs
Submit bugs and feature requests to Hypergiant's issue tracker.
Hypergiant is built on top of a number of libraries, so it's possible that issues you're seeing have been reported on the tracker of another project. When in doubt, you can always report issues to Hypergiant's tracker, no matter what their root may be.