Directed Acyclic Graph based Rendering Pipelines


New Member
From *GSOC* abstract: (whole project proposal can be read from here.
DAG (Directed Acyclic Graph) pipelines for Terasology, is an extensive refactor of the current rendering engine of Terasology. While refactors are primarily considered to make the implemented code much cleaner and efficient, the proposed project includes enabling rendering engine to be able to support many different features that are not easily supported by the current implementation. Renderer extensibility, VR headsets, multiple cameras with different effects, minimizing state changes in OpenGL and reducing render time (by checking possible alternative DAG configuration) are features that will become available through this project.​

16th May - Meeting on Rendering
Last week, I had a meeting with @msteiger and @manu3d on how to get started on my GSOC project. Here are the key things that we discussed in that meeting:

Rendering tasks in are represented as a list. Therefore, understanding the dependencies between these tasks are not very apparent in the current implementation. To get started on my project, I am advised to focus on constructing a DAGRenderer and implement a particular task, shadow mapping as a *RenderableNode*. At the moment, a RenderableNode class is just a wrapper that handles actual rendering calls.

We also discussed how a node can receive input and send an output to another node. Such as a 2D filter node sends a frame to another node. It was decided that it will be clear after a couple of weeks later to how to plan exactly the implementation on that matter.

I will be posting more on the progress and important things from meetings to here. :)


Conjurer of Grimoires
I have been poking around youtube lately seeing what the Unreal engine does for various rendering things. It is actually astounding how much general documentation there is in the realtime rendering space. Of particular interest for the DAG is:
  1. The rendering overview: It describes how they layer the rendering processes together (see "High level Rendering order")
  2. A tutorial of making a shader: This is more just to see how when linking nodes together on a more microscopic scale, you can see how inputs and outputs start working together.


Active Member
The rendering overview: It describes how they layer the rendering processes together (see "High level Rendering order")
When tdgunes is through with this, they will want to re-engineer their whole architecture and copy ours.