Skip to content
/ RIO Public

Render In OpenGL: Experimental Farm for Real-Time Rendering Algorithms

License

Notifications You must be signed in to change notification settings

LanFear-Li/RIO

Repository files navigation

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

About

Render In OpenGL: Experimental Farm for Real-Time Rendering Algorithms

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published