Procedurell renderingsmotor i Javascript och HTML5

Relevanta dokument
Generering av L-system fraktaler med Processing.js

Procedurell 3D-eld på grafikkortet

PROCEDUELL TERRÄNG. Proceduella metoder för bilder (TNM084) Jimmy Liikala Institutionen för teknik och naturvetenskap

Procedurell Terräng med LOD i OpenGL 4

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

Grafiska pipelinens funktion

Designing a Shading System. David Larsson

The Procedural Arctic

Universe Engine Rapport

Projekt i TNM084, Procedurella bilder

Procedurell stad. Projekt i kursen TNM022 Procedurella metoder för bilder. Tobias Heldring, tobhe

HAND TRACKING MED DJUPKAMERA

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

Digitala projekt rapport

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering

HALFTONE SHADER APP HEMSIDA: Skapad av: John Tolunay

Tillämpad Programmering. Ekonomi + Spel + Javascript

Shaders. Renderingssystem. Renderingssystem. Renderingssystem. Hårdvara för 3D-rendering. Hårdvara för 3D-rendering

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Laboration 1 XML, XPath, XSLT och JSON

Realtidsalgoritmer för ljusets spridning och absorption mot partiklar i luften P E T E R L Ö N N Q U I S T

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Information Coding / Computer Graphics, ISY, LiTH. Compute shaders!! Framtiden för GPU computing eller sen efterapning av Direct Compute?

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

Rekommenderad IT-miljö

Grafiska pipelinen. Edvin Fischer

Viktigt! Glöm inte att skriva tentamenskod på alla blad du lämnar in.

Webbservrar, severskript & webbproduktion

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling

Utveckling av terräng och partikeleffekter med

Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel

Introduktion till programmering. Programspråk och paradigmer

Innehålls förteckning

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1

On-line produktion TDDC61

TNM022 Proceduella Bilder Rendering av proceduell päls i realtid

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P

Mobile First Video on demand och livesändningar på Internet. Juni 2012

E11 "Protection" Föreläsning 11, HT2014 Säkerhet, tillgänglighet. Johan Leitet. Kurs: 1dv403 Webbteknik I

ATT ARBETA MED VEKTORGRAFIK

Information Coding / Computer Graphics, ISY, LiTH. Minnesaccess. Vitalt för prestanda! Minnestyper. Coalescing

A comparison study between OpenGL 4.3, OpenGL ES 3.0 and WebGL 1.0 With focus on rendering pipeline and texture handling

RENDERING AV 2D SCEN I CANVAS MED HYBRIDRAMVERK RENDERING OF 2D SCEN IN CANVAS WITH HYBRID FRAMEWORK

Lektion 7, del 1, kapitel 15 Filter och Transformationer

Skapa epublikationer för Webben & Mobila Enheter

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Sta. Sta. Sta. ulricaelisson.se. Scratch STARTA PROVA KODEN KÖR! TIPS. Rita en ny sprite. Eller välj en från mappen

Undervisningen i ämnet webbutveckling ska ge eleverna förutsättningar att utveckla följande:

Definition DVG A06. Varför operativsystem? Operativsystem. Översikt. - Vad är ett operativsystem?

Slutrapport för JMDB.COM. Johan Wibjer

Android översikt. TDDD80 Mobila och sociala applikationer

Rune Tennesmed. Oskar Norling 1DV430. Individuellt Mjukvaruutvecklingsprojekt 1DV430 Webbprogrammerare H12 Oskar Norling

Sammanfattning. Nyckelord: Renderingstid, Canvas, Attribut och iterationer.

SMULTRON. Fredrik Li, Ester, Anders, Jessica, Philip. Malmö Högskola Konst Kultur Kommunikation OOP5 - Mobile Applications IDK 05 - April/Maj 2007

Byggnationen av Cheopspyramiden - ett visualiseringsprojekt. Mathias Bergqvist, Rikard Gehlin, Henrik Gunnarsson

TDDD78 projekt: Tower Defence

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

Shaders. Gustav Taxén

C-Uppsats i Datavetenskap. Skinning på GPUn. Med dubbel kvaternioner. Författare: Björn Overå Handledare: Martin Blomberg Termin: VT12 Kurskod: 2DV40E

Teknikprogrammet, inriktning informations- och medieteknik

On-line produktion TDDC61

VRay för Max Camilla Ravenna / André Ravenna Alto Punto 2012 Alto Punto Askims Stationsväg Askim

Kort om World Wide Web (webben)

Inledning. Kapitel Bakgrund. 1.2 Syfte

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap

Webbprogrammering TDDD52

PixlrGuiden - av AlizonWeb PIXLRGUIDEN. av AlizonWeb. Copyright Notice: Copyright AlizonWeb, All rights reserved. Sida 1

Klientmanual. Inställningar och spelstart Windows & Linux

Gränssnittsdesign Namn: Erik Kurs: Gränssnittsdesign Klass: Sy17. Projektplan. Projektets namn

Jämförelse av 3D-lösningar för HTML5

SLUTRAPPORT RUNE TENNESMED WEBBSHOP

Skissa och gissa. Individuellt Mjukvaruutvecklingsprojekt, 1DV430. Christian Nilsson, cn222gc, WP

Microsoft Expression Blend + Sketch Flow

