270 likes | 394 Vues
Partikelsystem. för interaktiva 3d-miljöer - med shaderteknologi. Examensarbete vid inst. för datavetenskap Jakob Schyberg, D-00. Lite om examensarbetet. Ämnesområde: datorgrafik Handlar om visuella effekter för 3d-miljöer Institutionen för datavetenskap Handledare: Jon Hasselgren
E N D
Partikelsystem för interaktiva 3d-miljöer - med shaderteknologi Examensarbete vid inst. för datavetenskap Jakob Schyberg, D-00 jakob.schyberg@gmail.com
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ö jakob.schyberg@gmail.com
Ö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 jakob.schyberg@gmail.com
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 jakob.schyberg@gmail.com
Historia - Partikelsystem • Asteroids, Atari, 1979 • När en asteroid förstörs flyger små prickar (partiklar) iväg i olika riktningar jakob.schyberg@gmail.com
Historia, forts • Lucasarts 1982 (tidigare nämnd artikel av William Reeves) • Datorsimulerade partikelsystem inom filmbranschen • Star Trek II jakob.schyberg@gmail.com
Historia, forts • Quake, ID Software, 1996, partikeleffekter i 3D jakob.schyberg@gmail.com
Historia, forts • World in conflict, Massive Entertainment, 2007 jakob.schyberg@gmail.com
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. jakob.schyberg@gmail.com
Hur skapas partikeleffekter? – Del 1: Partiklar • Partiklar - små eller stora 2-dimensionella bilder. • De förflyttar sig, ändrar färg, storlek och genomsynlighet (transparency). jakob.schyberg@gmail.com
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 jakob.schyberg@gmail.com
Partiklar, forts • Flera transparenta partiklar i grupp bildar en helhet. • Alla partiklar har slumpvis vald: • rörelse • position • avstånd från kameran jakob.schyberg@gmail.com
Partiklar, forts jakob.schyberg@gmail.com
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 jakob.schyberg@gmail.com
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 jakob.schyberg@gmail.com
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. jakob.schyberg@gmail.com
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-metoderskapas 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! jakob.schyberg@gmail.com
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 jakob.schyberg@gmail.com
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 jakob.schyberg@gmail.com
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 jakob.schyberg@gmail.com
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. jakob.schyberg@gmail.com
Olika typer av effekter jakob.schyberg@gmail.com
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 jakob.schyberg@gmail.com
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 jakob.schyberg@gmail.com
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 jakob.schyberg@gmail.com
Frågor? jakob.schyberg@gmail.com