Civet Rendering Engine is a small rendering engine, planning to fully support in-depth rasterization and raytracing methods.
A lot of the engine is as much a learning process for the author as a (hopefully) useful tool.
Civet is a (pretty much) fully featured rendering engine, written in OpenGL and C++17.
The path tracing implementation is derived from PBRT, and supports importing external scene files.
GPU accelerated rendering features is baked in but not currently fully implemented.
- Vector math and matrix transforms library, fully compatible with OpenGL
- Load model and scene objects to triangle meshes with assimp
- Load image textures with stb
- Scene tree and object inspector in editor GUI
- Physically-bsed rendering techniques using the roughness/metallic workflow
- PBR shaders based on Disney BRDF and Unreal Engine adaptation
- Image textures: albedo, metallic, roughness and ambient occlusion
- Real time shadows through cascaded shadow mapping for directional lights and omnidirectional shadow mapping for point lights
- Shadow map filtering with Poisson sampling PCF
- Normal mapping and bump mapping for surface details
- Deferred rendering allows handling large scenes and lots of light sources while maintaining performance through multiple rendering passes
- Indirect lighting using path-traced radiance and pre-filtered irradiance probes
- Irradiance lighting encoded as 12 Spherical Gaussians per probe
- Prevent light leaking with filtered distance visibility tests
- Reflections on specular/metallic surfaces with Screen Space Reflections (SSR)
- HDR workflow: ACES filmic curve tonemapping and automatic exposure control
- Acceleration structure with BVH
- Subdivision surfaces
- Animated transforms for rendered motion blur
- Disney BSDF materials: diffuse, specular, glossy, transmission
- Build scene from real time, optimized for ray tracing
- [WIP] Path integrators, bidirectional path tracer etc.
Cornell box with a reflective floor, rendered with SSR enabled
An indoor section of sponza with increased exposure, showcasing indirect lighting
A version of the Sponza atrium with HD textures and normal maps
A shaded section of the Sponza atrium, showcasing screen space reflections
See the /resources/screenshots
for more samples, including renders during early development.