Nexium is a C library inspired by raylib, but focused on advanced 3D rendering. If you enjoy raylib’s simplicity but are looking for a modern all-in-one 3D framework, Nexium is for you.
⚠️ Nexium is in active development and not yet stable.
- Shading: full PBR (Burley/Schlick GGX) with roughness, metalness, occlusion, normal and emission maps.
- Materials texture scale/offset, alpha cutoff, cull and blend modes.
- Lighting: forward clustered lighting and soft shadows.
- Environment: cubemaps for skyboxes and basic reflection probes
- Post-processing: color adjustment, debanding, tonemapping (Reinhard, Filmic, ACES, AgX)
- Meshes: cube, sphere, cylinder, cone, capsule
- Import: Assimp for 3D model and material loading
- Animations: rigged models, with animation blending support
- Primitives: lines, triangles, quads, rectangles, circles, arcs, rings, rounded rectangles, etc.
- Textures: can be applied to all shapes
- Custom shapes: support for primitive lists, strips, fans, loops
- Text rendering: bitmap and SDF
- Playback: clips and streams, async decoding
- Multiple instances: same clip can play simultaneously
- Helpers: wrapping, remap, angles, easings, common conversions/interpolations
- Vectors: 2D, 3D, 4D with add, subtract, scalar multiply, dot/cross product, lerp, etc.
- Quaternions: conversion to/from matrices and vectors, slerp, helpers, etc.
- Matrices: 3x3 and 4x4 for transformations, rotations, scaling, projections
- Color: manipulation and conversion (RGB/HSV), interpolation
- Transforms: 3D struct with translation, rotation, scale
Here’s a checklist of the major features that are still missing:
- Instanced rendering
- Unlit rendering mode
- Wireframe rendering mode
- Dynamic 3D geometry drawing
- Rendering to custom render targets
- Procedural skybox cubemap generation
- Dynamic reflection probes
- Screen space ambient occlusion
- Bloom in post process
- Fog effect
- Custom post-processing shaders
- Custom material shaders
- More flexible 2D rendering
- Gamepad support
- Audio spatialization
First, to run Nexium you’ll need a GPU with OpenGL 4.5 or OpenGL ES 3.2 support.
To build the project, make sure you have:
- A C11/C++23 compiler
- CMake 3.20+
- Python 3.6+
Nexium depends on: SDL3, PhysFS, Freetype and Assimp
You can either install these manually, or clone Nexium with submodules:
git clone --recurse-submodules https://github.com/Bigfoot71/Nexium.gitIf you already cloned without submodules:
git submodule update --init --recursiveWhen configuring with CMake, enable vendored dependencies for any library not installed on your system:
cmake -DNX_SDL3_VENDORED=ON \
-DNX_PHYSFS_VENDORED=ON \
-DNX_FREETYPE_VENDORED=ON \
-DNX_ASSIMP_VENDORED=ON \
-B build
cmake --build buildYou can also generate the Doxygen documentation while building the project by enabling it in CMake:
cmake -DNX_BUILD_DOCS=ON -B build
cmake --build build --target docsNexium is actively being developed. Pull requests, feedback, and bug reports are very welcome!
Thanks to the amazing open source projects that power Nexium:
Licensed under the Zlib License - see LICENSE for details.