Here's a little video of mine and Punqtured's entry for the DBF Xmas Compo, entitled "Merry Christmas DBF!".
It's a little OpenGL intro, that didn't quite get finished in time. I should have a 'final' version ready in the near future, but I wanted to make a video available for now (in time for the compo). Some parts didn't get finished in time and some were removed due to being buggy (craggy rocks, trees and textures mainly). I'll try and get those in for a final. Sorry the video quality isn't great. I used Windows Live Movie maker to process the output of Fraps (for YouTube) and it's a little grainy (and those damn borders at the sides).
Exe size is ~12KB. There are no textures or data included in the intro, everything used is generated at runtime (apart from the font "Trebuchet MS Bold" from Windows)

[youtube]wM_p5hAA510[/youtube]
Credits:
Raizor - Code/Design/Modelling
Revival - Code
Punqtured - Music
I had to overcome quite a few challenges when putting this together (which ate the majority of my dev time, sadly). It contains an implementation of
IQ's ZBuffer for Raymarching technique, which took quite a bit of head scratching (and some of Revival's patented magic) to get working properly. I hope to write a tutorial covering a detailed walk-through of this. Essentially, it allows you to write depth values to the z-buffer from the raymarching shader. You can then throw regular geometry (GL_TRIANGLES, GL_QUADS etc) over the top and the depth testing gets taken care of automagically. For this to work, we need to pass the current matrices (modelview, projection etc) to the shader, so that it can perform the necessary transforms for camera and lighting before raymarching. Once this was working properly, it gave me the idea of drawing regular bounding objects (for the raymarched objects such as the snowman and logo) to an offscreen buffer (an FBO, in this case). We can then pass the offscreen buffer image into the raymarching shader to allow it to perform a colour check of the current screen pixel being raymarched. If the pixel does not contain the snowman or the logo, we can simply avoid evaluating the distance functions for those objects, which provides quite a speed up. I'm sure this technique isn't new, in fact, I've got a vague feeling I read about something similar in one of Smash's blog posts some time ago (I'll have to check).
Hopefully it hasn't turned out too badly. I'm a little sad that I had to remove some parts and didn't get time to add some others. I had hoped to get the text to feel more a part of the intro, by having it intersectng the terrain, but didn't have time to that in the end. There are also some bugs with the shadows due to the bounding boxes used for culling. Here's a little list of what's missing:
1. Snowman arms.
2. Clouds and cloud shadows.
3. Craggy terrain.
4. Snowman face animation.
5. Trees.
6. Textures.
7. Better lighting.
8. Proper animated text.
9. Decent sync effects.
Well, that's it for now. Feel free to ask any questions. I appreciate some of the techno-babble above may be a little overwhelming. It was certainly new to me, but it's been kinda fun figuring it out along the way. I'll hopefully upload an exe version in the coming days. Quite tied up with Christmas stuff at the moment, so not a lot of spare time

Anyway, Happy Christmas!
Raizor
ps. Sorry if I missed anyone in the greets. Feel free to say if I have and I'll add you
