Tuesday 23 March 2010

Lifeforce draft #1

The date is 26th of April 2007 and Archmage of Andromeda joined forces with ASD to work on a new demo codenamed "lifeforce"! I wrote the following storyboard in our mailing list to introduce him to the concept.

It is interesting to see how much (or little) the demo has changed since then:


Lifeforce by ASD
A demo for Assembly 2007

Sequence of parts:

1) Desert part (part_desert). Introduction: pan over
dried landscape with a few artifacts scattered (the
skeleton fish from iconoclast) and maybe some ruins
(church/ancient). In the style of 'deformation of the
cranium'. It is dawn or dusk, the color of the sky is
blue/reddish with some clouds.
As the camera pans it focuses on a pillar (ruins?)
where several polaroids (from iconoclast) are pinned
(the move by the wind in sinuisoidal fashion). The
camera zooms in (or rather FOV is reduced) to one
polaroid. The next scene starts inside the polaroid.
Duration: 15-20 secs.

2) Introduction (part_introduction). The part with the
head-god from iconoclast. There will be some
worshippers there. This is essentially a continuation
from the last scene of iconoclast. The head opens, we
dive in, animations, the ASD logo and dive further
down. Duration: 64 secs.

3) Rainbow ride (part_afterintro). Camera pans to the
right, parallel scrolling, all objects rendered as
silhouettes. Trees pop-up, then the VW (?),
spits out the name of the demo. The rainbow strips
extends and camera traces it. Some other VWs are
riding it. Eventually only the red strip is left and
it is laid upon a hand in space. A knife cuts through
the strip. The camera changes to show the blood
pouring out and zooms into the red. Duration: 75

4) Air-bubbles in liquid (part_liquid). Black air
bubbles rise in a container of viscous red fluid. A
bonzai tree is also part of the scenery. The whole
part is again 2D, rendered with stylized vectors in
black and red. The bubbles reach the surface. Then a
tree "dives" in the liquid and the camera pans and
zooms into its roots (the tree is upside down). What
follows is probably some sort of fractalesque growing
of the roots and zoom into the next scene. Duration:
26-28 secs.

The following parts might be in a slightly different
sequence. Haven't made my mind yet.

5) Rendering of the "jones brahmins" statue
which will be on a plane, probably floating in
space/skybox. The rendering will be photorealistic
and it will look like it is carved out in realtime (in
2.5D), starting from a completely flat surface. Use of
bump, parallax, ambient occlusion mapping. It
should look as good as the statue in
lapsus(http://www.pouet.net/prod.php?which=130). Once
the rendering has finished the plane will rotate to
reveal something else at the back. For that I'm
thinking of something rendered with the
crystallized/refraction rendered. Probably if we could
find a model of the human heart, then I could do it as
transparent and add some blood vessels in
there. Once this is done the plane will rotate once
again. This time, instead of statue there will be a
simple merry-go round. The lights will go down and
from realistic the rendering will become two-tone
again. This is also an ambient moment for the music -
there will be some speech: the three female voices (in
different age) talking about the passage of time
(similar to the beginning of dark side of the moon by
pink floyd). As this is finished, the camera will
rotate/zoom into a feature of the merry go round which
will be a tower bell ringing. All rendered in b/w. The
ringing will be in grave rythm. This is the point of
the demo after which whatever follows is the
'catharsis' - We are beyond the midpoint. Something
like the 'blood' part in planet risk and the music box
in iconoclast. Fade out. Duration: 25 secs for the
statue, 30 secs for the heart (?), 20 secs for the
speeches and 10 secs for the bell =
85 secs.

6) Scene of the toy shop: a shop with shelves. The
shadow of a person (2?) looking into the shop is cast
upon the front glass. Camera moves past the glass,
zooms into a box which is a bathroom, all rendered
photorealistically, textures, ambient occlusion etc.
The camera goes to the floor where there is a light
bulb the goes on/off. A cable extends from the light
bulb and surrounds objects in the scene - maybe also
snakes ? The camera eventually goes into the plug-hole
of the sink/bath. The feeling here is dark - colors
are brown/ dirty.
Duration: 55-60 secs.

7) Infinite zoom with stylized vector graphics in
animation, some combination of 'infite zoom with
pixelled graphics'. The camera zooms in, pans, moves.
There is alot of energy here. Some simplified 3D in
here, all rendered with minimal colors (4-5 shades of
b/w). Eventually zoom out and next scene.
Duration 60 secs.

