http://www.gamesfrommars.fr/demojs/ (c'est mieux sous Chrome

)
C'est tout simple, les entités 3D sont mappés vers des sphères 2D avec une projection, on les trie par Z puis (sans occlusion :| ) dessin de cercles dans le bon ordre avec un gradient radial qui fout une ombre avec ses gros sabots. Bref c'est un peu
http://js1k.com/2011-dysentery/demo/928 mais temps réel et avec uniquement des ronds. Le gradient c'est bien plus rapide que shadowBlur.
La mauvaise surprise c'est qu'a priori je dois créer le gradient radial poucharque cercle à dessiner à cause du centre du gradient qui est donné en... pixels, ça limite beaucoup le nombre de primitive possible. Evidemment ça fait des pauses GC à base de 100+ms dans ta face...
Après bon, créer ce gradient radial à chaque fois permet de simuler un DOF.
Si j'arrive à utiliser context.translate et si le gradient réagit bien, alors on pourrait precalc les gradients en laissant tomber le DOF et ça devrait turbiner un peu plus.
La mauvaise surprise numéro deux c'est qu'un gradient radial avec deux cercles qui ont un centre différent est beaucoup moins rapide qu'avec un unique centre. Du coup je n'ai pas pu faire en sorte que les boules soit éclairées "par le haut" ce qui était 34% plus joli.
J'ai aussi tenté la technique avec un canvas offscreen puis drawRect mais a priori c'est pire, à mon avis c'est déjà offscreen.
(J'ai vu que certains d'entre vous utilisent la balise <audio>, si jamais ça ne marche pas autant que prévu pourquoi ne pas faire comme mon soundmanager, il crée des objets Audio à la place + les callbacks sans closures qui vont bien, ça me semble un peu plus propre.)