inear

Alla experiment

Skapa, testa och förstå3D, WebGL och spelutveckling

Tornado: WebGL-demot som satte dig mitt i stormen

Hösten 2012 lät Einar Öberg besökarna stå mitt i en tornado i webbläsaren. Här är demot, tekniken bakom virveln och hur du bygger en egen.

Senast uppdaterad 20 oktober 2026

Två utvecklare tittar på en virvlande storm i 3D på en stor skärm

I oktober 2012 kunde du ställa dig mitt i en tornado utan att lämna skrivbordet. Demot Tornado visade en virvlande storm i WebGL, sedd inifrån, med ljud som förstärkte känslan av närvaro. Bakom projektet stod Einar Öberg, som då arbetade som utvecklare på den svenska byrån North Kingdom.

Original
Einar Öbergs eget experiment
Lansering
hösten 2012, uppmärksammat av Creative Bloq 19 oktober 2012
Teknik
WebGL, shader på ett nät med kameran inuti
Status i dag
Inte längre tillgänglig online på den gamla adressen

Den här sidan förklarar demot och tekniken bakom det, men redaktionen har inte byggt originalet. Uppgifterna bygger på Öbergs eget blogginlägg, arkiverade versioner av sidan och pressartikeln som listas längst ned.

Vad var Tornado?

Tornado var ett kort interaktivt demo där användaren befann sig i stormens öga. Med reglage uppe till vänster kunde man ändra åt vilket håll virveln drog. Creative Bloq beskrev demot som något som gav besökaren kontroll över stormen och jämförde effekten med tidstunneln i förtexterna till Doctor Who.

Kraven var en modern webbläsare och ett hyggligt grafikkort, helst den senaste versionen av Chrome. Detta var typiskt för WebGL-experimenten runt år 2012, då hårdvaruaccelererad 3D i webbläsaren fortfarande kändes nytt för de flesta användare.

Så fungerade det

Enligt Öbergs egen beskrivning var Tornado i grunden samma experiment som hans eldboll, Ball of Smoke and Fire från november 2011. Skillnaden var att kameran nu satt inne i nätet och att han hade gjort en del extra justeringar. Han kallade det själv en av de tidiga testprototyperna.

Ett nät i stället för tusentals partiklar

Många tänker på partikelsystem när det gäller rök och stormar. Ett sådant system består av tusentals små punkter där varje punkt har en position, en hastighet och en livslängd. I varje bildruta flyttas punkterna en bit och ritas som små bilder som alltid är vända mot kameran. Det ger luftiga effekter men kräver mycket resurser när punkterna blir många.

Tornado gick en annan väg. Ett 3D-nät ritades med en shader som rörde brus över ytan, ungefär som i eldbollen. När kameran placeras inne i formen ser du väggarna runt omkring dig. Brusets rörelse ger intrycket av luft som virvlar förbi.

Kameran inne i formenInre varv snabbare än yttreRotation plus stigning ger spiral
Förenklad illustration av principen. Redaktionens egen bild, inte en skärmdump från originalet.

Det som får en virvel att se ut som en virvel

Rörelsen i en tornado kan delas upp i två delar. Luften snurrar kring en lodrät axel och stiger samtidigt uppåt. När varje punkt får en vinkel som växer med tiden och en höjd som också ökar bildas en spiral. Resultatet blir mer trovärdigt om de innersta varven roterar snabbare än de yttre.

I en shader görs samma sak med texturkoordinater i stället för punkter. Bruset förskjuts runt formen med tiden och uppåt längs axeln. Om användaren ändrar riktning byts bara tecknet eller hastigheten i den förskjutningen.

Bildbehandling och ram

Öberg använde en egen variant av glfx.js, ett bibliotek för bildeffekter i WebGL, för att bearbeta den färdiga bilden. Ovanpå lade han en ram byggd med en så kallad 9-slice-teknik. Ett plan delas in i nio delar så att hörnen behåller sina proportioner även när planet sträcks ut till helskärm.

Mottagandet

Creative Bloq skrev om demot den 19 oktober 2012 under rubriken ”Enter the tornado! Amazing new WebGL demo”. Artikeln lyfte fram ljudeffekterna och möjligheten att styra stormens riktning. Öberg skrev själv om demot på sin blogg först i juli 2013 och konstaterade att han hade glömt att lägga upp det där tidigare.

Går det att göra likadant i 2026?

Ja. Det är i dag lättare än förr. WebGL stöds av alla moderna webbläsare och three.js har färdiga byggstenar för både nät och partiklar. Ingen källkod till originalet har hittats på Öbergs GitHub, så en egen version måste byggas från grunden.

Bygg något liknande

1. Formen

Skapa en cylinder eller ett rör som smalnar av nedtill och vänd ytorna inåt så att de syns inifrån.

2. Bruset

Skriv en shader som flyttar ett brusmönster runt formen och uppåt med hjälp av ett tidsvärde.

3. Kameran

Placera kameran nära axeln och låt den gunga lite så att rörelsen känns levande.

4. Partiklar

Lägg till lösa partiklar som snurrar i spiraler runt axeln och föreställer damm och skräp.

För formen räcker en vanlig geometri med en ShaderMaterial där du skriver bruset själv. Dammet görs med Points, där varje punkt får en vinkel, en radie och en höjd som räknas om varje bildruta. Läs gärna mer om eldbollen på Fireshader och om brus i Ridged Perlin noise.

Vad du kan lära dig av demot

Tornado visar hur långt en idé kan återanvändas. Eldbollen blev en storm när kameran flyttades in i formen och parametrarna justerades. Det är ett effektivt sätt att arbeta med shaders: man bygger en effekt ordentligt en gång och testar den sedan i nya sammanhang.

Känsla kommer inte bara från grafik. Ljudet var en del av upplevelsen och lyftes fram i pressen lika mycket som bilden.

Vanliga frågor om Tornado

Vem skapade Tornado?

Demot utvecklades av den svenska programmeraren Einar Öberg, som vid tillfället arbetade på byrån North Kingdom. Det var ett eget experiment.

Var Tornado ett partikelsystem?

Nej, enligt skaparens egen beskrivning byggde det på samma teknik som hans eldboll. Ett nät med en brusshader renderades med kameran placerad inuti formen.

Går det att prova Tornado i dag?

Originalet går inte längre att köra på den gamla adressen. En kopia av sidan finns sparad i Wayback Machine men det är oklart om demot går att köra där.

Hur får man en virvel att snurra i three.js?

Ge varje punkt en vinkel och en höjd som ökar med tiden. Rotationen kring axeln och stigningen uppåt bildar tillsammans en spiral.

Källor

Uppgifterna kontrollerades 20 oktober 2026.