Journal The Timeless hacke ta machine et ton cerveau

48
30
avr.
2014

Sommaire

Du 18 au 21 avril à Saarbrücken (Allemagne), se tenait l’événement Revision 2014, une des plus grandes demoparty du monde. L’équipe Mercury a publié une impressionnante démo dans la catégorie 64K (l’exécutable ne doit pas dépasser 64 Ko en taille) : The Timeless.

Mer

La démo dure environ 6 minutes (étape de pré-calcul omise). La première scène nous plonge dans une eau trouble que nous quittons pour contempler un soleil couchant sur une mer agitée, et dès les premières secondes cela m’a remémoré une autre démo, Elevated par Rgba et TBC. Ces deux démos partagent le fait d‘utiliser intensivement la génération procédurale ainsi que le fait d’implémenter des effets de flous avancés afin de rendre la projection réaliste (ou de tromper son monde ^^). Et puis la musique est sympa mais ça c’est commun à beaucoup de démos. ;)

Visite des lieux

On pourrait distinguer deux parties. Durant la première, différentes scènes sont présentées, des vagues, des colonnades de marbres (on me glisse à l’oreille que c’est un marbre rubanné de type onyx), un fond marin avec de drôles d’objets, les rues d’une cité de grattes ciels, les vitraux et les colonnes d’une cathédrale… Comme Elevated, The Timeless use et abuse de génération procédurale. Certaines scènes sont moins léchées que d’autres (notamment certaines vagues ou les textures simplistes des immeubles), mais l’intérêt porte aussi sur cette diversité de scènes qui multiplient les procédures (il faut bien justifier les 64 ko !)…

Lumières

Après cette visite des lieux, les scènes sont revisitées et transformées, parfois il s’agit de simples transformations graphiques, comme lorsque la ville semble projetée dans un kaléidoscope, parfois ils s’agit de déformations des objets (comme les étranges blocs sous marins) ou des ajouts d’éléments (lumières supplémentaires principalement).

Quand l’imperfection est dans l’équation

On notera particulièrement la composition de l’eau ou de l’air et ses poussières qui matérialisent ces fluides difficiles à rendre en immersion. On est habitué à représenter des fluides dans les démos, moins à les représenter de l’intérieur.

Eau

Un point notable de cette démo est le soin apporté aux effets d’imperfection : les scènes sont parfois vues avec un voile comme si la scène était vue à travers une vitre sale (dans certaines scènes je trouve que c’est tout de même un peu excessif), ou encore comme s’il y avait des poussières sur l’objectif, poussières qui s’illuminent selon la lumière de la scène, et gouttes d’eau sur l’objectif. On retrouve évidemment des effets de mise au point (et donc de hors-champ), des effets de flare et autres aberrations optiques.

Humide

Ce n’est pas nouveau, on avait déjà vu ça dans leur précédente démo 64K (Luma). Alors dans The Timeless cela fait parfois cache misère, mais utiliser des artifices pour impressionner son public avec très peu, c’est le principe des démos limités en tailles…

Les secrets de l’illusionniste

Mais ce que je trouve le plus intéressant dans cette démo n’est pas la débauche d’information générée et d’effets appliqués par un si petit code, mais l’utilisation intelligente des imperfections pour bluffer le spectateur. La partie des greetings aurait mérité une démo à elle seule (peut-être une 4K ?). La ville précédemment présentée est rendue cette fois-ci de nuit, sous la pluie, alors qu’une circulation tendue de véhicules laissent leur trainée de phares se refléter dans l’asphalte détrempé, sous les lumières des panneaux publicitaires…

Pluie

Mais non, point de véhicules, il n’y a que des points lumineux, des reflets et beaucoup de flou savamment maîtrisé… C’est cela qui m’intéresse le plus, il ne s’agit pas là d’exploiter une fonctionnalité non documentée du matériel pour rendre une scène indécemment détaillée, il s’agit ici d’exploiter les défauts de perception humaine pour suggérer ce que l’on ne peut pas coder dans 64K de code, et ça c’est vraiment cool.

La part belle à OpenGL 4.4

Malheureusement la démo a été développée pour Windows et au moment de sa sortie seules les cartes nVidia étaient capable de la rendre (c’est la config de référence pour la compétition)).

Mais c’est intéressant de voir que cette démo a été développée pour OpenGL, alors certes ce n’est ni la première ni la dernière démo en OpenGL, mais je me souviens d’_Elevated_ qui avait été commencée pour OpenGL, mais l’une des optimisation avait été de la réécrire pour Direct3D en cours de route ! Dommage…

