Textúrák Grafikus játékok fejlesztése Szécsi László 2011.03.04. g07-texture.

Slides:



Advertisements
Hasonló előadás
Árnyalás – a felületi pontok színe A tárgyak felületi pontjainak színezése A fényviszonyok szerint.
Advertisements

 Árnyalási egyenlet  Saját emisszió  Adott irányú visszaverődés.
Inkrementális 3D képszintézis
GPU Szirmay-Kalos László.
Geometriai modellezés
Sugárkövetés: ray-casting, ray-tracing
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.
Grafikus játékok fejlesztése Szécsi László g11-physics
GPGPU labor I. OpenGL, Cg.
Térinformatikai elemzések. Megválaszolható kérdések Pozíció - mi van egy adott helyen Feltétel - hol vannak …? Trendek - mi változott meg? Minta - milyen.
Digitális Domborzat Modellek (DTM)
Textúrák, világmodellek
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.
Mérnöki objektumok leírása és elemzése virtuális terekben c. tantárgy Budapesti Műszaki Főiskola Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek.
Számítógépes grafika 3. gyakorlat.
4.7. Textúra A felület anyagszerűsége Sík-képek ráborítása a felületre
Számítógépes grafika 5. gyakorlat. Előző órán Textúrázási módok Pixel shader használata.
Számítógépes Grafika Programtervező informatikus (esti)‏ Textúrázás.
Számítógépes Grafika Megvilágítás Programtervező informatikus (esti)‏
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ó
Vektorok különbsége e-x = [ex-xx ey-xy ez-xz] e e-x x szempozíció
Motor II. Env map Spotlight Szécsi László. Letöltés /code/E/code/EggCoreSecondBase.zip Kibontani (vagy előző labor folyt.):
Terep Szécsi László. Mechanizmus NxHeightField-ek definiálása PhysicsModel-be NxHeightFieldShapeDesc-ek betöltése Mesh-ek gyártása az NxHeightField- ekből.
Fraktálok és csempézések
Motor I. Scene graph XML Rendering Szécsi László.
Environment mapping Szécsi László. Új osztály: Lab3EnvMap copy&paste: Lab2Trafo.h -> Lab3EnvMap.h copy&paste: Lab2Trafo.cpp -> Lab3EnvMap.cpp copy&paste:
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ó.
Transzformációk, textúrák, árnyalás Szécsi László.
Játékfejlesztés.
Sugárkövetés: ray-casting, ray-tracing
1.Labor : Modellezés. Blender D:\GameDev\Blender3D\blender.exe D:\GameDev\Blender3D\blender.exe Ismerkedjünk az interface-el!!!
Térfogatvizualizáció
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
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
Árnyalás – a felületi pontok színe A tárgyak felületi pontjainak színezése A fényviszonyok szerint.
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.
Számítógépes Grafika 7. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
GPU ELTE IK Számítógépes Grafika II. Jeni László Attila
Jeni László Attila Klár Gergely
Árnyalás – a felületi pontok színe A tárgyak felületi pontjainak színezése A fényviszonyok szerint.
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 gyakorlat: DirectX 2007/2008 tavasz Klár Gergely
Képek, képfeldolgozás Szirmay-Kalos László.
Vizualizáció és képszintézis
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.
Bevezetés.  Miért …  … egyszálúan programozunk?  … probléma ez?  Hogyan …  … változik ez?  … tudjuk kihasználni?  Megéri-e párhuzamosítani?
3D grafika összefoglalás
Szécsi László 3D Grafikus Rendszerek 17. előadás
Global Illumination.
Vizualizáció és képszintézis
A grafikus hardware programozása
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Vizualizáció és képszintézis
Görbék, felületek.
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
GPGPU – CUDA 2..
Bevezetés GPGPU Alkalmazások.
Environment mapping Szécsi László
Előadás másolata:

Textúrák Grafikus játékok fejlesztése Szécsi László g07-texture

Textúra interpretációk kép a memóriában – ugyanolyan mint a frame buffer – pixel helyett texel adatok tömbje – 1D, 2D, 3D tömb – pl. RGB rekordok függvény diszkrét mintapontjai rácson – rekonstrukció: szűrés – függvény a 3D felületi pontok felett? RGB RGB RGB RGB RGB RGB

Textúra formátum egy texel hány bit, hogyan elosztva pl. D3DFMT_R5G6B5 3 csatornás, 16 bites lehet floating point pl. D3DFMT_A32B32G32R32F 16 byte/texel ! depth-stencil buffer is lehet textúra D3DFMT_D24S8 depthstencil

Textúra leképezés 3D felületi pont → 2D textúratérbeli pont u = T(x) tetszőleges f(x) tárolható textúrában f(x) = f(u) = f(T(x)) – megkeressük a pont textúrakoordinátáját – értéket kiolvassuk a textúra megfelelő texeléből árnyaláshoz a felületi jellemzőket tárolhatjuk – BRDF paraméterek: kd, ks, shininess, kr – normálvektor: bump map, normal map

