All Projects → kosua20 → Rendu

kosua20 / Rendu

Licence: mit
A simple realtime graphics playground for experimentations.

Projects that are alternatives of or similar to Rendu

Herebedragons
A basic 3D scene implemented with various engines, frameworks or APIs.
Stars: ✭ 1,616 (+371.14%)
Mutual labels:  opengl, computer-graphics, graphics-programming
Open3d
Open3D: A Modern Library for 3D Data Processing
Stars: ✭ 5,860 (+1608.45%)
Mutual labels:  opengl, computer-graphics, gpu
Arcane Engine
3D C/C++ Game Engine - Created By Brady Jessup
Stars: ✭ 242 (-29.45%)
Mutual labels:  opengl, graphics-programming, graphics-engine
Awesome Glsl
🎇 Compilation of the best resources to learn programming OpenGL Shaders
Stars: ✭ 530 (+54.52%)
Mutual labels:  opengl, computer-graphics, graphics-programming
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+524.49%)
Mutual labels:  opengl, graphics-programming, graphics-engine
Diligentsamples
Sample projects demonstrating the usage of Diligent Engine
Stars: ✭ 138 (-59.77%)
Mutual labels:  opengl, graphics-programming, graphics-engine
Rabbittoolbox
🤸🏾‍♀️👗开源的动画渲染软件,提倡以简单、易用,高质量的物理演算以及渲染质量和性能,为喜爱二次元动画的用户降低视频制作门槛
Stars: ✭ 309 (-9.91%)
Mutual labels:  opengl, graphics-programming, graphics-engine
creative-coding-notebooks
🎨 An authorial collection of fundamental recipes on Creative Coding and Recreational Programming.
Stars: ✭ 17 (-95.04%)
Mutual labels:  computer-graphics, graphics-programming
nautilus
another graphics engine
Stars: ✭ 16 (-95.34%)
Mutual labels:  graphics-engine, graphics-programming
Nabla
OpenGL/OpenGL ES/Vulkan/CUDA/OptiX Modular Rendering Framework for PC/Linux/Android
Stars: ✭ 235 (-31.49%)
Mutual labels:  graphics-engine, computer-graphics
PbfVs
Implementation of Macklin, Miles, and Matthias Müller. "Position based fluids.". Visual Studio 2015 + CUDA 8.0
Stars: ✭ 100 (-70.85%)
Mutual labels:  gpu, computer-graphics
unity-raymarcher
Real-time ray marching shaders in Unity
Stars: ✭ 28 (-91.84%)
Mutual labels:  computer-graphics, graphics-programming
3D interactive graphics rendering engine
Develop a 3D interactive graphics rendering engine
Stars: ✭ 31 (-90.96%)
Mutual labels:  graphics-engine, graphics-programming
RenderMaster
Graphic engine
Stars: ✭ 35 (-89.8%)
Mutual labels:  graphics-engine, graphics-programming
Vitro
Experimental C++20 multiplatform graphics engine.
Stars: ✭ 14 (-95.92%)
Mutual labels:  graphics-engine, graphics-programming
awesome-glsl
🎇 Compilation of the best resources to learn programming OpenGL Shaders
Stars: ✭ 700 (+104.08%)
Mutual labels:  computer-graphics, graphics-programming
TermGL
2D & 3D graphics engine in the terminal [C/C++]
Stars: ✭ 219 (-36.15%)
Mutual labels:  graphics-engine, computer-graphics
ShaderToy.NET
Native shadertoy-compatible GLSL playground in .NET framework Environment
Stars: ✭ 53 (-84.55%)
Mutual labels:  graphics-engine, graphics-programming
Yggdrasil-Legacy
Experimental Vulkan Renderer / Game Engine written in C++20.
Stars: ✭ 20 (-94.17%)
Mutual labels:  graphics-engine, graphics-programming
Diligentcore
Core functionality of Diligent Engine
Stars: ✭ 263 (-23.32%)
Mutual labels:  opengl, graphics-engine

Rendu Documentation

Build Status GitHub license GitHub repo size

Example of included demos

Rendu is a rendering engine designed for experimentation. The computer graphics academic and industrial litterature is full of interesting techniques and approaches than can be cumbersome to implement without some basic building blocks. This project aims to provide those building blocks, along with examples of interesting methods or papers. It also contains more general demo applications, such as a small snake game or a gamepad configurator. See it in action: video (Youtube).

Rendu requires OpenGL 4 and builds on macOS (main test machine), Windows (regular testing) and Linux. After cloning the Rendu repository, see the Building section to get the engine running! You can also check the full documentation.

Basic resources to run each project are included in this repository, but you can download many additional scenes from an auxiliary repository for some of the applications.

Projects

Applications