8) A scene similar to the first one, only now it is
water and it is night. We get out of the polaroid and
look at the distance. It is idyllic, very big moon on
the sky. From a distance a giant hand comes out of the
water and grabs the moon, pulls it down, and then a
nuclear explosion (like in second reality) happens in
the distance. All this happens within 5-6 seconds. The
heatwave/debris hits us after 4-5 seconds. Fadeout.
Duration: 15-20 secs.

9) Credits. A cross section of the floor of the sea
with rigid-body stones (with our names carved) that
sink slowly and interact with the sand (and each
other). The end.

Duration: 20 secs.

wow what a ride. Lets see how much time all this will
take: About 430 seconds, which is 7.10 mins.
Iconoclast was 8.00, so I think we are ok. There are a
couple of effects that can be interchanged, especially
in the bathroom/merry-go-round/heart scene. Now, some
will say that this is all silly. OK this is only a
demo remember. There is a common element which I'll
try to explain:

The demo is about the passage of time. How is time
affecting the living/organic things and their
constructions. I want to give it a dark/futile edge:
So, for example, while you have a rainbow with lovely
bright colors, it all ends with a knife and blood.
Several other scenes are also dark: The statue with
the humans in a philosophical pose - Not living any
more (cast in stone!) as opposed to the heart which
beats (the other side of the plane). The fact that it
starts and ends very similarly also helps the
narrative. Lets say that this is all a big nightmare,
and we want the viewer to feel numb - excited for the
spectacle (graphics + music) but numb about the

Anyway this is a first draft. I'm working on almost
all parts at the same time but trying to finish them
in sequence. Part 6 and 7 must be done with lots of
gusto and will need some help from our graphicians.

Pls reply with your thoughts


Friday 19 March 2010

Nominations and news

It is just a week to Breakpoint and the scene.org award nominations are out! We got quite a few this time for our demos Rupture and Chameleon. We thank the jury for considering our demos and look forward to the award ceremony itself. Have a look at who is nominated for what here.

So it is a week until Breakpoint opens its door, but I won't be going there. I'll be in Greece with my family, celebrating the orthodox easter which falls on the same weekend as the catholic one. I'll try to watch as much as possible on a stream (I hope there will be one).

Before travelling to Greece my plan is to finish a good "beta" of iconoclash, with all the timings/cameras/effects/animations finished. No music yet, but I'll record the demo on a video to give the musicians an idea of the mood of the later stages. Also before I go I'll post something on my blog that our hardcore fans may appreciate: the original draft of Lifeforce, written about 3 years ago in English. Why was it written in English and how much of the storyboard made it into the demo? you'll discover soon.

Tuesday 16 March 2010


Today I'll talk about changing scenes by fading in-out. I use it very rarely when moving from one scene to a different one and more often when moving between cameras that point to the same environment. The list goes like that:

  • No fades. Camera just cuts from one scene to the next: useful in fast paced demos.
  • First scene plays, cut, second scene fades-in: I quite like this; there is no fade-out on the first scene, so there is no sacrifice of a couple of seconds of valuable screen time.
  • First scene fades out, darkness, second scene fades in: I use it in the rare occasions that I want to change from one scene to the next without doing anything clever with transitions. The fade-to color is almost always black but sometimes it is white or "tv noise".
  • Cross fades: very hard to do in realtime - you need to render two scenes at the same time. While feasible it will "spike" your framerate down if not done carefully.
I try to keep it so that there are only 2-3 "fade" effects per minute. I think this is the sweet-spot for megademos.

Friday 12 March 2010

Look ma! no cubes!

Cubes in demos have dominated our screens since the beginning of time. It is easy to see why: they are very easy to model, UV and render efficiently. With cubes you can make tunnels, emulate physics (by stacking them, for example, then pushing the bottom one and watch them crumple as in jenga) , or create more complex objects by putting thousands of them in a voxel-space like arrangement.

For me cubes is a turn-off, unless it is done with extreme finesse (like in Debris and Stargazer) . It is very hard to replicate the wonderful effects in these demos, so, I won't be bringing any cubes with me this time then.

Wednesday 10 March 2010

On typography

Traditionally, typography has an important place in demos. We use text for various reasons:

  • To name the demo (i.e. "Dreamchild")
  • To name our group ("ASD")
  • For all credits ("code: navis, music: Amusic" , or shorter: "navis, amusic etc.")
  • To greet other groups ("rgba, fairlight, mfx etc.")
  • To name the event (i.e. "presented at Assembly 2003" )
  • To write scene poetry ("We used to exist.. used to dream.. blahblah")
Adding text is an easy way to add 30-40 seconds of content and give your demo a chance to take a short break from its usual flow. Everybody expects to see at least the name of the demo, group, credits and greetings, it is part of the demoscene conventions.

