steaklive / EveryRay-Rendering-Engine

Robust real-time rendering engine on DX11, DX12 with many advanced graphical features for quick prototyping
MIT License
652 stars 23 forks source link
3d-graphics deferred-rendering directx-11 directx-12 game-engine global-illumination gpu-programming graphics lightprobes parallax-occlusion-mapping pbr rendering rendering-engine rhi shaders terrain-rendering volumetric-clouds volumetric-fog volumetric-rendering voxel-cone-tracing

EveryRay-Rendering-Engine

Ver 1.1.1 (Change Log)

Introduction

"EveryRay" is a rendering engine that is written in C++ with a focus on quick prototyping of graphical techniques and features. It is lightweight, easy to use and already contains many existing rendering solutions inside.

"EveryRay" is not a game engine. It was never made with that in mind which resulted in building the engine with a minimal amount of components/systems outside the graphics part. It is not impossible to make a proper game engine out of "EveryRay", however, there are many other projects that were architectured specifically for that instead.

"EveryRay" is not a library that can be disconnected and connected to your project either. It is not modular and was never meant to be. However, there is at least a distinction between low-level graphics code and high-level systems in the engine which you can borrow for your own needs.

Lastly, "EveryRay" was made by a graphics programmer for those who are interested in real-time rendering and who do not want to spend time setting up a bunch of engine-related things that are needed when you begin writing your personal engine of any kind. You can think of "EveryRay" as a "toy engine/tech demo on steroids" or, in other words, a simple sandbox with minimal UI for testing complex ideas with the help of various prepared functionalities.

You can read more about the architecture of "EveryRay" in the documentation:

You can see a video demonstration of "EveryRay" here (scroll down for screenshots):

Rendering features

You can read more in Graphics Overview

Engine features

Controls

Gamepad is currently not supported/tested with ImGui.

Screenshots

picture picture picture picture picture picture

Scenes

Over the years many scenes have been created for "EveryRay". However, to make things simpler, only a few are included in the public version of this repository: Name Description Screenshot
testScene_simple Default startup scene with a few basic objects
testScene Advanced scene with various materials, post-effects volumes, foliage, lights, and light probes
terrainScene Foliage and several types of GPU indirect objects scattered on top of terrain

Learn more about levels in Engine Overview

Roadmap

Big features that require a branch/merge request and a considerable amount of time.

Engine

Graphics

External Dependencies

References

Requirements