For a while I have been developing this 3D rendering engine in my spare time. It started as a purely educational project but grew as the project progressed. This year there has been a lot of momentum which allowed me to do a public beta release (v0.9) a few months ago. This week I launched the next public beta release: v0.10!
The project is free and open sourced under the MPL-2.0 license. It runs on older hardware (GTX 10 series) and anything more recent as well.
Use Cases
1) People using the source code for learning purposes
2) People using it as a rendering starting point if they want to build their own game engine or integrate it into a visualization/modeling tool
Sample Images
(3D Model: San Miguel)
(3D Model: Sponza)
(3D Model: Junk Shop)
Features
Graphics
- Physically based metallic-roughness pipeline
- Realtime global illumination
- Spatiotemporal image denoising
- Raymarched volumetric lighting and shadowing
- Cascaded shadow mapping
- Deferred lighting
- Mesh Level-Of-Detaul (LOD) generation and selection
- GPU Frustum Culling
- Screen Space Ambient Occlusion (SSAO)
- Tonemapping
- Fog
- Bloom
- Fast Approximate Anti-Aliasing (FXAA)
- Temporal Anti-Aliasing (TAA)
Engine
- Pool allocators
- GPU memory allocators/managers
- Multi threaded utilities
- Concurrent hash map
- Entity-Component System (ECS)
- Logging
Links
Thanks!
Top comments (5)
Nice job !
I'm a render engine programmer and GPU enthusiast too 😊
I took a quick look at your source code, it seems clean. Just one thing concerning your CMakeLists.txt. Prefer avoid using GLOB to collect list of source files from your source tree. It generates troubles when CMake create its dependencies (explained in the doc here cmake.org/cmake/help/latest/comman...). It's better to explicitly list your files :
Hey thanks for the heads up! Yeah you're right, I didn't realize they don't recommend using it the way I was using it. I went and refactored the cmake lists to fix this issue by explicitly listing out the source files.
Nice to meet another GPU enthusiast on here. Is your recent work on the Unity renderer or something else?
I use to be Tech Lead on openinventor.com/ render engine between 2010 and 2018, mainly on the Volume Rendering part. I did a talk at the GTC 10 year ago: on-demand.gputechconf.com/gtc/2013.... (a little self-promotion never hurt 😁)
I'm now working on Unity for SLB company, doing assets for geological 3D rendering.
That's a really cool presentation. It seems like those techniques could be useful in a lot of areas. Parts of it kind of remind me of froxel volumetrics or voxel GI.
The adaptive screen space raycasting seems especially powerful. I wonder if it was ahead of the curve 10 years ago since now we're seeing some engines do similar stuff with ray tracing and adaptive resolution.
Thanks !
OpenInventor Volume Rendering engine use to be really state of the art back in this time. Virtual Texture, out of core, raycasting, correct OIT with raster shapes, SSAO, etc...
But too many legacy code. OpenInventor has been design in the 90s ! It's a miracle it is still alive today.