But I do have a problem with it. When I present demos to the public, people always ask me "What/how the hell is fairlight, rgba, mfx etc." and then I have to explain. That was one of the reasons why there were no greetings in Rupture (the other, more important, because there was no place for them).

I haven't made my mind yet about what will happen with all the typography in "Iconoclash". But if you don't see your group greeted don't worry - yet again, function follows form.

Tuesday 9 March 2010

Rendering a face

In my previous message I described the pipeline for rendering a frame. Today I will talk about the common material shader I use for pretty much all objects in the new demo.
  • I use Lambert shading, almost all faces are flat (hard edges in Wings3D). However, object are well tessellated.
  • There is an ambient component, a very slight diffuse (the difference in intensity between the face looking towards the light and away is less than 20%) and in most cases no specular.
  • UV coordinates for texturing are calculated on the fly, based on direction of normal (vertex shader). I never store UVs in a file (although I could, using wings3D's auto-UVing, but it would be a waste of time: I get a very good result with my own auto UV-ing anyway). Needless to say, all textures are tileable. I do a couple of passes adding different octaves of textures to reduce any sense of repetition.
  • Shadow mapping is performed as usual with projected texture look-ups. Sometimes I do more than one passes with slightly different projection matrix to smooth-out the artifacts on the edges of shadows.
  • On top of everything I project and multiply a "Gaussian blob" texture in the direction of the camera. This adds a slight spotlight effect and improves realism quite a bit. An extra step here is to alter the projection matrix by a factor determined by the texture underneath. This way I can emulate pretty well a very soft "bump/gritty" effect. You can see this effect in the bathroom scene in Lifeforce.
  • Then there is an element of fog - furthest objects appear darker. Pretty easy that.
That list covers, more or less, the vast majority of material shaders that I use.

Saturday 6 March 2010

Graphics pipeline

I will describe today our new graphics pipeline:

  • One or more passes (from a different camera) of the geometry is done to produce the shadow map(s).
  • Using flexible buffer objects I then render the scene into 3 buffers: one buffer holds the lit & textured objects, another the normals, and another the depth map.
  • If needed, another pass calculates the relative movement of all objects during the last frame and stores the direction of all moving pixels in a 2D "velocity" map. This is used to emulate the motion blurring effect.
  • They are all combined (in what could be called deferred shading) by a 2D pass - in here we get the screen space ambient occlusion and occasionally some other minor effects (the effect in rupture is done in this pass).
  • The output of that pass (a 2D texture) is passed to a "blur" and "radial blur" filter, in much lower resolution (a quarter in each dimension). There is a per pixel flag (stored in the alpha channel and calculated in the second step) to determine which pixels are blurred and which are not.
  • The combined output of all that is passed to a further "depth of field" full resolution 2D effect. This pass also does the per pixel "smearing" that is easily calculated using the velocity map. Additionally there is a very light full screen motion blurring effect to enhance the "handycam" effect.
And then you have a frame. Enjoy.

Thursday 4 March 2010


Magical "5 minutes" reached. The beginning of the end is near!

I like it when a big project reaches that state. I can now concentrate and try to wrap it up properly. No need to panic, plenty of time till August. All the hard work, with regards to texturing, animation and modelling, has now been done.

Tuesday 2 March 2010

Relaxation time

I was reading this article in-between work and play, and thought of having a go myself. So I wrote this little program. This is the outcome.

Top image is original, second left is how it is fed into my filter and then how it comes out. 50% of pixels are missing, yet the result is not bad at all.

Back to my demo now. Got to hurry!

Monday 1 March 2010

Scene.org awards 2010

I'm pretty sure there will be an award ceremony this year at Breakpoint 2010. In case there isn't, here are my *personal* winners:

  • Breakthrough performance: easy. Adinpsz. Check out their crazy demo from Main 2009.
  • Most original concept: nothing stands out, but my vote goes to Jesus Christ Motocross by nature & traktor and *not* the Golden path (as you would expect) for obvious reasons.
  • Best Graphics: Frameranger by Fairlight.
  • Best Soundtrack: Rupture by ASD.
  • Best Direction: Can Elevated get it? if not then Frameranger.
  • Best Effects: Frameranger by Fairlight.
  • Best Animation: nothing memorable this year. I'd not give the award to anyone.
  • Best 4k intro: Elevated by rgba & tbc, obviously.
  • best 64k intro: Transform by ate bit. Not a great 64k year though.
  • Best demo on oldskool platform: Jesus Christ Motocross.
  • Best demo: Rupture by ASD - or Frameranger. But then again I'm biased :-)