DEV Community

J Stephano
J Stephano

Posted on

I developed StratusGFX - a free and open source realtime 3D rendering engine

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

San Miguel 1

San Miguel 2

(3D Model: San Miguel)

Sponza

(3D Model: Sponza)

Junk Shop

(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

GitHub Repo

Video Tech Demo

Thanks!

Top comments (5)

Collapse
 
tandrieu profile image
Thibaut Andrieu

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 :



set(SOURCES 
  file1.cpp
  file2.cpp
  file3.cpp
 ...)

Enter fullscreen mode Exit fullscreen mode
Collapse
 
ktstephano profile image
J Stephano • Edited

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?

Collapse
 
tandrieu profile image
Thibaut Andrieu

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.

Thread Thread
 
ktstephano profile image
J Stephano

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.

Thread Thread
 
tandrieu profile image
Thibaut Andrieu

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.