Linux |
Windows |
macOS |
WebAssembly |
|
---|---|---|---|---|
Compilation | ||||
Unit tests | No CI yet | No CI yet | N/A |
Codacy |
Coveralls |
---|---|
RaZ comes from, as you may have noticed, my username Razakhel. This was also meant as a pun, since in french RàZ is the acronym for "Remise à zéro", which basically means "reset". I didn't have any particular intent behind this double meaning. Except maybe hoping that using RaZ might reset your mind because of its awesomeness? Oh well.
Written in modern C++ (17), ECS driven, it is primarily developed for learning purposes. It is intended to be very intuitive & easy to use and tinker with, while trying to stay as optimized & modular as possible.
The engine is available under Windows, Linux & macOS; it can also run in a web browser through WebAssembly (using Emscripten).
The engine can be used with Lua, a scripting language that is very simple to both learn & use. For more information, see the dedicated wiki page.
📖 If you want to get started with RaZ, head to the wiki. For the documentation, look over here!
🖥️ RaZor, an editor also multiplatform, is available to manipulate the engine through a graphical interface.
💬 A Discord server dedicated to RaZ & RaZor is also available! Feel free to come by to follow the development, ask any question, or just say hi 👋
Crytek Sponza | Hylian shield (PBR) |
---|---|
More examples are available here.
Name | Maintainer/creator | Description |
---|---|---|
Atmos | Razakhel | Atmospheric simulation |
Midgard | Razakhel | Terrain procedural generation |
Yggdrasil | Razakhel | Tree & foliage procedural generation |
If you also are working on some on your own, feel free to get in touch so that I can add them to the list.
Module | Features |
---|---|
Animation | - Skeleton data structure - Animation support (in progress) |
Audio | - Using OpenAL Soft - Playing/pausing/stopping/repeating sounds - Positional audio sources & listener - Sound effects (reverberation, chorus, distortion, echo, ...) - Audio input (microphone) mono/stereo support |
Data | - Bounding Volume Hierarchy (BVH) acceleration structure - Directed graph structure - Mesh signed distance field - Dynamic bitset - File formats: - Meshes: - glTF/GLB import (using fastgltf) - OBJ import/export - FBX import (using the FBX SDK) - OFF import - Images: - PNG, JPEG, BMP, HDR, TGA, GIF, PPM/PGM, PSD, PIC import (using stb_image) - PNG import/export (using libpng) - TGA import - Audio: WAV import/export - Animation: BVH import (in progress) |
Math | - Vectors, matrices & quaternions - Angles (degrees/radians) - Transformations (translation, rotation, scale) - Noise (Perlin, Worley) |
Physics | - Shapes (line, plane, sphere, triangle, quad, AABB, OBB) - Shape/shape collision checks (in progress) - Ray/shape intersection checks (in progress) - Rigid body simulation (in progress) |
Rendering | - OpenGL (4.6-3.3) - Vulkan (in progress) - PBR (Cook-Torrance) & legacy (Blinn-Phong) material models - Deferred rendering, using a custom render graph - Post effects: bloom, tone mapping, SSR, SSAO, ... (in progress) - Tessellation & compute shaders support - Camera (perspective/orthographic) - Light sources (point & directional) - Windowing (window, keyboard/mouse inputs with custom callbacks), using GLFW - Overlay, using ImGui - Cubemap - Normal mapping |
Scripting | - Lua scripting, using Sol2 |
Misc | - Custom ECS (Entity Component System) implementation - Uniformized platform-dependent path strings - Logging utilities - Multithreading utilities, thread pool implementation & parallelization functions - Plugin utilities, to load dynamic libraries - Compiler, enum, string, file, floating-point & type utilities - Tracy integration |