direct to video

October 6, 2009


Filed under: demoscene — directtovideo @ 9:09 am

I made a new demo last week (specifically, the last two days of last week).
blunderbuss by fairlight

The great thing for me about making large demos which take ages, like Frameranger, is that they generate a lot of new material. So much stuff got tried out over the course of making it. Some of those things never made it in, some did but only as a small cameo performance. The bad thing about doing large demos which take ages is that they take ages, they’re a lot of hard work and stress, and ultimately don’t give a very good return on the time and effort invested – so much material doesn’t get used or barely gets noticed, and you’d make approximately one demo every year, which isn’t good for the release status of most demo parties. Also you tend to lose your way and change direction a few times over the course of development, which just leads to more wasted material.

That’s where doing small demos comes in. Doing something small and fun in a few days, with a single concept and small amount of material. You start it, make it, finish it and release it before you have a chance to change your mind or lose your way. Such was the development of this demo. It’s like comparing a holiday fling to a long term relationship – a nice mix of both gives you a well rounded life..

This demo started out as an effect in Frameranger that didn’t get used too well. I wanted to work on it some more and add to it – solve some problems that showed up during development. Then I started looking around the internet for ideas about how a modern particle effect should look. It’s a common process for me for realtime graphics development – first doing a search to see what the state of the art is in offline rendering, then trying to get as close to it as possible in the constraints of realtime. I found some really interesting sources related to the offline particle renderer for 3ds Max – Krakatoa. The main thing I picked out was the really nice looking shadows and lighting, and the fluid dynamics movement, so I tried to do something similar. I’ll follow this post up soon with the technical details.

My test started to develop into something that could actually be a demo in it’s own right. On the monday I looked around on my hard drive to see if there was a suitable piece of music I could use, and remembered a great tune by Bliss which I had my eye on using for a while. Bliss is an old friend – he actually did the soundtrack for my very first demo years and years ago. He doesn’t do much for the demoscene anymore but we still keep in touch now and again. I sent him a message to ask if I could use it and he said yes. The music is in my opinion totally beautiful – give that man a record deal!

The next couple of days were spent developing the effect code for the demo – adding text attractors and suitable emitters to the particle system – and then finally building the piece in the demo tool. The piece is much shorter than usual at only 2 minutes long, and it only features one effect, so it’s incredibly simple compared to most of the demos I’ve done before. That meant that it had to be more polished. Even though it’s only one effect for the duration I tried to give it a “story arc” – changing colours, emission rates, synced hits and using text attractors in the right place so it remained interesting over the timeline. It was done in good time to enter in the demo competition at Main, and placed 2nd. Not bad for a couple of days work.