Name Description
Physically based rendering PBR demo preview Real-time rendering of a scene with 'physically-based' materials (GGX BRDF introduced in Microfacet Models for Refraction through Rough Surfaces, Walter et al., 2007), using deferred or forward rendering, real-time lighting environment and shadows update, and an HDR pipeline with bloom, depth of field and ambient occlusion.
Path Tracer Path tracer preview Offline unidirectional path tracing for textured materials using Lambert+GGX BRDF with importance sampling. Supports stratified sampling, jittering, next event estimation, environment lighting contribution, emissive objects. Relies on a raycaster with a BVH for fast intersection queries against triangular meshes. Comes with an interactive viewer where the BVH levels can be displayed, and the camera placed for rendering.
Island and ocean rendering Island and ocean preview Real-time rendering of an ocean and island, using tesselation, Gerstner waves, custom sand and water shading. Underwater rendering is achieved using absorption/scattering tables, depth based blur and caustics mapping. Sand rendering is performed using high-frequency detail data and triplanar mapping.
Image Filtering Image filtering preview Apply filters to an image, such as gaussian blur, box-blur, approximate flood-fill (Jump Flooding in GPU with Applications to Voronoi Diagram and Distance Transform, Rong et al., 2006) and poisson filling (Convolution Pyramids, Farbman et al., 2011), etc.
Shader playground Shader bench preview Interactive shader viewer with editable inputs (uniforms, textures) and camera parameters for raymarching, noise generation,...
Atmospheric scattering Atmospheric scattering preview Realistic atmosphere rendering with Rayleigh and Mie scattering (Precomputed Atmospheric Scattering, Bruneton et al., 2008). Support on-the-fly lookup table updates and export.
Snake Game Snake game preview A basic game of snake, demonstrating game menus, player state, batched rendering.
Stencil demo Stencil demo preview An example of using the stencil buffer for counting primitives, creating a black and wide stylized scene rendering.

Tools

Name Description
Image viewer Image viewer preview Basic image viewer and editor for LDR and HDR images, supporting rotations, channels toggling, color picking.
BRDF Estimator BRDF tool preview Compute data for image-based lighting from an environment map: pre-convolved irradiance, BRDF look-up table, ambient lighting spherical harmonics decomposition.
Controller mapper Controller tool preview Interface to create and edit controller button/stick mappings.
Shader validator Shader validator preview Perform per-shader compilation against the GPU driver and reports errors in an IDE-compatible fashion.
Playground Playground preview Simple application setting up a rendering context for small experimentations.

Building

This project use premake5 (premake.github.io) for generating the workspace and projects files. After cloning Rendu, move to the root of the repository and run

premake5.exe [vs2019 | xcode | make | ...]

To generate the desired workspace in the build directory.

The documentation (access it at docs/index.html) relies on Doxygen being installed. Generate it with

premake5 docs

You can clean the build directory with

premake5 clean

All non-system dependencies are compiled directly along with the projects. The only exception is gtk3 on Linux.

Features

On a more detailed level, here are the main features you will find in Rendu.

  • Window and graphics context setup.
  • GPU objects creation and management (shaders, textures, buffers).
  • Resources handling and packing.
  • Shader validation at compilation time, with automatic location handling.
  • Input management with controllers support.
  • 3D rendering, including per-fragment shading, normal maps, parallax mapping.
  • Lights: omni/spots/directional lights, batched variance shadow mapping for all lights.
  • Environment lighting, using cubemaps updated in real-time with optional parallax correction, preconvolved irradiance maps and spherical harmonics (also updated on the fly).
  • Linear lighting pipeline, with HDR, bloom, tonemapping and gamma correction.
  • Depth of field with controllable focal plane and in-focus band.
  • Screen space techniques: antialiasing (FXAA), ambient occlusion.
  • Image processing techniques, such as fast gaussian blur, Poisson inpainting, flood filling.
  • 2D interface rendering (buttons, checkboxes) with support for font distance fields.
  • A raycaster CPU implementation using a bounding volume hierarchy.
  • Path tracer with GGX importance sampling.
  • Generation and rendering of a terrain using Perlin noise, erosion and fixed grid geometry.
  • Ocean rendering using a tesselated plane, far-distance proxy and absorption/scattering look-up table.

Planned

I would like to add some additional features to Rendu in the near future, mainly to get a better grasp of some techniques and allow for more experimentations.

  • Screen-space reflections and shadows (raymarching against the depth buffer).
  • Local light probes with regions.
  • Temporal Antialiasing with reprojection and clamping.
  • Particle effects (updated on the GPU).
  • Volumetric effects, such as godrays and lit fog.
  • Support interesting controllers (MIDI controllers, PS4 light bar and touchpad,...)

On a more down-to-earth level, some engineering tasks could also help improve the engine.

  • Cleanup the way materials are handled right now.
  • Add a specialized SceneApp, abstract frustum culling with draw lists?
  • Potential move to Vulkan?
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].