Al Green
Al Green's Brother
Home - News - Articles - Books - Source Code - Videos - Xmas - About

The Xmas Demo 2024

Nils Liaaen Corneliusen, Sjur Julin
2024 - 2023 - 2022 - 2021 - 2020 - 2017

Click to watch video on YouTube

Introduction

As we always say, the Xmas Demo concept is about reproducing computationally intensive graphical effects on cheap low-end hardware. This year we decided to follow it for a change. The 2017 and 2020 Xmas Demos ran on an NVidia TX2 that wasn't very powerful. It had just 256 GPU cores and 4 ARM A57 cores. To make it a challenge, we dusted off a Jetson Nano Developer Kit that's newer but has even less power: Roughly 66% less than a TX2. On the other hand, it's matchbox sized and sells for just $99 if you can find it in your local electronics boutique. Rumor has it that it's been recently discontinued [1].

Xmas demos run in 60 fps regardless of what we decide to be the target hardware. Anything else would be lame. A measly 128 GPU cores clocked at a laid-back 921 MHz meant we had to go even further than usual in our (sometimes arcane) changes and optimizations. Only 900 cycles are available per pixel, so scaling had to be applied judiciously. We also had to cut down on graphics, overlays, crossfading, and the usual array of ditzy effects. The display area is slightly reduced to make room for an info display and a scrolltext that doubles as an fps indicator: If it's not smooth it's not 60 fps. Long story short, stylewise it's back to the old 80s megademo format with non-overlapping parts. We like that style.

As usual, we take our stabs at what the dingbats call modern programming in there. C is 52 years old this year, and so am I. (It's also 52 years since man last walked on the moon, but that's a whole different story.) There's no doubt that C will be around for another 52 years. I probably won't. However, my earliest C programs from the 90s still compile and run without problems. Where will crap written in javascript, python, unstable rust [2], floop, "swift", julia, java, ruby, dingo, etc. end up? [3]

Like last year, we used music composed and performed by C64 and Amiga legend Chris Huelsbeck. The track is called "Against the Clock" from the album "Dressed to Chill". Check out the links below. Sjur worked his magic on top of that, adding sound bites and effects where needed. The final mix was done using tube gear. Duh.

It's not an Xmas Demo without a spaceship! Sjur's awesome interpretation of USS Swinetrek should swing by in there somewhere. For those who remember The Muppet Show, it was featured in the recurring sketch Pigs in Space. It was funny then; it's hilarious now. Watch them before revisionists have them removed. The show and the demo. Pig

Sound and Music

Against the Clock [bandcamp.com] by Chris Huelsbeck [patreon.com].
Used under a royalty-free license.

Voice samples from District 9 (2009 film) [imdb.com].
Interlude from The Muppet Show (1976-1981 TV series) [imdb.com].

Sound and music mixed by Julin.

Graphics

Archive: xmasdemo_data_2024.zip (browse)

FileTitleArtist
data/SSSwinetrek.glb USS Swinetrek Julin
data/smallbike.png High Wheeler Public Domain
data/moi.png Ministry of Information A ripoff, sorry
data/usspig.png Pig Not Currently on a Wing Another ripoff, sorry again

Source Code

This demo uses the V73D Engine [github.com] by Sjur Julin. It's a pure C and GLSL project with a minimum of dependencies, so it will compile and link with no fuzz. You will need it for building the Xmas Demo yourself. Both V73D and the Xmas Demo runs on Linux and Windows.

An assortment of shaders from ShaderToy [shadertoy.com] have been modified and used. Important! The shader files in the archive have been stripped of comments and recommented where we have changed things. Check the ShaderToy source for the author's intent. It's very helpful.

Archive: xmasdemo_src_2024.zip (browse)

FileUsed in part(s)Based onAuthorLicense
Makefile Julin CC0 1.0
src/xmas2024.c Julin & Corneliusen CC0 1.0
src/vec.h Corneliusen CC0 1.0
shaders/noisy.fs Whitened, Blackened VHS Tape Noise vladstorm CC BY-NC-SA 3.0
shaders/galdance.fs Intro, Outro Galactic Dance Sinuousity CC BY-NC-SA 3.0
shaders/sponge.fs Spongified Menger Sponge Tunnel kithy CC BY-NC-SA 3.0
shaders/journey.fs Journeyman Torus Journey PauloFalcao CC BY-NC-SA 3.0
shaders/acid.fs Acid Houses Paper City NuSan CC BY-NC-SA 3.0
shaders/quatio.fs Quatio Corneliusen CC0 1.0
shaders/tunnel.fs Pigs in Tunnel Colorful Smoke Tunnel meowyih CC BY-NC-SA 3.0
shaders/twofield.fs Twofield System Twofield w23 CC BY-NC-SA 3.0
shaders/glassy.fs Glassy Knoll Transparent Lattice Shane CC BY-NC-SA 3.0
shaders/knots.fs Knots Landing Acrilic Knots Elsio CC BY-NC-SA 3.0
shaders/kaleido.fs Kaleidonope Simple Kishimisu omansounds CC BY-NC-SA 3.0