I should point out in case it wasn’t already obvious – the concept isn’t exactly original. Here are some of the main sources of inspiration, although there are plenty out there:
youtube; youtube: these gave me the basic idea for the effect – the movement, rendering, and also the idea to decay the colours on an arc over time moving through several different colours over the life of the particle, which really helped shape the look. These, particularly the second one, really formed the effect – thanks to the author!
youtube: A beautiful piece. Some of the presentation ideas leaked into mine – e.g. the concept of a side scroll and the use of a spot light. It’s also a great example of how to turn one effect into a whole piece and give it a “story arc”. The particles and movement aren’t as nice as the Krakatoa ones though – I believe this used Trapcode Particular for aftereffects.
link: this helped form the smoke idea. Amazing piece – I aspired to get anywhere close to it.


  1. AAhhhh! Shadow is too dark, it would look much neat with the shadow 50% less strong. Made me feel like some of the cameras on Elevated 😦

    Apart from that, fucking rocks.

    Comment by Mr.doob — October 6, 2009 @ 10:01 am

  2. Congrats! The demo is cool and the music by Bliss is great. He should really get a record deal. It adds all up. And I realisied that fluid simulation in the final scenes of Frameranger. It looked really awesome.

    I guess you’re using a Jos Stam fluid solver with a 3D grid, right?
    Could you please give some more details about the text attractors? Are you using bitmaps with rendered text to place multiple point attractors in the grid?

    I’m looking forward to the follow-up and please, keep up the good work! 🙂

    Comment by Rene Schulte — October 6, 2009 @ 11:15 am

    • The text attractors are quite simple.. I take a 1-bit bitmap image and generate a texture where each pixel contains the position of the closest filled point on that image (like generating a distance field). I randomise the Z a bit because it’s otherwise just a flat 2d image. Then in the shader when updating the particles, I project the particle into the space of the 2D image, look up to find the closest filled point (with a bit of randomness), and then attract the particle towards it weighted by the distance to the point. I also adjust the weight by the life of the particle so it doesn’t attract as much when first emitted or when dying.

      Comment by directtovideo — October 6, 2009 @ 11:23 am

      • Now that was a fast answer. I just saw the other good posts on your blog and subscribed to your feed. 🙂

        Comment by Rene Schulte — October 6, 2009 @ 6:09 pm

  3. Looks beatiful indeed. Are the particles fetching forces/velocities from the grid simulation (I doubt it was sph)? What’s grid resolution then?

    Comment by Denis — October 6, 2009 @ 4:05 pm

  4. Best realtime particle system EVER! 🙂

    Now, this might not be the best place for bugreports, but the comments thread on Pouet got kind of out of hand, and I could find no other contact info, so I’ll try it here:

    In both Blunderbuss and Frameranger I get severe sound bugs, with cracking and popping noises.
    I tried a couple of demos from other groups that use bass.dll and they sound fine. Any idea what could be going on?

    My system is a Core i7, 4gb RAM, ATI4890, XPSP3. Soundcard is the onboard sound on my ASUS Rampage 2 Gene motherboard.
    System is a

    Comment by Sdw — October 6, 2009 @ 9:01 pm

    • hey – curious bug. how does older stuff using the same sound code like media error, realtime generation, falling down sound? is it just those two demos which break?

      Comment by directtovideo — October 7, 2009 @ 7:48 am

      • I just went through the three demos you mentioned, and no sound problems that I could identify atleast. So only Frameranger and Blunderbuss seems to have the issue.

        Really weird if you ask me!
        Oh well, at least I got a reason to rewatch some nice demos! 🙂

        Comment by Sdw — October 7, 2009 @ 9:08 pm

  5. Matt, have you disabled floating point samples ? remember we had that probleme earlier 🙂

    Comment by Pantaloon — October 16, 2009 @ 4:08 pm

  6. Hello mate, that’s impressive!
    When will you release it for Linux?


    Comment by Emanem — October 17, 2009 @ 5:42 pm

    • Sorry, no chance – it’s using direct3d, and I have no interest in linux whatsoever anyway. 🙂

      Comment by directtovideo — October 18, 2009 @ 5:12 pm

      • Too bad…
        Anyway, out of curiosity, any specific reason you don’t use OpenGL?
        Are you sponsored by microsoft?

        Why do you prefer D3D over OGL?
        I’ve written some stuff with GLSL as well (GPGPU old school in from 2005 to 2008) and I think it’s kinda complete…


        Comment by Emanem — October 18, 2009 @ 5:16 pm

      • Not the place to argue about rendering APIs but..
        I choose d3d for purely practical reasons. D3D drivers are a lot more compatible between different graphics hardware vendors (particularly ATI). You don’t have to mess around with extensions to make things work on different cards. The shader compiler is better, the code parser is in D3D not in the driver like GLSL (which causes more cross-compatibility issues), and it does a better job of optimising too. D3DX has a load of useful stuff in it which eases development. Debugging and profiling is far easier on D3D using high quality, free tools.

        I’m not into using a certain OS or platform for some political or ideological reason. I’d use whatever had the best support and software and did the job the best, and the most users to watch the results. Windows has the best gfx drivers, visual studio, and all the other software I’m using for development, and still has the vast majority of users. Porting just isn’t worth the effort (especially given the number of people who just watch this stuff on youtube anyway 🙂 ). I don’t want to mess around fighting with the platform working out why some gfx feature doesnt work that works on windows, just want to get on and make things. 🙂

        Comment by directtovideo — October 19, 2009 @ 8:01 am

      • I totally agree! These religious API / OS / tech debates are a waste of time and completely obsolete.

        Comment by Rene Schulte — October 19, 2009 @ 8:12 am

      • Hi, thanks for the answer.
        Now, I don’t want to get into a flame war.
        Again, not a religious thing.

        From my experience I always preferred to use OpenGL+ GLSL because of the portability; it’s true, 4 years ago there weren’t very good developing tools on Linux like Visual Studio (or weren’t properly functioning), but now, as for visual editors/debuggers we have a much better situation.
        I was used to VS auto completion, but once I switched everything to Linux 3 years ago, I started thinking more and writing better and more efficient code; it’s 10 years that I use C and C++. I started on Windows, but now I definitely prefer Linux. Regarding the tools, for example, Valgrind doesn’t exist for windows, and is free and OSS, and does a lot more than purify or other things.
        From an OpenGL point of view I can say thet the best debugger is not free (gDebugger), but I think there are similar free tools as well ( ).

        Anyway, from a computer science point of view, in theory is better to compile the code for the shaders locally than before; when you compile them locally the compiler should be able to better optimize the assembly, than a generic compile.
        Is like when compiling with gcc and the -march=native flag. Clearly the code should be only runnable on the current processor type, but it’s better optimized.
        I think everyone that has studied a bit of computer science can only agree on this…

        Now, saying that OpenGL drivers (most of all ATi of 2~3 years ago) weren’t good is another story… (and I agree on that – regarding 2~3 years ago)

        But now times are changing. ATi has improved a lot their OpenGL drivers on both Linux and windows (they know the pro market and all the scientific computation visualization is done in OpenCL/OpenGL and mostly on Linux workstation).

        I would give it a shot, considering the effort. You never know where your passion may lead and using open standards will ease the portability of your works in different situations.


        Comment by Emanem — October 19, 2009 @ 8:20 am

  7. Yea, I’m well versed in cross platform development and OpenGL (can you guess what I do for a living..?) – my choice of d3d stuff for hobby development is an educated one. 🙂 I choose the path of least resistance. Oh and btw, my demo tool is written in MFC – that won’t port either. 🙂

    It’s probably better on Linux than it was a few years ago but there’s still no big reason that says “yes, that is so much better than what I have now, I must move immediately!!”. There’s no point to say that it’s almost caught up with windows – I want to know why it’s enormously better to justify all the effort required to move. The only thing that almost made me want to move back to opengl was the dx10/vista issue.. but i’d stick with windows all the same.

    By the way, you’re right that in theory it’s better to compile shaders locally – but can you imagine the chaos if every executable was shipped as C++ source code and you had to compile it locally, using different compilers with slightly different syntax and a different set of bugs and so on? That’s GLSL right now – causes a lot of pain for people working on nvidia porting to ati, for example. Performing a local step on byte code makes sense, though. (But i think thats how the other hlsl languages work anyway.)

    Comment by directtovideo — October 19, 2009 @ 8:42 am

    • Replying to this post mate.

      Well I’d say you’re into 3D RT stuff 🙂
      I understand your points as well, I’m just sad that your beautiful demo won’t be ported to Linux.

      Btw if you were using OpenGL at least in wine it would run very smooth…

      Anyway as I said before I see what you mean, so have a good one.

      Peace out,

      Comment by Emanem — October 19, 2009 @ 11:19 am

    • Exactly, developing for OpenGL is a continuous fight against GLSL compilers and extensions… A lot of hot features but lousy support.

      I wished I had started with DirectX earlier 😦

      Comment by ponce — February 12, 2010 @ 12:40 pm

  8. […] demoparty MAIN#4, la que tenía la pantalla más grande de Europa, y su autor publica en su blog un making-of, además de un buen post de explicación sobre como conseguir ese efecto de humo tan […]

    Pingback by Ref: S/N » Blog Archive » Máquinas de humo — December 14, 2009 @ 7:43 am

  9. This is the second article I read on this site, my english is not very good but I liked it either way.


    Comment by JB — January 17, 2010 @ 2:18 am

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create a free website or blog at

%d bloggers like this: