It has been quiet the last couple of months but that doesn’t mean nothing happened on the moviesandbox front. It turns out programming a realtime animation tool is quite a task and takes its time.
In the recent weeks, a lot of interface and rendering progress has been made and I thought I’d share some of it here.
First off, Moviesandbox now lives in this generation of graphics, making full use of OpenGL 2.1, pixel and vertex shaders and Framebuffer objects (or “rendertargets”).
It’s obviously a huge improvement from the now 5 year-old UT2004 engine (and there’s a lot more functionality when it comes to non-rendering issues, but that’s a different post).
One of the most fun things this makes possible is Screen Space Ambient Occlusion.
This was introduced in a paper by Crytek (siggraph pdf from 2007 here , wikipedia page here.
It looks for areas in the picture that are less likely to receive light from occlusion (as the name suggests). Here’s a screenshot in Moviesandbox:
No lighting has been calculated in this scene. All shading is done using this Ambient Occlusion shader. Credit goes to this discussion at Gamedev.net.
Next up is Depth of Field. It was one of those Eureka moments when I finally managed to bend UT2004 to rendering DOF by rendering 6 rendertargets spaced evenly around the camera, looking at the same point. A tedious and hardware-hungry process that can be highly optimised with today’s shader technology.
I am rendering the scene in a 16bit texture to get the depth information (also useful for the SSAO above) and then fading a blurred picture of the scene (using a 5×5 Kernel Gaussian Blur if you’re interested) on top of a regular picture of the scene, blending depending on the 16bit depth map. Result in video form:
Moviesandbox Depth of Field Test from Friedrich Kirschner on Vimeo.
Both of these run well within 30fps on a Nvidia 8800GT.
Feel free to ask about details and expect some more updates on the technical side of development in the coming weeks.