Secrets

Whitened Quatio Blackened

Whitened: The second frame says "We must peform a Quirkafleeg" [jdawiseman.com]. It's a level in Jet Set Willy II (1985 game), specifically the ZX Spectrum version which had the typo. The practice of quirkafleeg has lots in common with modern software development methods.

Journeyman: The scrolltext is an altered verse from "The Road to Hell Part 2" by Chris Rea. Having fun with the enormous amounts of energy wasted by crap written in python.

And all the cores jam up with snake shit
And there's nothing you can do
It's all just bits of energy
Flying away from you

Acid Houses: "Dove Nation Ninjas" is an anagram of "NVidia Jetson Nano". The scrolltext says the demo was recorded live at 59.912944,10.754639 [geohack.toolforge.org]. That's the location of a concert arena in Oslo, Norway. Was it recorded there? No. It was a dark and stormy night, scrolltexts had to be written, one thing led to another...

Quatio: The message "Return of the Xmas Demo" is shown when the bike passes through the middle. It's Xmas Demo number 6. We can't be more obvious than that.

Twofield System: "Do Ninjas Innovate" is an anagram of "NVidia Jetson Nano".

Glassy Knoll: "The Xmas Demo Lives" is a spoof on Jason Lives (1986 film), the 6th Friday the 13th movie. Yeah, it sounded better when we planned it. The scrolltext is an altered verse from "Put Your Lights On" by Santana (feat. Everlast). Snakes that whisper in your ear... pun intended.

Hey now, all you coders
Leave your lights on
Better leave your lights on
'Cause there's a python livin' in your PC
Whisperin' in your ear

Knots Landing: "Deviant Ninja Soon" is an anagram of "NVidia Jetson Nano". The Ministry of Information logo is shown. It's a reference to Brazil (1985 film). Alamogordo, New Mexico is mentioned in the scrolltext as a place where crap written in modern programming languages might end up. That's where Atari dumped unsold games in the 80s. Floop is listed as a programming language. Is it? Check this [archive.org].

Outro: A mirrored version of Intro... or is it? The Magic 8 Ball says: Don't count on it.

Blackened: The second to last frame says "Oh $#!+!The Central Cavern!" [jdawiseman.com]. It's a level in Jet Set Willy II (1985 game), a duplicate of the first level in Manic Miner (1983 game).

Tidbits

A bike too far: The high wheelers are a reference to The Prisoner (1967-1968 TV series). The series follow a probably unjustly imprisoned agent called Number Six.

The title that should not be: The large top text is not the part title. It's either an anagram of NVidia Jetson Nano or something related to Xmas Demo 6... or a pig. Titles are on the right. This is an Xmas Demo; nothing is as it seems.

Cobra Bar: What's with all the ninjas? Try making 3 related anagrams of "NVidia Jetson Nano" without using the word "java".

The old code and the sea: We had to work around the satan2 problem in a couple of places. Low-end hardware keeps you on your toes. On the other hand, the new GLSL compiler does unrolling and interleaving better [4], so we had to get creative. The main shader hacking was done on a 3070: 2000 fps usually means it runs ok on the Nano [4]. A recurring theme is missing colors in the original shaders. We fixed that, 80s style.

That's it. See you somewhere in time [5].

Footnotes

[1] It's Xmas! A reasonably priced Jetson Orin Nano "Super" [theregister.com] has just been released. That's good news for next year.
[2] Call a spade a shovel: Unstable rust [devclass.com], constrained memory.
[3] We really don't give a fuck. Watch the demo.
[4] ...and sometimes it doesn't.
[5] Maiden or Reeve? Take your pick.

Snapshots

Jetson Nano Whitened Intro Spongified Journeyman Acid Houses Quatio Pigs in Tunnel Twofield System Glassy Knoll Knots Landing Kaleidonope Outro Blackened

Feedback

Technical comments are welcome. Contact information is available here.

If you have a problem with the article text, the video, or the code in any way, please watch this informative video:

Click to watch video on YouTube

Remember to appreciate this SMBC strip titled "Duh" [smbc-comics.com].

Article Licensing Information

This article is published under the following license: Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)
Short summary: You may copy and redistribute the material in any medium or format for any purpose, even commercially. You must give appropriate credit, provide a link to the license, and indicate if changes were made. If you remix, transform, or build upon the material, you may not distribute the modified material.


Ekte Programmering Norwegian flag
American flag Real Programming
Ignorantus AS