Grafikus játékok fejlesztése Szécsi László g11-physics

Slides:



Advertisements
Hasonló előadás
BSP-fák használata játék- engine fejlesztésében a nagy kiterjedésű zárt terek megjelenítéséhez Előadó: Boromissza Gergely Konzulens: dr. Szirmay-Kalos.
Advertisements

 Árnyalási egyenlet  Saját emisszió  Adott irányú visszaverődés.
2D képszintézis Szirmay-Kalos László.
Inkrementális 3D képszintézis
Geometriai modellezés
Sugárkövetés: ray-casting, ray-tracing
2D képszintézis Szirmay-Kalos László. Számítógépes grafika feladata képszintézis Virtuális világ modell modellezés Metafórák: 2D rajzolás világ = sík.
Geometriai modellezés
Számítógépes grafika Szirmay-Kalos László
Térfogatvizualizáció Szirmay-Kalos László. Térfogati modellek v(x,y,z) hőmérséklet sűrűség légnyomás potenciál anyagfeszültség... v(x,y,z) tárolás: 3D.
Sugárkövetés: ray-casting, ray-tracing Szirmay-Kalos László.
Számítógépes grafika Szirmay-Kalos László
3D képszintézis fizikai alapmodellje
Bevezetés.  A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja  Teljesítménykövetelmények:  Animáció: néhány nsec.
Transzformációk kucg.korea.ac.kr.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, D képszintézis 4. előadás.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
Színek és megvilágítás
A számítógépes grafika céljai és feladatai
A virtuális technológia alapjai Dr. Horváth László Budapesti Műszaki Főiskola Neumann János Informatikai Kar, Intelligens Mérnöki Rendszerek.
2D képszintézis és textúrák
Diplomamunka Geometriai invariánsokat interpoláló rekurzívan finomítható felületek Valasek Gábor ELTE IK, 2008.
Geometriai invariánsokat interpoláló rekurzívan finomítható felületek
Számítógépes grafika 3. gyakorlat.
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
2. Koordináta-rendszerek és transzformációk
Számítógépes Grafika Programtervező informatikus (esti)‏ Textúrázás.
2008/2009 tavasz Klár Gergely  Gyakorlatok időpontjai: ◦ Szerda 10:05–11:35 ◦ Csütörtök 10:00+ε –11:30+ε  Gyakvez: ◦ Klár Gergely ◦
Térfogatvizualizáció Szirmay-Kalos László. Térfogati modellek v(x,y,z) hőmérséklet sűrűség légnyomás potenciál anyagfeszültség... v(x,y,z) tárolás: 3D.
Grafikus alaphardver Szirmay-Kalos László. Jelfeldolgozási megközelítés modellezés modell képszintézis Digitális kép megjelenítés Analog Digitál Képinformáció.
Sugárkövetés: ray-casting, ray-tracing
Térfogatvizualizáció
Vektorok különbsége e-x = [ex-xx ey-xy ez-xz] e e-x x szempozíció
Fraktálok és csempézések
Vízfelület Szécsi László. Nyílt víz a nyílt óceánon a felületi cseppecskék körmozgást végeznek trochoid hullámforma hullámhossz hullámmagasság amplitúdó.
Sugárkövetés: ray-casting, ray-tracing
2D képszintézis Szirmay-Kalos László.
Számítógépes grafika Bevezetés
3D képszintézis fizikai alapmodellje Szirmay-Kalos László Science is either physics or stamp collecting. Rutherford.
Rendering pipeline Ogre3D
Textúrák Grafikus játékok fejlesztése Szécsi László g07-texture.
Plakátok, részecskerendszerek Grafikus játékok fejlesztése Szécsi László g09-billboard.
Többmenetes renderelés Grafikus játékok fejlesztése Szécsi László g11-multipass.
Grafikus játékok fejlesztése Szécsi László t09-texture
4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontban ? (4.4.LÁTHATÓSÁG) A képponton át a szembe jutó fénysugár melyik.
Számítógépes grafika DirectX 5. gyakorlat. Emlékeztető Háromdimenziós alapok befejezése Textúrázás.
Sugárkövetés: ray-casting, ray-tracing Szirmay-Kalos László.
Jeni László Attila Klár Gergely
2.2. Az egyenes és a sík egyenlete
Bevezetés a számítógépi grafikába 2. Paraméteres görbék Paraméteres görbe: 2D-ben: paraméter: általában: kikötések: legyen folytonos legyen folytonosan.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Színek és megvilágítás 5. előadás.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
Informatikai eszközök a virtuális valóság szolgálatában Hapák József ELTE-IK X. Eötvös Konferencia.
4.6. A Fénysugár-követés módszere (ray-tracing) Mi látható a képernyőn, egy-egy képpontjában ? És az ott milyen színű ? (4.7. Árnyalás)
Képek, képfeldolgozás Szirmay-Kalos László.
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése 6.2. Térbeli alakzatok képe 6.3. Térbeli képelemek és modell-adatszerkezetek 6.4. Képelemek.
3D grafika összefoglalás
Lighting III.
Vizualizáció és képszintézis
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Vizualizáció és képszintézis
Vizualizáció és képszintézis
OpenGL IV.
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Vizualizáció és képszintézis
GPGPU – CUDA 2..
Sugármetszés implicit szintfelülettel
Environment mapping Szécsi László
Előadás másolata:

