Vivian Voss

Blackout State by Darklite

bytes of art demoscene darklite opengl

Every demo comes with a small text file, and most of them say who did what and whom they greet. The one beside Blackout State has a line near the top that reads like a dare:

API...........: Pure OpenGL (Strictly NO SHADERS used!)

The tech notes further down are no less firm about it: This demo brings it back to the roots. Pure OpenGL. Zero shaders. Everything you see is driven by oldschool pipeline rendering and raw math.

Watch it first: Blackout State on YouTube, captured by the Demoscene Logo Gallery, or fetch the party version from scene.org and run it yourself. Demozoo tags it with an epilepsy warning, and it has earned the tag honestly.

Three names on the NFO

Darklite is a Norwegian group based around Dokka, a small township in the east of the country, and over the years it has recruited members from all over Norway. Three of them made this one. Rudi wrote the code and added graphics of his own. Phobium wrote the music, and tFt drew the graphics and the overlays.

Rudi's page on Demozoo is worth a minute, because it explains why the NFO line is a choice made with open eyes. Ninety-nine productions since 1998, Windows demos and a 64K intro among them, and lately a run of MS-DOS intros of 256 bytes each, one of them a voxel engine. A man who can fit a landscape into fewer bytes than this paragraph has characters knows precisely what a modern graphics card offers, and in July he sat down and declined most of it.

The constraint is a pipeline

Every Bytes of Art piece has a restriction at its centre. This one is counted in years.

In the first years of consumer 3D cards, the card was a machine with a fixed sequence of stages, which the trade calls the fixed-function pipeline. Vertices went in, were transformed by a matrix and lit by a small set of lights with fixed equations, then textured, fogged, blended and written to the screen, and the programmer's part was to set switches and feed it triangles. What the light did when it hit a surface was decided by the hardware vendor and written in silicon.

Shaders ended that. A shader is a small program the card runs for every vertex or every pixel, and once OpenGL took on its shading language with version 2.0 in 2004, the lighting and nearly everything after it became code the demo writes for itself. In 2008 OpenGL 3.0 declared the old fixed pipeline deprecated, and the next version took it out of the core specification altogether. It survives in the compatibility profile, which drivers still offer, though few productions open that drawer any more, which is why a commenter on Pouët, wbcbz7, handed out bonus props for going no-shaders.

The fixed pipeline, 1998 to 2026 one division = one year 1998 Rudi's first production; OpenGL is fixed-function only 2004 OpenGL 2.0 adopts the shading language GLSL 2008 OpenGL 3.0 declares the fixed pipeline deprecated 2009 3.1 removes it from the core, 3.2 keeps it in the compatibility profile 11 July 2026 Blackout State wins at Black Valley, strictly no shaders

Rudi opened it, and the executable shows what he took out. The file names seventy-one OpenGL functions, and they read like a programming manual from about 2001: glBegin and glEnd to send geometry one vertex at a time, glLightfv for the fixed lights, glMaterialfv for surfaces, glTexGeni to let the card generate texture coordinates, glCopyTexSubImage2D to copy the screen into a texture, and, from a few years later, a set of framebuffer calls to render into textures off screen. Not one of the seventy-one compiles a shader, and the word does not appear anywhere in the sixty-million-byte file. The NFO, checked against the binary, tells the truth.

The pipeline the executable names 1 · Geometry in one vertex at a time glBegin · glVertex3f · glNormal3f · glEnd 2 · Transform matrices, camera glMatrixMode · glPushMatrix · glRotatef · gluPerspective 3 · Fixed lights equations set by the vendor glLightfv · glLightModeli · glMaterialfv · glShadeModel 4 · Texture coordinates generated glTexGeni · glTexEnvi 5 · Render to texture off screen ten framebuffer and renderbuffer functions 6 · Screen into texture and round again glCopyTexSubImage2D 71 OpenGL names in the file, none of them compiles a shader no glCreateShader, glShaderSource or glUseProgram · the word shader occurs 0 times

A graphics programmer will point out, quite rightly, that the card on their desk has no fixed lights left in it. The driver translates the old switches into a shader of its own, and Mesa, the open-source graphics stack, does it in a file whose header reads Create a vertex program to execute the current fixed function T&L pipeline. The restriction binds the author and nobody else, which is where the scene has always put its restrictions: a 256-byte intro runs on a machine with megabytes to spare, and the bytes still count.

One commenter on Pouët, rloaderro, put the result in a sentence: the meta envblobs with radial blur look ace. Cool idea to do a no-shaders, but with a lot more fillrate than what was available back in the days. That is the whole charm of it. The techniques are the ones people used when fill rate was the scarcest thing on the card, and they are running on hardware with vastly more of it, so an effect that once had to be small and careful can now cover the screen and do it again on top of itself.

The file holds a few more details that say something about the builder. It carries LLVM's OpenMP runtime, the library that divides a loop among the cores of a processor, beside the raw math the NFO mentions. Its debug information names Rudi's own demo tool, with an effect manager and a greetings effect whose name suggests a certain green film. And it is a single executable of 57.6 megabytes, music and all, which for a demo with no size class is simply what a demo weighs when it carries its soundtrack inside.

Acid

Phobium's soundtrack is acid, and the people on the production's page noticed. Kuemmel liked the evolution of that acid tune, PRiDE gave the soundtrack an exclamation mark of its own, and rloaderro opened his comment with Norsk flagg acid!, Norwegian flag acid, which I take to be the highest praise available in the genre. HellMood, who is greeted personally in the NFO and knows a thing or two about small code, reported that it works great in his home cinema. Eight thumbs up and none down at the time of writing.

The pairing makes sense. An acid line is built from a small, deliberately limited synthesiser pushed as hard as it will go, and the visuals are built from a deliberately limited pipeline pushed the same way. Both pieces of the demo are made of old machinery played loud.

Black Valley

Black Valley 2026 ran from the tenth to the twelfth of July at Blaker Samfunnshus, the community hall in Blaker near Lillestrøm, east of Oslo. It was the fifth Black Valley and the fourth in that hall, organised by Menace with a team of fourteen, under the motto Black Valley Flair. The party describes its purpose as celebrating the Norwegian demoscene's culture and creativity, and it offers camping outside and a restaurant in the building, which covers most of what a demoparty needs.

The competition list is a portrait of the scene in one weekend: fourteen newschool tracks and nine oldschool ones, eight pixel graphics and eight textmode pictures, seven oldschool demos, and a Bossa Nova competition with five entries, which I would very much like to have heard. Five demos went up in the newschool demo competition, and the hall voted.

Black Valley 2026, newschool demo competition Blackout State Darklite 182 Blaker Breeze Skuggemannen and oklien 161 Urban Cycles Arctic Robots 139 Don't Send It to Anyone NoCMP 101 Natural + 98

Twenty-one points clear of a production named after the village the party stood in, which at that party is no small thing. Blackout State was released on the Saturday, the eleventh of July.

What the pipeline still knows

Darklite took the method of that era, with its fixed lights, its vertices sent one at a time, its generated texture coordinates and its copied screens, and gave it the fill rate of a machine from this decade, to find out what the old way of drawing looks like when nothing is holding it back. A faithful copy of 2001 at the resolution of 2001 would have been a museum piece, and the hall at Blaker would have applauded it politely before voting for something else.

The NFO greets thirty-eight groups and signs its logo with a motto that suits the result rather well: we do not grow up.