A minimal C library providing essential 2D/3D graphic data types like vectors, matrices, and quaternions for building canvas libraries.
Graphene is a minimal C library that provides essential 2D and 3D graphic data types—such as points, vectors, matrices, and quaternions—for developers building custom canvas or graphics libraries. It solves the problem of needing lightweight, portable graphic primitives without the overhead of larger frameworks or language-specific dependencies.
C developers creating custom canvas libraries, graphic toolkits, or low-level rendering engines who need efficient, standalone mathematical types for 2D/3D transformations.
Developers choose Graphene for its focused scope, minimal dependencies, and optional SIMD optimizations, offering a portable and efficient foundation without tying them to a specific rendering system or language like C++.
A thin layer of graphic data types
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides all essential 2D and 3D types—points, matrices, quaternions—listed in the reference docs, serving as a one-stop shop for graphic primitives without bloat.
Includes optional SIMD fast paths for SSE, NEON, and GCC vectors with a scalar fallback, ensuring performance across hardware and configurable via build flags.
Designed to be self-contained with only optional GObject integration, reducing external reliance and simplifying deployment in embedded or custom toolchains.
All types can be allocated on stack or heap with private structures, maintaining API stability and giving developers control over memory management.
As the README states, it lacks any drawing, windowing, or input systems, forcing developers to implement entire graphics stacks from scratch.
Requires Meson and Ninja, which may be unfamiliar compared to CMake or Make, and on Windows involves MSYS2 dependencies, adding setup overhead.
Focuses solely on low-level math; developers must handle scene graphs, animation, and other graphics pipeline components independently, increasing implementation effort.