Grafikus játékok fejlesztése Szécsi László 2011.03.30. g11-physics Displacement mapping Grafikus játékok fejlesztése Szécsi László 2011.03.30. g11-physics

Displacement mapping egyszerű geometria + felület elmozdulások textúrában bucka leképezés [bump mapping] normal mapping parallax mapping sphere tracing vertex displacement

Elmozdulás viszonyítási rendszere modellezési térben [object space] egyszerű új pos = régi pos + elmozdulás nem jó, ha bump map: elmozdulás mindig a normál mentén nem 1-1 az UV leképezés pl. ismétlődő minta változik a felület orientációja modelltérben pl. karakteranimáció más vertex shader trükkök

Elmozdulás viszonyítási rendszere érintőhöz képest [tangent space] ki kell számítani a bázisvektorokat normál, tangens, binormál minden vertexre Binormál: B = sv Normál: N = su x sv B x N = T N x T= B Érintő(tangens): T = su s(u,v)

Tangent frame DirectXben ki/be LPD3DXMESH D3DXComputeTangentFrameEx(mesh, D3DDECLUSAGE_TEXCOORD, 0, D3DDECLUSAGE_TANGENT, 0, D3DDECLUSAGE_BINORMAL, 0, D3DDECLUSAGE_NORMAL, 0, D3DXTANGENT_DONT_NORMALIZE_PARTIALS | D3DXTANGENT_GENERATE_IN_PLACE | D3DXTANGENT_CALCULATE_NORMALS, NULL, 0.01f, 0.25f, 0.01f, NULL, NULL); ezekbe a vertex buffer elemekbe kell rakni a számított vektorokat vektorok hossza jelezheti a texel/hossz arányt

Bump map textúrában csak buckamagasság (elmozdulás a “sima” normál mentén) ebből kell kiszámítani a “rücskös” normálvektort az árnyaláshoz

Normálvektor a buckaderiváltakból Nr s(u,v): sima felület r(u,v): rücskös felület r(u,v) = s(u,v) + d(u,v) N(u,v)  = ru x rv = (su+duN+d Nu) x (sv+dvN+d Nv)= su x sv + (duN x sv + dv su x N) d(u,v) N Normálvektor perturbáció N + (du T + dv B)

