Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaSarolta Feketené Megváltozta több, mint 10 éve
1
A program a „Tudáshasznosulást, tudástranszfert segítő eszköz-, és feltételrendszer kialakítása, fejlesztése a Műegyetemen” (TÁMOP-4.2.1-08/1/KMR-2008-0001) és a „Minőségorientált, összehangolt oktatási és K+F+I stratégia, valamint működési modell kidolgozása a Műegyetemen” (TÁMOP-4.2.1/B-09/1/KMR-2010- 0002) című projektek támogatásával valósul meg. Játékfejlesztés Windows Phone platformra Rajacsics Tamás (BME-AAIT) Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék
2
Tartalom 3D hardver XNA+Silverlight architektúra Virtuális világ felépítése Content Pipeline Sebesség és optimalizálás
3
Hardver képességek Grafikus csővezeték IA VS HS Tess DS GS Ras PS OM CS DirectX 11 csővezeték XNA csővezeték – Xbox 360 és PC IA VS Ras PS OM DX11DX10DX11 IA:Input Assembler VS:Vertex shader HS:Hull shader Tess:Tessellator DS:Domain shader GS:Geometry shader Ras:Rasterizer PS:Pixel shader OM:Output Merger CS:Compute shader XNA csővezeték – Phone 7 IAVSRasPSOM
4
Hardver képességek GPU sebesség Nokia Lumia 800 41 Mtri/s, 245 Mpixel/s 800x480 pixel Csak egyszerűbb hatások Memória sebesség ok ATI Radeon HD 6850 775 Mtri/s, 24,8 Gpixel/s 1920x1080 pixel (+FSAA) 1000 soros HLSL kód Memória sebesség a szűk keresztmetszet 1 pixelt 4-5-ször lehet felülírni
5
Silverlight + XNA 7.5-től működik Új projekt típus van hozzá XNA alkalmazás, ami tud renderelni Silverlight felületet Nekünk kell meghívni RenderTarget megoldás Fel tudom használni a textúrát máshogyan is
6
Silverlight + XNA Új projekt típus 3 projekt Content – A szokásos XNA Content Pipeline Lib – Az XNA projekt, ami kezeli a Content-et App – A Silverlight alkalmazás, amiben referenciát adunk a Lib- re Az App-ba mehet XNA kód és Silverlight is De a Lib-be csak XNA
7
Silverlight + XNA Architektúra Hasonló XNA-hoz Konstruktor (Initialize) OnNavigatedTo (LoadContent) OnNavigatedFrom (UnloadContent) OnUpdate OnDraw KonstruktorOnNavigatedTo OnUpdate OnNavigatedFrom OnDraw 30 FPS
8
Silverlight + XNA SharedGraphicsDeviceManager Az eszköz nem áll rendelkezésünkre kizárólagosan SharedGraphicsDeviceManager.Current Konstruktorban a méret PreferredBackBufferWidth = 800; PreferredBackBufferHeight = 480; Betöltéskor GraphicsDevice.SetSharingMode( true );
9
DEMO XNA+Silverlight
10
Világ felépítése Amit renderelünk Terep / belső tér Ég Víz Növényzet Karakter Statikus objektumok Volumetrikus hatások UI – akár Silverlight is lehet
11
Virtuális világ megteremtése Koordináta rendszer derékszögű, jobbkezes (XNA-ban alap) Tipikus tengely kiosztások X,Y sík a képernyő, Z felénk mutat X,Y sík a világ síkja, Z a magasság Számábrázolás float: lebegőpontos 32 bit Elvileg lehetne más is
12
Transzformációk 4x4 mátrixok Csontmodell: animációs alrendszer része Helyi: Ha a grafikus rosszul modellezte Ez nincs XNA-ban, betöltéskor transzformáljuk Világ: helyi – világ Nézet: világ – kamera Vetítés: kamera – képernyő
13
Beépített árnyalók Csak ez az 5 fajta van Windows Phone nem támogatja saját effekt írását, sem HLSL-t BasicEffectSkinnedEffectEnvironmentMapEffectAlphaTestEffectDualTextureEffect
14
Terep / belső tér Lehetőségek +- Textúra1 textúraMax 1 textúra Nincs HLSL, így atlasz, stb. kiesnek Fényszámítás1 fényNincs normal map MéretNagyKevés vertex, de erre vannak megoldások KomplexitásElfogadhatóVertex szám és overdraw
15
Terep / belső tér Árnyaló BasicEffect 0-3 fényforrás Vertex, vagy pixel árnyalás Textúra Köd Vertex szín
16
Ég és víz Lehetőségek +- SkyBox és SkySphereVanRészecske rendszer alapú felhőzet / víz nem jöhet szóba Környezet leképezésVanNincs normal map HullámzásLehetPixel alapú megoldás nem lehetséges Tükröződés és FresnelCube map vanTörés, vízköd, caustics nincs
17
Ég és víz Árnyaló EnvironmentMapEffect Környezet leképezés Fresnel Lightmap Cube map A-ban
18
Növényzet és részecske rendszer Lehetőségek +- Billboard és alfa tesztVanDinamikusan generált lehetne, de kevés a memória Mint objektumLehetHLSL generált nem AnimációElvileg lehetKöltséges, nem érdemes
19
Növényzet és részecske rendszer Árnyaló AlphaTestEffect Billboard rendereléshez Ahol nem látszik, ott nem is rajzol Nem gyorsabb Phone 7-en, mert alpha ingyen van (jelenlegi hardverrel) Z-buffert megőrzi
20
Karakterek Lehetőségek +- Model, textúra, submesh VanVertex számra figyelni kell, nincs normal map AnimációVan FényszámításPerpixel, alphaAmbiens térkép nincs ÁrnyékVanShadowmap nincs
21
Karakterek Árnyaló SkinnedEffect Karakter animációhoz Az animáció a CPU-n fut Skinning a GPU-n Max 72 csont 1, 2, vagy 4 súly
22
Statikus objektumok Lehetőségek +- Model, textúra, submesh VanVertex számra figyelni kell, nincs normal map FényszámításPerpixel, alpha, lightmap Ha mozog, akkor ambiens térkép nincs ÁrnyékVanShadowmap nincs
23
Statikus objektum Árnyaló DualTextureEffect Tipikusan Lightmap-hez Az alaptextúra és a lightmap együtt Külön textúra koordináták Modulate 2X (A*B*2) Világosít, vagy sötétít 0.5 helyben hagy
24
DEMO Autó
25
XNA Content Pipeline Speciális projekt típus, amibe médiát tudunk berakni Textúra Hang Modell (X és FXB) Font XML – nem tetszőleges XML fájl Videó Tetszőleges egyéb fájl Lefordul XNB-re
26
XNA Content Pipeline Fordítás folyamata ContentImporter – ez tudja beolvasni a fájlt (parser) Kimenete Content DOM (XNA-ban lévő, vagy saját) ContentProcessor – Content DOM-ból készít futásidejű objektumot ContentTypeLoader – Sorosító betöltő része ContentTypeWriter – Sorosító kimentő része
27
XNA Content Pipeline A beépítetteket lehet használni Lehet sajátot írni Csak importer-t a fájlformátumokhoz Mind a négyet Ki is lehet kapcsolni (Content-re állítani) Ekkor a fájl teljesen kimarad Vagy "Copy if newer", így belekerül az XAP-be
28
Optimalizálás.NET keretrendszer Keretrendszer sebessége PC: gyors, jó GC, dinamikus kód jó Xbox: elfogadható, GC nem ok, dinamikus kód nem jó Phone: elfogadható, GC ok, dinamikus kód jó GC Phone-on 1MB foglalásonként indul el Az utolsó gyűjtéstől számítva Ne induljon el renderelés közben! GC.Collect() pályabetöltés után
29
Optimalizálás Overdraw Mennyiszer van egy pixel kirajzolva 1 jó, 2 ok, 10 elfogadhatatlan Létező algoritmusok a takart objektumok eldobására (occlusion culling) Nem igazán használhatjuk őket, mert lassú Tervezés időben már jól kell csinálni Z-buffer ugyanúgy eldob, mint PC-n Előröl hátra kell rajzolni De persze törölni kell a Z-t
30
Optimalizálás Vertex – pixel arány Alaptétel: annyira lehet komplex a modell, amennyi pixelen látszik Könnyű túlzásba esni 100 000 vertex-es modellel tele van a net Jó arány 1 vertex : 50 pixel Ég, víz, terep mind mehet ez alá bőven
31
Optimalizálás Felbontás Alapban 800x480 Lehet bármekkora Nagyobb is… Kisebb is! Nem csak a 400x240 jó, mert a hardverben van dedikált és jól működő skálázó: 611x413 is jól néz ki Lehet más oldalarány is A kamerát is át kell állítani ebben az esetben
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.