En avril 2009, Rgba & TBC ont présenté Elevated, une intro de 4 kilooctets, au concours PC 4k de la demoparty Breakpoint. L'exécutable entier devait tenir dans 4 096 octets — une seule image ou un seul échantillon audio de haute qualité pouvait déjà faire exploser ce budget — et pourtant la démo se déploie comme un vol cinématographique lent au-dessus d'un paysage de montagnes, avec une partition complète.
La réponse habituelle en 4k consiste à réduire ou supprimer quelques effets précalculés en espérant que la machine du concours puisse les exécuter. Elevated a fait l'inverse : elle ne stockait ni scène ni musique. Les visuels provenaient d'un code de pixel shader compact écrit par iq, la partition d'un synthétiseur en assembleur de mentor, si bien que chaque image et chaque note étaient calculées à la volée plutôt que chargées.
Cette répartition du travail explique que la taille ait tenu. Un shader s'exécute pour chaque pixel de chaque image, si bien que quelques centaines d'octets de formules procédurales se déploient en un travail GPU énorme — un commentateur a noté que les 4 Ko gonflaient à plus de 250 Mo d'instructions GPU — tandis que la synthèse supprimait entièrement les données d'échantillons. Elevated a pris la première place du concours 4k et est immédiatement devenue une référence.
Sept ans plus tard, en juin 2016, le groupe a publié le code source complet sur scene.org : une archive de 729 Ko contenant le code en assembleur et en C++, la licence et le manuel du compresseur Crinkler, NASM et un projet de compilation prêt à l'emploi. Le fil de discussion sur la publication sur Hacker News a recueilli 384 points, et des commentateurs ont déclaré que la démo avait contribué à lancer l'ère la plus dynamique du genre 4k.
Ne stocker aucun actif ; faire en sorte que le code rende et compose le spectacle
Les actifs ne tiennent tout simplement pas : à 4 096 octets, même une seule texture ou un seul échantillon consomme le budget, si bien qu'encoder le contenu sous forme de code n'est pas une astuce mais la seule option qui passe à l'échelle
Le GPU multiplie un code minuscule en un travail énorme : un pixel shader s'exécute par pixel et par image, si bien que des formules compactes se déploient en des centaines de mégaoctets de travail d'instructions
La musique a reçu le même traitement : un synthétiseur en assembleur en temps réel signifiait que la partition existait sous forme d'algorithme plutôt que de données d'échantillons
La publication du code source a transformé une réussite privée en référence partagée, et les plus de 11 000 téléchargements de l'archive ainsi que le fil Hacker News à 384 points montrent la demande pour exactement cela
Lorsqu'une limite de taille ou de stockage rend le contenu impossible, ne compressez pas le contenu — encodez-le sous forme de code qui se génère lui-même, et publiez le générateur afin que la technique se cumule.
Suites
Elevated est restée une référence du genre après sa victoire : Pouet.net, la base de données de la demoscene, la classe encore près du sommet de son classement de tous les temps. En juin 2016, Rgba & TBC ont publié le code source complet sur scene.org — un zip de 729 Ko avec les sources en assembleur et en C++, l'éditeur de liens de compression Crinkler et NASM — afin que le fichier de 4 Ko puisse être reconstruit et étudié. La page scene.org enregistre 11 363 téléchargements de l'archive, et la discussion sur Hacker News a recueilli 384 points et 147 commentaires, où les internautes s'émerveillaient encore de l'univers procédural en temps réel et attribuaient à la démo le lancement d'une ère 4k dynamique.
VÉRIFIEZ LES SOURCES
Les sources
- rgba_tbc_elevated_source.zip — source code download page scene.org · files.scene.org ·
- elevated by Rgba & TBC — Breakpoint 2009, pc 4k, ranked 1st Pouet.net · pouet.net
- Source code for 4kb demoscene production "Elevated" released Hacker News · news.ycombinator.com ·