Projects . Showcase
This page shows some of the projects I have been working on during the last years. Most of the projects were part of what was intended to become the 'StreamX Engine'. This quite advanced piece of work already did a great job of rendering and stuff, yet I dropped it, partly due to some internal frictions caused by lack of design and experience and partly due to the complexity of downward compatibility. breeze can be considered as the complete rewrite, though there is not a great deal of resemblance in the way the engines work. Besides, this page also showcases some of the short term projects that I am working on from time to time.
Mandelbrot Demo (finished)
There are already a lot of these demos out there, anyway I had to try this out myself. With Shader Model 3.0 supporting dynamic loops in Pixel Shaders, implementing this demo was pretty easy, the development took me about one day.
Choosing the colors was the most tricky part when working with this fractal. The algorithm returns one integer value per pixel which then has to be converted into a nice floating-point RGB value to visualize as much details as possible. The fluctuating frame rate is caused by the dynamic loops required by the algorithm. Yet, the demo runs pretty smooth on my nV Geforce 8600 GTS. Sadly, zooming is restriced to some point due to the limitations of 32 bit floating-point precision.
Part of the StreamX Engine, this editor was intended to allow designers to create complex virtual environments in a fast and easy way. As you can see, terrain and sky creation already worked very well. Object placement was implemented, too.
The clouds in the more recent images are fully volumetric, meaning they may be viewed from any direction and even flown through. The atmosphere is created by a simple sky dome, blending two colors to simulate haze. The water approximates both reflection and refraction, perturbing planar scene textures by scrolling normal maps to create the impression of ripples and waves.
Both sky and water make extensive use of shaders, whereas the terrain is fully rendered using the fixed function pipeline. Terrain texturing is realized through texture splatting.
This handy tool is probably the biggest archievement during the development of the StreamX Engine, even having been finished - not discontinued. It allows non-programmers (e.g. designers) to build complex shaders in a very small amount of time by just dragging and connecting shader 'bricks' via mouse. Although this sounds quite simple, implementation turned out to be one of the most challenging tasks to master.
The first image displays the water shader that can be seen in the images above (see AlphaEd) in its 'brick form'. The second image shows the editor's debugging functionality, allowing for bugs (such as missing connections between bricks) to be tracked down in no time. The last images is a screenshot of the 'programmer's mode' allowing for the creation of new bricks and giving insight into the shaders resulting from the brick form.
Also part of the StreamX engine, this small and simple editor allowed for the preparation of objects to be integrated into the engine's material and shader system.
Note the possibility to add and change lights, enabling designers to immediately test their materials under different lighting conditions. Lights are visualized by red debug lines to display their location, range and shape.