Marbre

Au moment de sa sortie, seules les cartes nVidia pouvaient rendre la démo parce qu’elle exploite des fonctionnalités d’OpenGL 4.4 et AMD avait du retard dans ses pilotes. Cependant une RC de Catalyst 14.4 apportant le support complet d’OpenGL 4.4 est sortie dès le 22 avril et une sortie officielle a pointé son nez les jours suivant… à essayer sous wine ?

Désert

On peut voir une démo comme un reflet de son époque, les choix techniques traduisent les intérêts et les compétences des compétiteurs. Quand une démo OpenGL gagne une compétition, cela signifie aussi que cette technologie est pertinente. OpenGL n’étais pas pertinent pour Elevated en 2009, OpenGL est pertinent pour The Timeless en 2014.

Astuces et Tutoriaux

Il est encore trop tôt pour pouvoir lire de la littérature technique sur The Timeless, dans l’éventualité où il y en aurait car certains gardent jalousement leurs secrets… Je citais plus haut la migration de Elevated depuis OpenGL vers Direct3D, c’est un renseignement que l’on retrouve dans le très intéressant document Behind Elevated qui décrit des détails croustillants sur les dessous de cette démo légendaire. Il y a aussi de nombreux commentaires sur les effets de post-prod (en temps réel toujours) qui rendent l’image moins « parfaite » et plus réaliste (motion blur etc.) et sur d’autres détails (brouillard, faire en sorte que la caméra tremble et semble affectée d’une masse dans ses mouvements). Iq a publié sur son site personnel des tutoriaux expliquant des astuces utilisée dans sa démo.

Si vous voulez vous initier à la génération procédurale, je ne peux que vous recommander les articles de rewind< publiés ici même :

La démo, que dis-je, le monument

Cathédrale

Chose amusante, le zip qui distribue la démo fournit une capture d’écran compressée en png… cette capture d’écran est 15 fois plus grosse que le binaire.

illwieckz@computer hg_the_timeless $ ls -lh
total 984K
-rw-rw-r-- 1 illwieckz illwieckz  61K avril 19 18:14 hg_the_timeless.exe
-rw-rw-r-- 1 illwieckz illwieckz 1,3K avril 19 14:33 hg_the_timeless.nfo
-rw-rw-r-- 1 illwieckz illwieckz 913K avril 19 11:07 hg_the_timeless.png

Une fois exécuté, le binaire alloue près de 200mo, et la quantité d’information envoyée à l’écran et à votre ampli audio doit avoisiner les 70Go… On est loin encore de la concision et la performativité d’un « que la lumière soit, et la lumière fut », mais c’est déjà pas mal.

