RomanoRender2 is the second iteration of a pathtracer written in C++ and OSL which aims to help me learn rendering, maths, C++, software engineering and more about computer graphics in general (and also because I want to make beautiful images).
It relies on Embree for geometry intersection and its common library, Open Shading Language for shading, TBB for tasking and multithreading and ImGui for the interface.
Soon there will be a building system with CMAKE and Vcpkg.
(Still in construction, I'm not sure of what I want to implement or not)
-
Embree :
- ✔️ Triangle geometry :
- ✔️ Smooth Normals
- ✔️ Uv coordinates
- ❌ Curve geometry
- ❌ Quad geometry
- ❌ Subdivision surface
- ❌ Instances
- ❌ Displacement
- ❌ Opacity handling
- ✔️ Triangle geometry :
-
OSL / Shading :
- ✔️ Lambert Diffuse Brdf
- ❌ Sheen Brdf
- ❌ Microfacet GGX Brdf/Btdf
- ❌ Microfacet Beckmann Brdf/Btdf
- ❌ Dielectric (with Microfacet Btdf)
- ❌ Thin Dielectric
- ❌ Random Walk SubSurface Scattering Bssrdf
- ❌ Normal mapping
- ❌ Displacement mapping
- ❌ Transparency
-
Lighting :
- ✔️ Environment light
- ✔️ Constant
- ❌ OSL Environment Shader
- ❌ Square Area Light
- ❌ OSL Square Light Shader
- ❌ Sky Light (I haven't choosen yet which model I want to implement)
- ✔️ Environment light
-
I/O / Data :
- ✔️ Obj File format
- ❌ USD (I know that's a big boy)
- ❌ Custom scenefile format to save/load scenes
- ❌ Output to any image file format with OpenImageIO
- ...
-
Interface :
- ❌ Node-Based RenderGraph
- ❌ Text Editor with syntax highlighting for OSL Shaders
- ...