RIO is a real-time rasterization renderer with OpenGL backend. It aims to implement SOTA real-time rendering algorithms for personal education usage. RIO will specifically focus on Shading, Lighting & Shadowing, and Anti-Aliasing techniques.
- User Interface with Control Panel and Camera Operation
- Pass Tracer with Total Time and GPU Time
- Custom Scene Representation loaded from Json
- Classic Phong / Blinn-Phong Shading
- Physically-Based Shading with Cook-Torrance BRDF
- Image-Based Lighting (IBL) / Environment Lighting
- Point / Directional / Spot lights
- Shadow Mapping with Percentage Closer Filtering (PCF)
- Percentage Closer Soft Shadow (PCSS)
- Variance Soft Shadow Mapping (VSSM)
- Fast Approximate Anti-Aliasing (FXAA)
- Subpixel Morphological Antialiasing (SMAA)
- Temporal Anti-Aliasing (TAA)
Helmet in Hotel | Helmet in Street |
---|---|
Sponza | Erato | Robot |
---|---|---|
Basic | PCF | PCSS | VSM | VSSM |
---|---|---|---|---|
No AA | FXAA | SMAA | TAA |
---|---|---|---|
Since all dependencies are included with source code, you can build RIO freely with CMake on Windows or Linux.
The image above shows the RIO interface with ImGui. You can modify several render options like
- Show skybox / Enable IBL / Render Light Model / Render shadow, etc.
- Switch shading method / Switch shadow method / Switch anti-aliasing method / Switch skybox.
You can modify scene options with a camera, all lights, and models with
- Switch models / Change model position, rotation, scaling, etc.
- Set camera position, rotation, move speed, etc.
- Set light position, color, intensity, etc.
Additionally, keyboard control for the camera and events is supported
- WASD: Travel with FPS camera.
- Hold Mouse Right: Rotate the camera.
- E / Q: Camera up and down.
- Up / Down: Increase / Decrease camera movement speed.
- F: Switch from Full screen.
- M: Open / Close GUI panel like Map.
- P: Print the current framebuffer and save it to the project directory.
Following dependencies are built from source within RIO.