15 maj Partikelsystem för interaktiva 3d-miljöer - med shaderteknologi Examensarbete vid inst. för datavetenskap Jakob Schyberg, D-00
15 maj Lite om examensarbetet... Ämnesområde: datorgrafik Handlar om visuella effekter för 3d-miljöer Institutionen för datavetenskap Handledare: Jon Hasselgren Examinator: Tomas Akenine-Möller Southend Interactive AB, Malmö
15 maj Översikt Introduktion och kort historia Målsättning Hur skapas partikeleffekter? Introduktion av shaderteknologi Partikeleffekter med shaderteknologi Olika typer av effekter Nästa generations partikelsystem Resultat Sammanfattning Frågeställning och opponering
15 maj Introduktion – vad är partikelsystem? William Reeves, Lucasfilms, 1983: ”A way of modelling a class of fuzzy objects” Modellering av objekt som saknar en väldefinierad yta och form Simulering av partiklar i ständig, slumpmässig rörelse. Rök, eld, vattendroppar, moln, regn, snö Explosioner, raketmotorer, fiktiva effekter
15 maj Historia - Partikelsystem Asteroids, Atari, 1979 När en asteroid förstörs flyger små prickar (partiklar) iväg i olika riktningar
15 maj Historia, forts Lucasarts 1982 (tidigare nämnd artikel av William Reeves) Datorsimulerade partikelsystem inom filmbranschen Star Trek II
15 maj Historia, forts Quake, ID Software, 1996, partikeleffekter i 3D
15 maj Historia, forts World in conflict, Massive Entertainment, 2007
15 maj Vad var målet med exjobbet? Huvudfrågan: ”Hur kan man skapa visuellt tilltalande partikeleffekter för interaktiva 3d- miljöer med hjälp av shaderteknologi, lämpliga för ett Xbox 360-spel? Tillvägagångssätt: –Hitta och förklara för- och nackdelar med shaderteknologi. –Hitta ett eller flera sätt att bygga ett partikelsystem baserat på shaderteknologi –Skapa ett demoprogram baserat på denna teknik. –Skapa några olika typ av effekter, såsom rök, eld och explosioner.
15 maj Hur skapas partikeleffekter? – Del 1: Partiklar Partiklar - små eller stora 2-dimensionella bilder. De förflyttar sig, ändrar färg, storlek och genomsynlighet (transparency).
15 maj Partiklar, forts Varje partikel består av 4 vertiser, hörnpunkterna i 2 triangulära polygoner som bildar en kvadrat. Kvadratens yta vänds oftast mot betraktaren, sk billboarding En textur som beskriver partikelns utseende mappas direkt på kvadraten
15 maj Partiklar, forts Flera transparenta partiklar i grupp bildar en helhet. Alla partiklar har slumpvis vald: –rörelse –position –avstånd från kameran
15 maj Partiklar, forts
15 maj Hur skapas partikeleffekter? - Del 2: Partiklarnas rörelse Metod 1: Tillståndsbaserad rörelse Spara undan och uppdatera varje partikels position och hastighet i varje frame Mest korrekt ur fysikalisk synpunkt Möjligt att använda variabel acceleration
15 maj Partiklarnas rörelse, forts Metod 2: Tidsbaserad rörelse Effektivt God approximering av verklig rörelse vid konstant acceleration Effekter kan pausas, spelas i slow-motion eller baklänges Man kan börja rendera en effekt i mitten och slipper beräkna den från start Partiklarnas position p vid tiden t beräknas med: –p(t) = a/2 * t^2 + v0 * t + p0
15 maj Hur skapas partikeleffekter? – Del 4: Partiklarnas storlek Partiklarnas storlek ökar eller minskar med tiden Partiklarnas genomsnittliga storlek varierar mellan olika typer av effekter: Stora partiklar: Rök, Eld i Explosioner, Tryckvågor från explosioner m.m. Medelstora partiklar: Eldsflammor, regndroppar, snöflingor m.m. Gnistor, fyrverkerier, insekter i svärm m.m.
15 maj Hur skapas partikeleffekter? – Del 3: Färg Texturen beskriver partikelns form, färgen sätts direkt i applikationen Färg och alfa-värde ändras med tiden Genom olika blending-metoder skapas olika karaktär på effekterna –One-blending: Färgen adderas hos överlappande partiklar –Inverterad blending: partiklar med högt alfa- värde syns igenom partiklar med lågt alfa- värde. Renderingsordningen är viktig!
15 maj Introduktion av shaders Små program som körs på grafikkortet Effektivt sätt att avlasta huvudprocessorn Består av två delar: –Vertex Shader –Pixel Shader Körs en gång per vertex/pixel Placera beräkningar i vertex shadern om möjligt: –4 vertiser per partikel –Tusentals (upp till miljontals) pixlar per partikel Högnivåspråk för shaderprogrammering: –DirectX: HLSL (High Level Shader Language) –OpenGL: GLSL (Open Graphics Library Shader Language) Senaste standarden: Shader Model 3.0
15 maj Partikelsystem med shaders Simulera partiklarnas beteende på grafikkortet med ett shaderprogram Programmet beskriver en enskild partikels rörelse, färgändring, storlek etc. Varje partikel representeras av 1 vertex (point sprite) eller 4 vertiser (hörnorna i en kvadrat) Partikelns beteende beskrivs i vertex-shadern. Vertex shadern behandlar varje vertex som en partikel Huvudapplikationen skapar partiklar Shaderapplikationen definierar partiklarnas beteende
15 maj Partikelsystem med shaders, forts Tillståndsbaserade partikelsystem –Kräver hämtning och lagring av partikeldata i texturer på grafikkortet. –Kräver Shader Model 3.0 –Klarar realistisk simulering av miljontals partiklar Tidsbaserade partikelsystem –Lätta att implementera med shaders –Fungerar även med Shader Moder 2.0 –Billiga, kräver lite av både CPU och grafikkort
15 maj Partikelsystem med shaders, forts Partikeldata sparas som vertexdata –Startposition –Ursprungshastighet –Ursprunglig storlek –Födelsetidpunkt –Livslängd –Ursprungsfärg –Slumpvärden –Texturkoordinater Global data sparas i globala shadervariabler –Tid –Transformationmatriser m.m.
15 maj Olika typer av effekter
15 maj Nästa generations partikelsystem Miljontals partiklar med render-to- texture metoden och Shader Model 3.0 DirectX 10 och Geometry Shaders –”Mjuka partiklar” –Enkel hantering av partikeldata i texturer för tillståndsbaserade partikelsystem
15 maj Vad har uppnåtts? Ett partikelsystem och ett flertal partikeleffekter som kommer att användas i ett skarpt spelprojekt En utförlig beskrivning av hur partikeleffekter kan skapas med shaderteknologi Bevis på att shaderteknologi är både enkelt och effektivt att använda till partikeleffekter Massor av ny personlig erfarenhet inom programutveckling och datorgrafik
15 maj Sammanfattning Partikelsystem –Simulerar fenomen såsåom rök, eld och explosioner –Effekter genom små bilder som rör sig och har ett slumpmässigt beteende i förhållande till varandra –Kan effektiviseras med hjälp av shaderteknologi Shaders –Är små program som körs på grafikkortet –Definierar partiklarnas enskilda beteende
15 maj Frågor?