Motor I. Scene graph XML Rendering Szécsi László.

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

2010/2011 ősz Klár Gergely  A DirectX egy alacsonyszintű API gyűjtemény  Multimédiás alkalmazások futtatására, írására szolgál  Részei.
GraphGame gg001-Triangle
Lua script Szécsi László
Mesh betöltés, kirajzolás Szécsi László. dx11-ben nincs – játékfejlesztők írnak maguknak úgyis DXUT-ban van – CDXUTSDKMesh – csak sdkmesh formátumot tud.
GPGPU labor I. OpenGL, Cg.
GPGPU labor V. GPU ray tracing. Kezdeti teendők Tantárgy honlapja, GPU ray tracing A labor kiindulási alapjának letöltése (lab5_base.zip), kitömörítés.
Öröklődés 2..
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
Bevezetés a Java programozásba
Fájlkezelés, IO Kivételkezelés Belső osztályok
Programozás II. 3. Gyakorlat C++ alapok.
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
Számítógépes grafika 3. gyakorlat.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Objektum orientált programozás a gyakorlatban
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Motor IIII. Vezérlés Szécsi László. Letöltés diák: //l09-engine4.ppt.
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.
PhysX autó Szécsi László. Letöltés diák: bagira.iit.bme.hu/~szecsi/GraphGame //l12-car.ppt modell: bagira.iit.bme.hu/~szecsi/GraphGame //pickup.zip.
DirectX9 empty project Szécsi László. Visual Studio Első indításkor C++ választása.
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ó.
PhysX integráció Szécsi László. Letöltés diák: bagira.iit.bme.hu/~szecsi/GraphGame //l11-physx.ppt modell: bagira.iit.bme.hu/~szecsi/GraphGame //pickup.zip.
Transzformációk, textúrák, árnyalás Szécsi László.
DirectX9 empty project Szécsi László. Project létrehozása Microsoft DirectX SDK (August 2008) telepítése Start Menu \ Microsoft DirectX SDK (August 2008)\
Számítógépes grafika Bevezetés
Textúrák Grafikus játékok fejlesztése Szécsi László g07-texture.
Kamera, 3D, transzformációk Szécsi László. Math.zip kibontása az Egg projectkönyvtárba – float2, foat3, float4 típusok, HLSL-ben megszokott műveletekkel.
Plakátok, részecskerendszerek Grafikus játékok fejlesztése Szécsi László g09-billboard.
Grafikus játékok fejlesztése Szécsi László g10-engine
Megjelenítő-motor, színtér- menedzsment Szécsi László.
Effect framework, HLSL shader László Szécsi. forráskódban elérhető egyszerűsíti a shaderek fordítását, rajzolási állapot beállítását – pass: egy ilyen.
Grafikus játékok fejlesztése Szécsi László t09-texture
OO framework, Egg util library László Szécsi. Projektek nem osztoznak semmilyen kódon – DXUT mindegyikben – effect betöltés, mesh betöltés, GUI mindegyikbe.
Textúrázás Szécsi László. giraffe.jpg letöltése SolutionDir/Media folderbe.
GPGPU labor III. Iteratív algoritmusok. Kezdeti teendők Tantárgy honlapja, Iteratív algoritmusok A labor kiindulási alapjának letöltése (lab3base.zip),
Számítógépes grafika DirectX 5. gyakorlat. Emlékeztető Háromdimenziós alapok befejezése Textúrázás.
2. gyakorlat DirectX 2007/2008 tavasz Klár Gergely
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
Számítógépes grafika OpenGL 5. gyakorlat.
Haladó C++ Programozás SzJ/IV
Vizualizáció és képszintézis Térfogati textúrák kezelése (Dart + GLSL) Szécsi László.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
JSF – komponens alapú webfejlesztés. Mi az a JSF mire jó ● Egy szerver oldali, komponens alapú felhasználói felület keretrendszer ● Támogatja a webes.
Global Illumination.
Vizualizáció és képszintézis
Vizualizáció és képszintézis
gg004-Mesh project copy-paste-rename gg002-App folder
Kamera, 3D, transzformációk Szécsi László
Material+ kioptimalizált uniformok
Sw2 PhysX.
C++ Standard Template Library
Direct3D DirectCompute
Environment mapping Szécsi László
3. osztályban.
Konverziós operátorok
Előadás másolata:

Motor I. Scene graph XML Rendering Szécsi László

Letöltés /code/E/code/EggCoreFirstBase2005.zip vagy grafjatek.blog.hu kibontani: új folderbe

Próba több egyforma entitás

Osztályok EngineCore control() animate() render() EntityDirectoryMeshDirectoryEntityD3DXMeshTextureDirectoryD3DTextureShadedMeshDirectoryShadedMesh EngineInterface CubeTextureDirectoryD3DCubeTexture

