An awesome ray traced 3D renderer build in C# from scratch!
Getting started »
Report Bug
·
Request Feature
Echo is a physically based 3D rendering software package; that is, Echo takes in a 3D scene and captures a 2D picture of it. Scenes are given to Echo as a data collection of geometric shapes, texture and material parameters (which describe physical properties of the shapes), light sources that illuminate the scene, and a camera perspective from which the picture is captured. Since Echo is a ray tracer, it captures and synthesizes a 2D picture by shooting billions of rays in the 3D scene to understand its visual features.
Echo was built from the ground up using C# without any external libraries for all its core components. All rendering features are available to be explored through a standard GUI application (see Echo.UserInterface) and/or accessed via an extensive programming library API (see Echo.Core). While Echo was only initially an exploratory project, it has now grown to become fully usable as a photorealistic renderer with many advance features. See the Gallery for renders produced by Echo, or navigate to the Getting Started page to begin using it!
Diffuse
, Dielectric
, Conductor
, Emissive
).async
keyword constructs.AutoExposure
, Bloom
, ToneMapper
, Vignette
, and Intel Open Image Denoise).Echo.UserInterface
for debugging implementation and scenes.Academic Papers & Articles Implemented:
To get the project source code, simply clone the repository:
git clone https://github.com/GaryHuan9/Echo.git
You will need at least dotnet 6 to run the project. A good visual introduction to Echo would probably be Echo.UserInterface
, and you can launch that by going into the Echo root directory and run the following command. Note that the first argument is a path to a scene to be rendered, and in this case, it will render the Stanford bunny!
dotnet run --project src/Echo.UserInterface ext/Scenes/Simple/bunny.echo
For more extensive information on how to use Echo, please see the Getting Started page!.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contribution you make will be greatly welcomed and appreciated. If you have a suggestion that would make this project better, please fork the repo and create a pull request. Take a look at the contribution guide for tips and suggestions on contributing to this project. You can also simply open an issue with the tag enhancement
. Thanks again for your contribution!
Distributed under the MIT License. See LICENSE.txt for more information.
All the following images were completely rendered and post-processed in Echo:
Canonical Cornell Box
Rough Glass Material Ball
Lego 856 Bulldozer on a Table, model by Heinzelnisse (CC-BY-NC) and PolyHaven (CC0)
Two Blue Bugatti Chiron, model by zizian on Sketchfab (CC BY-NC 4.0)
Echo.UserInterface During a Render