Textúra leképezés T(x) legyen könnyen számítható – csúcsokban adott modellezéskor u,v koordinátákat rendelünk a vertexekhez – háromszögeken interpoláljuk a felületen NEM a képernyőn

Perspektív helyes interpoláció ha a világban lineáris, akkor a képernyőn nem textúráknál látszik – persp. helyes textúrázás de ma már – mélység – szín

Modellezés textúrákkal UV koordináták hozzárendelése 2D festés – 2D-ben az élek megrajzolása (szabásminta) – rajzolóprogrammal 2D-ben 3D festés – 3D modellen kijelölt pont – felület → textúratér részletes geometriai modell alapján – egyszerű modell + részletek textúrában

Természetes paraméterezés felület paraméteres egyenletéből

Textúrázás Mayában (0,0) (1,1)

Planar mapping

Textúrázás Mayában

Cylindrical mapping

Spherical mapping

Per face automatic mapping

UV atlas általában megengedett, hogy több felületi ponthoz ugyanaz a textúrakoordináta tartozzon – model bal és jobb oldala nem kell kétszer de – 3D festés (máshol ne legyen változás csak ahova festek) – számított textúra (pl. light map)

UV atlas = átfedés nélküli kiterítés

Textúrák szűrése texel > pixel (közeli felület) – texel-értékek egy folytonos függvény mintapontjai – nearest a legközelebbi texel értékét használjuk – bilineáris 4 legközelebbi között interpolálunk elkeni a texel-éleket a felületen

Textúrák szűrése texel < pixel (távoli felület) – egy pixelbe sok texel esik, átlagolni kellene – ha a pixelközép textúrakooriniátájához legközelebbit vesszük, akkor gyakorlatilag véletlenül választunk egy texelt az átlag helyett – kameramozgásnál változik, melyiket – megoldás átlagok előre kiszámolása: mipmappek

Mipmap u, v, m trilineáris szűrés – u,v két szinten – kettő között interpolálás

Példa: diffuse map (k d ) IDirect3DTexture9 interface létrehozás fileból: D3DXCreateTextureFromFile( device, textureFilePath, &texture);

Textúra effect fileban texture kdMap; sampler2D kdMapSampler =sampler_state{ texture = ; MinFilter = LINEAR; MagFilter = LINEAR; MipFilter = LINEAR; AddressU = Wrap; AddressV = Wrap; }; globális textúra változó ehhez kell kötni amit betöltöttünk textúrázási állapotleíró egy textúrához több is lehet ebből tudunk HLSL-ben olvasni

Pixel shader float3 lightRadiance; float3 lightDir; float4 psDiffuse(TrafoOutput input) : COLOR0 { // diffúz árnyalás: I L L · N k d return lightRadiance * dot(input.normal, lightDir) * tex2D(kdMapSampler, input.tex); } irányfényforrás

Cube map 6 db 2D textúra kocka felületén a benne vagyunk a kocka közepén minden irányt lefed irány függvényében is tudunk tárolni valamit HW: a textúra irányvektorral címezhető – kiszámítja melyik lap milyen u,v

Environment map nem a felületi jellemzőket, hanem a megvilágítást tároljuk textúrában I(  ) – bejövő radiancia az irány függvényében – nem függ a felületi pont pozíciójától – végtelen távoli környezet minden irányból jön be fény – összes texelre kellene összegezni – DE: ideális tükör: csak 1 irányból érdekes mi jön be

Cube map effectben textureCUBE environmentCubeTexture; samplerCUBE environmentCubeSampler = sampler_state { texture = ; MipFilter = Linear; MagFilter = Linear; MinFilter = Linear; };

Env map pixel shader float3 kr; //ideális visszaverődés paraméter float4 psEnvMap(TrafoOutput input) : COLOR0 { float3 reflDir = reflect( -viewDir, input.normal); return kr * texCUBE(envMapSampler, reflDir); }

Hogyan rajzoljuk magát a környezetet nagy valamire feszítve – sky box – sky dome full screen quad – teljes képernyőt lefedő négyszög – a pixel shaderben megkeressük az irányt – Z bufferelés: mindennél hátrább van ezt rajzoljuk elöször VAGY a full-screen quad Z-je legyen (norm. képenyőkoordinátában)

full screen quad vertex shader vsEnvironmentOutput vsEnvironment(vsEnvironmentInput input) { vsEnvironmentOutput output = (vsEnvironmentOutput)0; output.pos = input.pos; // képből vissza világba float4 hWorldPos = mul(viewProjInverseMatrix, input.pos); // homogén osztás kézzel kell hWorldPos /= hWorldPos.w; // pixel shadernek megvan a világpozíció output.worldPos = hWorldPos.xyz; return output; };

pixel shader float4 psEnvironment(vsEnvironmentOutput input) : COLOR0 { float3 viewDir = normalize(input.worldPos.xyz - eyePosition.xyz); return texCUBE(environmentCubeSampler, viewDir); };