Skip to content

Latest commit

 

History

History
109 lines (73 loc) · 5.82 KB

README.md

File metadata and controls

109 lines (73 loc) · 5.82 KB

Render In OpenGL

CMake Windows CMake Linux

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.

Features

Basic

  • User Interface with Control Panel and Camera Operation
  • Pass Tracer with Total Time and GPU Time
  • Custom Scene Representation loaded from Json

Shading

  • Classic Phong / Blinn-Phong Shading
  • Physically-Based Shading with Cook-Torrance BRDF
  • Image-Based Lighting (IBL) / Environment Lighting

Lighting & Shadowing

  • Point / Directional / Spot lights
  • Shadow Mapping with Percentage Closer Filtering (PCF)
  • Percentage Closer Soft Shadow (PCSS)
  • Variance Soft Shadow Mapping (VSSM)

Anti-Aliasing

  • Fast Approximate Anti-Aliasing (FXAA)
  • Subpixel Morphological Antialiasing (SMAA)
  • Temporal Anti-Aliasing (TAA)

Gallery

PBR & IBL

Helmet in Hotel Helmet in Street
helmet_hotel helmet_street

Blinn-Phong

Sponza Erato Robot
sponza erato robot

Shadow

Basic PCF PCSS VSM VSSM
basic pcf pcss vsm vssm

Anti-Aliasing

No AA FXAA SMAA TAA
none fxaa smaa taa

Usage

Build

Since all dependencies are included with source code, you can build RIO freely with CMake on Windows or Linux.

Control

rio_interface

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.

Dependencies

Following dependencies are built from source within RIO.

Acknowledgements