Mais voici donc le plus important :

  • # 64 ko, data comprises où non ?

    Posté par  . Évalué à 3. Dernière modification le 30 avril 2014 à 13:46.

    64 ko me parait très peu, est ce que tout ce qui est affiché est purement paramétrique et construit à partir d'équations ? Où y a-t-il des données qui ne sont pas dans l'exécutable et pas contabilisés ?

    Quid des libs aussi ? parce que rien que libGL.so, ça fait déjà un joli paquet de Mo…

    • [^] # Re: 64 ko, data comprises où non ?

      Posté par  (site web personnel) . Évalué à 10.

      Tout ce qui est généré (modèles, textures, sons) est dans le binaire… Mais par contre oui, cela fait longtemps que les démo 64K sur PC ne sont pas entièrement statiques, rien que le pilote graphique pour piloter la carte ainsi que la libGL explosent la limite… Rien que la libc dépasse allègrement ces 64K. :)

      Comme précisé sur cette page, ils fournissent au demomakers un Windows 8, les derniers pilotes… Donc on a le droit de se baser sur un certain nombre de libs autorisées (.NET autorisé pour les 64K, uniquement celui du système), par contre ils suppriment tous les médias d’une installation par défaut pour s’assurer que la démo ne triche pas en déformant l’un d’eux. ;)

      Certes il fut un temps où l’on exécutait des démos 64K directement sans OS (64K c’est la ram du commodore 64 ^^), mais ça n’est plus possible, le code de gestion du matériel moderne est plus gros que 64K. Le plus petit des systèmes d’exploitation utilisable sur un PC doit être Menuet OS, un système d’exploitation qui tient encore sur une disquette 1.44Mo. ;)

      ce commentaire est sous licence cc by 4 et précédentes

      • [^] # Re: 64 ko, data comprises où non ?

        Posté par  . Évalué à 8.

        Il fut un temps où coder une démo signifiait maitriser les arcanes du matériel sur lequel on développait, et coder des algorithmes inédits se basant sur cette connaissance, avec une prime à ceux qui savaient y distiller leur talents d'artistes graphiques et musicaux.

        Aujourd'hui, cela signifie coder des algorithmes originaux en utilisant les API OpenGL et DirectX, la différence se faisant, à mon sens, surtout sur le graphisme et les musiques.

        En ce qui me concerne, l'effet WAOW en est amoindri.

        Dans le cas de Timeless, on se rapproche de ce que j'attendais (parce qu'il y a longtemps que je ne suis plus de manière assidue ce qu'il se passe dans ce monde là) d'une intro du fait du tout généré à la volée, mais l'utilisation de l'API pilotant une carte graphique qui fait tout le boulot diminue malheureusement mon plaisir.

        Maintenant, comme je le disais je ne suis plus assidument ce petit monde, donc si vous avez des liens vers de jolies choses à partager, je suis preneur !

        • [^] # Re: 64 ko, data comprises où non ?

          Posté par  (site web personnel) . Évalué à 10.

          Un nouveau défi aujourd'hui serait de faire des démos le plus portable possible!

          Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

        • [^] # Re: 64 ko, data comprises où non ?

          Posté par  (site web personnel) . Évalué à 8.

          Il fut un temps où coder une démo signifiait maitriser les arcanes du matériel sur lequel on développait, et coder des algorithmes inédits se basant sur cette connaissance, avec une prime à ceux qui savaient y distiller leur talents d'artistes graphiques et musicaux.

          Il y a un peu de ça, cf. le commentaire plus bas sur les GLSL uniform default values, la démo utilise une spécificité de nVidia et sans ça la démo ne peut pas être rendue en temps réel.

          Après l’univers de la démo est très large, et couvre toujours de vieilles machines historiques et limitées.

          Cf. par exemple la célèbre démo Batman Forever sur CPC en 2011 et cette citation : « In 1984, Sir Alan Sugar launched the best 8 bits computer series in history. It's true potential is yet one of the greatest enigmas of the computer age. In recent years, only a selected few, privileged or crazy, have seen glimpses of this enormous power. According to the latest revelations, performance of commercial software had not taken more than 6% of it's real capacity… » ;-)

          Le souci des démos limités, c’est qu’il faut une plateforme qui permette le challenge. Avec un PC moderne c’est difficile de se restreindre, le code de gestion du matériel est énorme, et les ressources sont délirantes…

          L’autre souci, c’est la non uniformisation qui est étonnamment un pendant de l’uniformisation : il existe des centaines de cartes graphiques compatible OpenGL, ça c’est de l’uniformisation, mais la conséquence, c’est que personne n’a la même, ça ce n’est pas de l’uniformisation… Donc il existe probablement toujours des hacks comme au bon vieux temps, sauf que tu serais le seul à l’exploiter, tu es potentiellement le seul à posséder ta config…

          Ainsi les démo se basent sur des libs comme OpenGL… ça peut paraitre de la triche, mais si on ne le faisait pas, personne ne pourrait tester la démo. Ce qui fait que nécessairement, la config de base comprend à la fois un matériel déterminé, et une couche logicielle d’abstraction déterminée… Il y a probablement moyen de gérer la carte graphique en direct ou de manière plus optimisée (comme le fait Mantle sur les cartes AMD), mais si le jury ne peut pas évaluer ton travail, ça va être dur de gagner des compétitions. ;)

          D’où l’idée du Raspberry Pi plus bas, c’est une plateforme standard et limitée qui draine une communauté large de bidouilleurs, c’est un terreau fertile d’où pourrait surgir une démoscène…

          ce commentaire est sous licence cc by 4 et précédentes

  • # une nouvelle catégorie

    Posté par  . Évalué à 9.

    Ca fait plaisir de voir que la demoscene continue, très impressionnant.
    Cependant pour ajouter du challenge ca serait génial de créer une nouvelle catégorie de démo pour linux avec des Intel HD Graphics 4000.

    • [^] # Re: une nouvelle catégorie

      Posté par  (site web personnel) . Évalué à 10.

      Ou la raspberry Pi qui s’est standardisée. Ce qui fait le jeu, c’est la règle du jeu, et justement la Pi est un très bon candidat pour cela : architecture moderne mais limitée en ressource, ce qui incite à optimiser son code et génère de fait des challenges techniques que l’on ne résout pas uniquement en changeant sa carte graphique.

      ce commentaire est sous licence cc by 4 et précédentes

      • [^] # Re: une nouvelle catégorie

        Posté par  . Évalué à 2.

        oui en effet, même si je pense qu'il y a plus de desktop x86_64 avec une intel graphic 4000 que de raspberry Pi. 2 catégories à créer :)

        • [^] # Re: une nouvelle catégorie

          Posté par  (site web personnel) . Évalué à 6.

          Il y a peut-être plus de desktop x86_64 avec une intel graphic 4000 que de raspberry Pi, mais il y a peut-être déjà plus de personnes qui hackent la Raspberry Pi que de personnes qui hackent la IG 4000. ;)

          Et si on rapporte le chiffre entre hackeur/utilisateur, le rapport bidouilleur de Pi / possesseur de Pi est d’un ordre de grandeur au dessus du rapport bidouilleur d’IG 4000 / possesseur d’IG 4000. À mon avit il y a vraiment moyen de faire quelque chose avec la Pi.

          Actuellement les bidouilleurs de la Pi qui sont sous les feux des projecteurs sont surtout ceux qui hackent du matériel avec, mais tous les ingrédients sont là pour avoir une scène dédiée au logiciel. Beaucoup de logiciels possèdent désormais des optimisations spécifiques en vue de tourner sur la Pi. Cette connaissance technique ne sert pour le moment qu’à l’utilitaire, mais il ne manque pas grand chose pour exploiter cette connaissance à des fins purement artistiques ou de démonstration (ou de chalenge pur). Les différences entre l’artisan et l’artiste ne sont souvent que des vues de l’esprit, c’est la destination des œuvres qui distinguent l’un de l’autre.

          Mais oui ce serait cool que se développe une scène qui hacke spécifiquement Linux et du matériel connu pour être très bien supporté sous Linux.

          Une autre plateforme qui aurait été intéressante pour la scène, c’est la (les ?) plateforme XO du projet OLPC. Malheureusement, la fondation OLPC n’a pas laissé le grand public s’approprier le matériel, les seuls développeurs pour cette plateforme sont quelques rares initiés… ou les enfants qui ont bénéficié de ce programme. Dommage, cette plateforme avait vraiment un énorme potentiel de hacking (et aurait pu rafler une grande part du public qui s’est rabattu plus tard sur la raspberry pi).

          ce commentaire est sous licence cc by 4 et précédentes

  • # nVidia only pour le moment

    Posté par  (site web personnel) . Évalué à 7.

    J’ai vu passer à droite et à gauche des messages de personnes qui ont essayé la démo avec les derniers pilotes AMD OpenGL 4.4 et ça ne marcherait toujours pas.

    Dans le .nfo on trouve ce message explicite :

    Dear ATI, please support GLSL uniform
    default values, so that your users can
    watch this release in real-time.

    Donc actuellement ils utilisent une fonctionnalité (GLSL uniform default value) que seul nVidia implémente.

    À ce que je crois avoir lu, ce ne serait pas implémenté chez Intel non plus.

    C’est cool la portabilité, mais c’est bien aussi de mettre en lumière les déficiences des uns et des autres afin de les corriger. Si tout le monde contournait les manquements, il n’y aurait pas besoin d’améliorer. :)

    ce commentaire est sous licence cc by 4 et précédentes

  • # Tmeless

    Posté par  . Évalué à 4.

    Le titre de la démo me disait quelque chose.
    J'ai retrouvé : Timeless, écrite par Tran en 1994
    Sur Youtube, résolution pourrie : http://www.youtube.com/watch?v=dEg-P7HRxX4

    Cette toute petite démo hypnotisante était un des bijoux de l'époque.
    Livrée avec son code source. Écrite totalement par une personne (musique correcte, graphismes heu… graphismes, et le code).

  • # Elevated

    Posté par  (site web personnel) . Évalué à 2.

    dès les premières secondes cela m’a remémoré une autre démo, Elevated par Rgba et TBC. Ces deux démos partagent le fait d‘utiliser intensivement la génération procédurale ainsi que le fait d’implémenter des effets de flous avancés afin de rendre la projection réaliste (ou de tromper son monde ). Et puis la musique est sympa mais ça c’est commun à beaucoup de démos. ;)

    Oui mais Elevated ça reste la classe au dessus. Déjà c’est une 4k (oui, 4096 octets !), elle est sortie il y a 5 ans et je trouve que la musique est bien meilleure.

    Reste que j’ai adoré The Timeless, mais bon ce n’est pas extraordinaire de voir cela en 64k.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.