Skip to content

A fully-featured rendering engine with a real-time rasterizer and path-tracer (eventually)

License

Notifications You must be signed in to change notification settings

keptsecret/CivetRender

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CivetRender

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.

splash

Features

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.

Main engine

  • 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

Realtime OpenGL renderer

  • 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

Ray-tracer

  • 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.

Samples

Cornell box Original Cornell box render


Cornell box SSR Cornell box with a reflective floor, rendered with SSR enabled


Indoor sponza An indoor section of sponza with increased exposure, showcasing indirect lighting


Sponza HD A version of the Sponza atrium with HD textures and normal maps


Sponza HD indoors A shaded section of the Sponza atrium, showcasing screen space reflections


See the /resources/screenshots for more samples, including renders during early development.

About

A fully-featured rendering engine with a real-time rasterizer and path-tracer (eventually)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published