No Slide Title

Download Report

Transcript No Slide Title

Partikelsystem
för interaktiva 3d-miljöer
- med shaderteknologi
Examensarbete vid inst. för datavetenskap
Jakob Schyberg, D-00
15 maj 2007
[email protected]
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 2007
[email protected]
Ö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 2007
[email protected]
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 2007
[email protected]
Historia - Partikelsystem
• Asteroids, Atari,
1979
• När en asteroid
förstörs flyger små
prickar (partiklar)
iväg i olika
riktningar
15 maj 2007
[email protected]
Historia, forts
• Lucasarts 1982 (tidigare nämnd
artikel av William Reeves)
• Datorsimulerade partikelsystem inom
filmbranschen
• Star Trek II
15 maj 2007
[email protected]
Historia, forts
• Quake, ID Software, 1996, partikeleffekter i 3D
15 maj 2007
[email protected]
Historia, forts
• World in conflict, Massive Entertainment, 2007
15 maj 2007
[email protected]
Vad var målet med exjobbet?
• Huvudfrågan: ”Hur kan man skapa visuellt
tilltalande partikeleffekter för interaktiva 3dmiljö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 2007
[email protected]
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 2007
[email protected]
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 2007
[email protected]
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 2007
[email protected]
Partiklar, forts
15 maj 2007
[email protected]
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 2007
[email protected]
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 2007
[email protected]
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 2007
[email protected]
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 alfavärde syns igenom partiklar med lågt alfavärde.
• Renderingsordningen är viktig!
15 maj 2007
[email protected]
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 2007
[email protected]
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 2007
[email protected]
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 2007
[email protected]
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 2007
[email protected]
Olika typer av effekter
15 maj 2007
[email protected]
Nästa generations
partikelsystem
• Miljontals partiklar med render-totexture 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 2007
[email protected]
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 2007
[email protected]
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 2007
[email protected]
Frågor?
15 maj 2007
[email protected]