🚧 this page is currently under construction! 🚧
The main Echo.Core
is composed of seven major systems, each contributing a different purpose towards to the goal of synthesizing photorealistic images. These systems occupy various namespaces under Echo.Core
and are catalogued below in order of relative importance.
Table of Contents
The Echo.Core.Evaluation
namespace contains systems related to the evaluation of a Scene
(many evaluations are composited together to create a render). Besides aggregation, this namespace occupies the majority of the runtime during rendering. Its systems are listed here:
- An
Evaluator
defines how aScene
is evaluated. It takes in aPreparedScene
and aRay
, then returns a correspondingFloat4
which represents the evaluated data. ThePathTracedEvaluator
does exactly as its name suggests; it evaluates theScene
using path tracing with multiple importance sampling and next-event estimation. A simpler evaluator is theBruteForcedEvaluator
, which implements the naive recursive path tracing algorithm; it is sometimes used as a reference evaluator. Besides evaluators, there is alsoEvaluatorStatistics
that features a very lightweight statistics capture system and is mainly used by thePathTracedEvaluator
. - A
Material
defines the physical properties of a geometric surface when it interacts with light. In the current version of Echo, eachMaterial
can produce one or moreBxDF
s (described below) upon aRay
interaction. All materials are presented with more detail in Materials. - To support sampling techniques such as multiple importance sampling, Echo implements various distributions which can easily sampled from. Normally, a
Sample1D
is first drawn from aContinuousDistribution
(aSample1D
is just a number>=
0 and<
1), and then used to sample aDiscreteDistribution1D
, or select from some other source. Note that Echo evaluates theScene
in epochs, and the size of each epoch is precisely the value ofExtend
in theContinuousDistribution
. This is also whyEvaluationProfile
usesMinEpoch
andMaxEpoch
, and why number of samples per pixel isExtend
*Epoch
. - All light scattering behavior are contained in various
BxDF
implementations.BxDF
stands for bidirectional X distribution function, where the X can be either reflective or transmissive. A set ofBxDF
is created and stored in aBSDF
when a ray interacts with a surface, and thatBSDF
wraps the functionality of the containingBxDF
. Note that allBxDF
calculation are done in local space of the surface, where the surface normal points in the positive Z direction. Additionally, anoutgoing
direction points from the point of interaction towards the camera, while anincoming
direction points towards the light.
The Echo.Core.Aggregation
namespace manages spatial calculations done on the Scene
. This mainly includes the Ray
-Scene
intersection testing and light picking.
- An
Accelerator
improves the speed of - Light selection
- Preparation
The Echo.Core.Processes
namespace oversees the entire rendering process using Operation
s; it handles the full lifecycle of a render, containing the following three stages.
- Preparation
- Evaluation
- Composition
The Echo.Core.Scenic
namespace has the necessary components to building a Scene
.
- Geometric objects
- Lights
- Instancing
- Preparation
The Echo.Core.Textures
namespace defines various implementations of Texture
s, which are 2D planes that can be samples at arbitrary coordinates to get colors.
- Colors
- Textures
- Directional
The Echo.Core.Common
namespace
- Compute
- Mathematics
- Packed
The Echo.Core.InOut
namespace
- Echo Description
- Images
- Models