Normal map ugyanaz, csak nem kell a deriváltakkal vacakolni, mert előre ki van számítva és letárolva float4 psNormalMapped(VS_OUTPUT IN) : COLOR { //mátrix a vektorokból float3x3 ModelToTangent = TransfModelToTangent(IN.Tangent, IN.Binormal, IN.Normal ); //tangent space normál kiolvasása float3 tNormal = tex2D(NormalMapSampler, IN.TexCoord).rgb; //világ normál float3 mNormal = normalize( mul( tNormal, ModelToTangent ) ); //ezzel lehet árnyalni ...

Parallax map normal map + kis trükk új pozícióval aztán normal map + texture map bias scale közelítő felület rücskös felület új textúra pozíció eredeti felület

Parallax map HLSL float3 tView = mul(ModelToTangent, worldViewDir); float h = tex2D(heightMap, tex) * HEIGHT_SCALE + HEIGHT_BIAS; float2 newTex = tex + h * tView.xy / tView.z; innen ugyanaz mint a normal map, csak az új tex koordinátát használjuk mindenre ? h tView.z tView.xy

Bump és parallax

Offset limited parallax map Parallax meredek szögekre tView.z-vel osztás miatt nagyon messziről olvas bias scale közelítő felület rücskös felület új textúra pozíció eredeti felület

Offset limited parallax map Legyen a max. korrekció a magasság Hagyjuk el az osztást ha tView.z  1, ugyanaz ha tView.z  0, a limitálás miatt tView.xy / tView.z → tView.xy kell float h = tex2D(heightMap, tex) * HEIGHT_SCALE + HEIGHT_BIAS; float2 newTex = tex + h * tView.xy / tView.z ;

Parallax és offset limited parallax

Slope parallax közelítő érintőfelület rücskös felület új textúra pozíció eredeti felület

Slope parallax float h = tex2D(heightMap, tex) * HEIGHT_SCALE + HEIGHT_BIAS; float3 tNormal = tex2D(normalMap, tex); float2 newTex = tex + h * tNormal.z / dot(tNormal, tView) * tView.xy; offset limited:

Offset limited parallax és slope parallax

Iteratív keresés Magasságmező-sugár metszéspont keresés Parallax is erre közelítés

Iteratív parallax

Slope parallax és iteratív parallax

Bináris keresés

Bináris keresés

Szekáns keresés

Lineáris keresés Első pont megtalálás legyen biztos Relief mapping, steep parallax mapping

Lineáris keresés

Extra információ map Pyramidal displacement tracing Sphere tracing Cone tracing

Sphere tracing 3D textúra üres gömb sugarakkal

Sphere tracing

Cone tracing 2D textúra üres kúp nyílásszögekkel

Cone tracing

Procedurális csúcs elmozdítás procedurális modell konkrét geometria helyett az azt előállító algoritmus paramétereit adjuk meg pl. természeti jelenségek nagy kiterjedés, nagy részletesség, összetett dinamizmus nem működik a klasszikus munkamenet modellező eszköz → háromszögháló + keyframe háromszögháló megjelenítése grafikus HWen

Procedurális modell kompakt leírás nézetfüggő kibontás fizikai alapokon nyugvó animáció

Procedurális modellek megjelenítése minél később bontsuk ki a modellt nézetfüggően grafikus kártyán mag-geometria rajzolása geometria árnyaló új geometria gyártás csúcspont árnyaló felszín változtatás képpont árnyaló sugárkövetés fizikai szimuláció, modell kibontása és a megjelenítés egyidőben

Példa: óceán néhány különböző hullámhosszú hullámsorozat szuperpozíciója nézetfüggő oceán-sík felületi pontok elmozdítása a hullámok mechanikája alapján sekély víz, part figyelembe vétele partra futó hullámok, hab tarajos hullámok lebegő testek

Nyílt víz a nyílt óceánon a felületi cseppecskék körmozgást végeznek trochoid hullámforma hullámhossz gerinc amplitúdó hullámmagasság csepp pályája völgy hullám terjedése

2.5D imposztorok Gömbplakátok

Billboard vágási problémák részecske billboard

Billboard felbukkanási problémák Frame A Frame B

Spherical billboards Mélység kép:

Sugárkövetés a GPUn

A grafikus kártya képességei GPU nagy teljesítmény párhuzamosítás pipeline korlátok inkrementális képszintézisre alkották pár regiszternyi memória korlázott dinamikus program-végrehajtás (flow control: if, while)

Képszintézis pixel

A sugárkövetés szerepe képszintézis árnyalási egyenlet numerikus megoldása minták: fényutak legáltalánosabb módszer: sugárkövetés globális illuminációs módszerek photon tracing photon map virtuális fényforrások

Láthatóság a szemből pixel ray(t) = eye + v ·t, t > 0 FirstIntersect(ray  t, iobject, x) t = FLT_MAX; FOR each object tnew = Intersect( ray, object ); // < 0 if no intersection IF (tnew > 0 && tnew < t ) t = tnew, iobject = object ENDFOR IF (t < FLT_MAX) x = eye + v ·t; RETURN (t, iobject, x); RETURN „no intersection” END

Sugárkövetés primitívjei olyan alakzatok, amire a sugár-objektum metszéspont-számítás elvégezhető sík kvadratikus felületek xAxT = 0 gömb, ellipszoid, henger, kúp, etc. tórusz háromszög az interaktív grafikában úgyis háromszöghálókkal kell dolgoznunk

Metszéspont számítás: háromszög 1. Síkmetszés: (ray(t) - r1) ·n = 0, t > 0 normál: n = (r2 - r1) x (r3 - r1) 2. A metszéspont a háromszögön belül van-e? ((r2 - r1) x (p - r1)) ·n > 0 ((r3 - r2) x (p - r2)) ·n > 0 ((r1 - r3) x (p - r3)) ·n > 0 Felületi normális: n vagy „shading normals”

Sugár-háromszög metszés három feladat sugár-sík metszéspont pont-háromszög tartalmazás csúcsokban adott értékek interpolálása textúra-koordináták normálvektorok kettőt egy csapásra baricentrikus koordináták számítása p a b c

Sugár-háromszög metszés v1·a + v2·b + v3·c = p [a b c] = p[v1 v2 v3]-1 IVM ideális háromszög-reprezentáció a síkegyenlet is könnyen számolható belőle IVM → sík → metszéspont → baricentrikus koordináták → interpoláció

Transzformált objektumok

Sugárgép [ray engine] sugár textúra sugár találatok RT primitívek fetch z-test Pixel shader ray-primitive intersection draw full screen quad

Térfelosztás objektumok Elő- feldolgozás Sugár követés Térpartícionáló adatstruktúra Első metszéspont Adatstruktúra: Ha ismert a sugár, akkor a potenciális metszett objektumok számát csökkenti Ha a potenciálisak közül találunk egyet, akkor a többi nem lehet közelebb

Reguláris térháló előfeldolgozás bejárás minden cellára objektumlista következő cellára lépés minden objektumra a cellában metszéspontszámítás ha van metszésont a cellán belül, kész

kd-fa kd-fa bináris fa [BSP], koordinátasíkokkal párhuzamos vágósíkok „legjobb” térfelosztás színtértől függetlenül hatékony érzéketlen a „teáskanna a stadionban” esetre

kd-fa rekurzív bejárása sugárkövetés: rekurzív bejárás GPU: verem nélkül minden cella után a gyökérből indulva rosszabb mint a CPU implementáció Verem

A laza kd-fa klasszikus objektum tartozhat több cellához kilóghat a cellájából levél-lista bonyolult extra ellenőrzések laza cellák átlapolódhatnak objektum csak egy cellában nem lóghat ki egyetlen rendezett tömb két metszéspont párhuzamosan