Nézzük a kódot! Directory.h konténer definíciók EngineCore osztály konténer tagváltozók

Osztályok EngineCore control() animate() render() EntityDirectoryEntityNodeGroupNode control() animate() render() entityDirectory sceneRoot subNodes

Nézzük a kódot! EngineCore osztály Node* sceneRoot; Node osztály Entity & NodeGroup közös interfacee NodeGroup osztály Gyerekek: std::vector subnodes; Entity osztály

Kamerák EngineCore control() animate() render() CameraDirectoryCamera EngineInterface FreeCameraEntityCameraCFirstPersonCameraEntity

Nézzük a kódot! EngineCore CameraDirectory cameraDirectory; CameraDirectory::iterator currentCamera; Camera általunk használt mátrixok lekérése FreeCamera mindent tovább a CFirstPersonCamerának EntityCamera: kamera entitáshoz kötve

Entity-ShadedMesh-Role-Material Entity ModelMatrix render(camera, effect) Material apply(effect) D3DTextureShadedMesh render(effect) D3DXMesh drawSubset() roles D3DXEffect setMatrix() setTexture() setTechnique() setMatrix setTexture setTechnique Role render(effect) materials

Nézzük a kódot! Material milyen technique const std::string techniqueName; milyen nevű shaderparamétereket mire kell állítani TextureDirectory textureEffectVariables; apply fentiek beállítása

Nézzük a kódot! Role egy material minden submeshre lesz egy konstruktor, ami az.x fileból vett material buffer alapján megcsinál minden Materialt

Nézzük a kódot! ShadedMesh melyik mesh milyen anyagokkal (minden Role egy lehetőség erre) ‘basic’ role lesz csak egyelőre

Nézzük a kódot! Entity shadedMesh referencia + pozíció (ez később nem kell, mert az Entity leszármazottai pl. a PhysX- től kérik le, hogy hol is vannak, de a mai laborra kell, hogy az entitásaink ne egymáson legyenek)

XML betöltés EngineCore metódusai createManagedResources loadLevel sorra betölt mindent a konténerekbe

levelCore.xml

Új ShadedMesh “

Próba Egyik űrhajó más textúrával

Feladatok alaptechinka bővítése színparaméterrel –steel textúrát használó arany/réz űrhajók új shader –env mapping-es űrhajó env map rajzolás háttérbe bővítés fényforrásokkal –XML-ben megadható fények –"basic" technique kiegészítése fényforrások kezelésével

Bővítés színparaméterrel új Directory típus: VectorDirectory typedef std::map VectorDirectory; Material osztályba –vectorEffectVariables tag VectorDirectory vectorEffectVariables; –setVector metódus void setVector(const std::string& vectorName, const D3DXVECTOR4& value); –apply kiegészítése

Bővítés színparaméterrel void Material::setVector(const std::string& vectorName, const D3DXVECTOR4& value) { vectorEffectVariables[vectorName] = value; }

Bővítés színparaméterrel // apply kiegészítése { // … VectorDirectory::iterator i = vectorEffectVariables.begin(); while(i != vectorEffectVariables.end()) { effect->SetVector( i->first.c_str(), &i->second); i++; }

Bővítés színparaméterrel XML betöltő kiegészítése ilyeneket tudjon betölteni: csak példa, nem kell másolni sehova – mint texture tag –D3DXVECTOR4 behozása xmlNode.readVector4(L”kdColor”);

Betöltés kiegészítése EngineCore void loadVectorVariables(XMLNode& materialNode, Material* material);

Beltöltés implementáció void EngineCore::loadVectorVariables(XMLNode& materialNode, Material* material) { int iVector = 0; XMLNode vectorNode; while( !(vectorNode = materialNode.getChildNode(L"Vector", iVector)).isEmpty() ) { D3DXVECTOR4 value = vectorNode.readVector4(L"value", D3DXVECTOR4(1, 1, 1, 1)); if(vectorNode||L"name") material->setVector(vectorNode||L"name", value); iVector++; }

void EngineCore::loadShadedMeshes (XMLNode& xMainNode) loadTextureVariables( materialNode, material); loadCubeTextureVariables( materialNode, material); loadVectorVariables( materialNode, material);

Bővités színparaméterrel:.fx új uniform param (standard.fx): float4 kdColor; psBasic-ben moduláljunk: return kdColor * tex2D(…

XML “

Gond: a többi is zöldes lesz, mert nincs soha átállítva a kdColor Tehát az.x fileből gyártott shadedmeshben is állítsuk be Role::Role(LPD3DXBUFFER materialBuffer, unsigned int nSubmeshes, TextureDirectory& textureDirectory, LPDIRECT3DDEVICE9 device, const std::string& techniqueName){ … material->setTexture("kdMap", texture); material->setVector("kdColor", D3DXVECTOR4(1, 1, 1, 1));

Próba Különböző színű űrhajók