Does anyone have any good resources for creating special effects, aimed at programmers. I'm not specifically interested in particle effects, but broader things like:

  1. Fullscreen effects, blur, depth of field, damage
  2. Explosions, shockwaves
  3. Weapons, lasers, projectile
  4. Environment - light "glows" and beams, water, bubbles, dust etc

I'm interested in these things from a technical perspective rather than an artistic one.

EDIT: To clarify, I'm not interested in the low level details like "a method for doing depth peeling on SPUs" or "fast particle rendering with vertex textures", I'm interested in how people have combined various techniques into a recipe to show a special effect for the game.

For example - when rendering a "space" explosion:

  1. Draw opaque bright sphere at center.
  2. Draw alpha'd shockwave around a random axis.
  3. Expand sphere and decrease alpha.
  4. Expand shockwave and rotate UVs.
  5. Spawn particles showering randomly from center.
  6. Wobble camera when shockwave reaches viewer position.
  • 3
    \$\begingroup\$ Your example is definitely an artist, not a programmer, domain. Programmers give artists animation tools (usually a fancy UI for spline interpolation), and artists are the ones who figure out "hey, these splines make a good explosion." \$\endgroup\$ – user744 Dec 5 '10 at 10:03
  • \$\begingroup\$ I like your example a lot. It would be fun to see people add their own recipes. me likey space explosions. \$\endgroup\$ – Dr. McKay Dec 6 '10 at 1:20

I'm a big fan of many things moving simultaneously at slightly different rates.

Take a look at (shameless plug) KØЯ., a vertical shooter I wrote a bit back. I'm quite proud of the explosions. They're a bunch of simple arcs (literally, I drew a circle in Gimp, then deleted an offset circle out of it, then saved it as a .png) rotating about all three axes at a random speed, expanding at various speeds, slowing down at different speeds, and fading out at different speeds. All of that is random. I just tweaked the randomness a bit until it looked good and went from there.

One thing I've started to realize is that subtle intentional breaking of the laws of physics looks awesome. I imagine we've all seen anime with people leaping off walls or falling ten stories and landing in an instant. We know that stuff isn't possible, so our brains interpret it as "omg this person is so awesome they can defy physics."

The explosion effects are the same way. You can't have an expanding sphere of explosion with some parts accelerating and some parts decelerating. That's crazy talk! That can't happen! And yet, that's exactly what I do, so, bam! It looks awesome.

You can also - as you can see in KØЯ. - get a lot of mileage out of "stylistic design" (read as "the programmer sucks at art so he makes monsters that consist of a bunch of colored boxes") and fancy linework and bloom, as long as it's all consistent and looks like the designer was clever instead of just incompetent.

Fundamentally, though, look at other games or movies and see what they did. Go play Gratuitous Space Battles for a few hours. Or look at GSB's source material - space combat movies, Star Trek and Star Wars, and go from there. Play games with awesome effects, watch movies with awesome effects, watch anime with awesome effects. Analyze it from there and figure out how to fake the behavior you want.

  • \$\begingroup\$ Nice. Good advice. \$\endgroup\$ – Justicle Dec 28 '10 at 3:54

Examples for these kind of things is pretty much what the GPU Gems series covers.

Books 1, 2, and 3 are available for free on nVidia's website.

  • 1
    \$\begingroup\$ Good tip for these books, I didn't realise they were all online now. However they're not quite what I'm after, see edited question. \$\endgroup\$ – Justicle Dec 5 '10 at 5:14

If you're relatively new to graphics programming, the most important thing for a lot of special effects is to understand alpha blending, and blending modes in general.

For glows, explosions, and particle effects, additive blending is your best friend.

Once you understand the effect of adding or multiplying colours, and the ways in which you can use alpha channels, then you are well on your way towards creating some fairly decent special effects.

Remember that good special effects aren't always the most complex or most physically correct effects. Simple effects can often be very effective if executed well.

  • \$\begingroup\$ True, and I'm very familiar with graphics programming, I'm just curious as to how other people have combined all these techniques to create special effects. I edited my question above. \$\endgroup\$ – Justicle Dec 5 '10 at 5:17

Look at some of the early playstation era games, like Final Fantasy 7. Given the low resolution it is often easy to pick out the parts, or at least a good portion of them.

Even given your edit though this is still a very artist based question, probably more so than before. For this reason there is not a particular formula for an explosion or whatnot. 10 different animators would easily create 10 different explosions when given the same precise request.