Gränssnitt för FakeGranska. Lars Mattsson

Slutrapport Thunderbug

Flexiboard. Lathund kring hur du kommer igång med att skapa egna överlägg till Flexiboard. Habilitering & Hjälpmedel

Webbteknik II - 1DV449 Laboration 3

Lathund till PowerPoint 2002 (XP)

Tepz klon. - Projektrapport. Linnéuniversitetet, Individuellt mjukvaruutvecklingsprojekt Janina Bergström, WP12 Distans

Operativsystem DVG A06. Definition. Varför operativsystem? - Vad är ett operativsystem?

Objektorientering: Lagring och livstid

OpenGL, Maya och specialeffekter

Programmera Lego Mindstormsrobotar

Fotorealistiska bilder 1 PV360 kap 1 7: Grunder samt material och dekaler i Photoview 360

Mikael Bondestam Johan Isaksson. Spelprogrammering. med CDX och OpenGL

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Del 2 INTERNET I VARDAGEN. 14. Hämta program på Internet Sköta affärer på Internet Användbara sidor (för nytta och nöje)...

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

IT för personligt arbete F6

Slutrapport för Internetfonden

PageSpeed Insights. Ta bort JavaScript- och CSS-kod som blockerar renderingen från innehåll ovanför mitten

Elektronisk publicering TNMK30

TDDD78 Objektorientering: Lagring och livstid

Grunder. Grafiktyper. Vektorgrafik

Transkript:

Procedurell renderingsmotor i Javascript och HTML5 TNM084 Procedurella Metoder för bilder Gustav Strömberg - gusst250@student.liu.se http://gustavstromberg.se/sandbox/html5/shademe/texture_stop_final.html http://gustavstromberg.se/sandbox/html5/shademe/engine.html

Syfte Syftet i detta projekt är att implementera en shadermotor i javascript. Shadermotorn ska kunna animera texturen och ge olika upplösning som resultat. Bakgrund Internet och dess språk utvecklas snabbt, nu är trenden att använda sig av html5 och javascript för att skapa dynamiska hemsidor och webbapplikationer. Eftersom utvecklingen av webbspråk går så fort hänger inte alla webbläsare med i utvecklingen. Sysslar man med webbutvecklingen som ligger på fronten av utvecklingen kan man så inte förvänta sig att det kommer fungera under alla webbläsare, vilket är något man snällt får informera sina användare om. canvas är ett element som nyligen introducerades i standarden html5. Canvas låter användaren rita ut och hantera grafik med hjälp av javascript. Canvas har likheter med OpenGL i och med att det fungerar som en state machine. För att ta sig runt på ett canvas använder man sig av transformationer och precis som med opengl används en view matrix för att minnas platsen där man står just för tillfället. Genomförande En grund som ofta används i procedurella material är perlin noise, därför startades arbetet kring shadermoton med att göra en javascript-implementation av perlin simplex noise, portad från Java. Shadermotorn stöder två sorters shaders, fragment shading och displacement shading. Principen för en shadermotor är att, för alla gällande pixlar anropa en funktion med information om pixelns position. Funktionen som anropas bestämmer därefter pixelns färg eller förflyttning beroende på var pixeln befinner sig. Något som också kan tas med i beräkningen är tiden, uppdaterar man renderingen tillräckligt ofta har man då skapat en animation. För att kunna använda bilder i textureringen har även stöd för s.k. texture lookup implementerats. För att påverka texturen extra i efterhand går det även att applicera shaders på en texturyta även efter att textur lagts på den. På test-implementationen av en shader görs displacement shading på den inlästa texturen.

Resultat Testande av shadermotorn har gjorts genom implementationer av brinnande papper, ett animerat och ett stillastående. Det animerade var tvunget att köras på så låg upplösning att en högupplöst men stillastående version var relevant att skapa också. De två implementationerna av shaders visas i Figur 1 och 2, eftersom javascript är ett såpass långsamt språk och även inte körs parallellt är det svårt att köra en högupplöst shader i lagom snabb bildfrekvens. Skärmdumpar Figur 1 - statisk bild.

Figur 2 - Animerad lågupplöst bild

Diskussion En renderingsmotor som ska gå i realtid bör inte programmeras seriellt utan parallellt. Dagens grafikkort är alldeles för kraftiga för att ignoreras av applikationer som använder mycket processorkraft och som har potential att programmeras parallellt. En fördel med att göra en webbapplikation är hur enkelt det är att låta användaren interagera med mus och tangentbord. Utan att behöva installera något kan en användare via webbläsare gå in på hemsidan i fråga och börja använda applikationen. Att behöva ladda ner och installera, kanske även ladda ner nya drivrutiner, är inget som lockar användare till att titta på ditt arbete, även om det kanske går ett par bilder per sekund snabbare. Något som redan finns är WebGL, där kan man skriva shaders med GLSL och använda vanliga 3D-modeller. Än så länge stöder dock inte så många webbläsare WebGL utan tekniken behöver mogna lite innan det kan förväntas att det stöds av alla. Även canvas som jag använt i projektet stöds inte av alla webbläsare men är en del av html5-standarden och bör så snart som möjligt stödas av alla webbläsare som vill hänga med i standarderna. Referenser http://html5doctor.com/video-canvas-magic/ https://developer.mozilla.org/en/canvas_tutorial