Me and my friend Marries are working on a research project into different types of renderers. Our goal is to compare forward which is standard to deferred and inferred rendering. These techniques actually all define how dynamic lighting on visual objects is done.
We are programming a rendering engine in C++ that is capable of supporting all theses types of rendering. We developed a complex material system that heavily depends on DirectX HLSL shaders to support all these features. Because we need to support lots of types of rendering for a single material the HLSL effect files tend to grow very large and complex. I noticed this early on in the project and decided to pick up and old interrest of mine: a visual node editing system or node based material system as I prefer to call it. I am creating a stand alone application in C# where a user is able to drag nodes and link them together to form a material. Nodes can have properties that define their behavior in the final effect file. The output of the application is a HLSL file ready to be used by our engine.
Last week we hit a milestone as we were able to use the material system of our engine. We completely decoupled the scene management stuff from the rendering stuff. I wrote some plugins for maya that export content to a file format that our engine is able to load. This week we hit another milestone, the forward renderer is kinda operational.
This project is actually taking a lot of my time. Fortunately I only have two days of college (two full days though) so that gives me lots of free time.