Kérdésekkel keressetek a csabix.balint [kukac] gmail.com címen!
Grafika órák anyaga: cg.elte.hu/~msc_cg
Szennai István óráihoz anyagok: http://darthasylum.blog.hu/
Követelmények
A következő táblázat összefoglalja mire lehet a félév során pontokat szerezni.
Feladat | Maximum pont |
---|---|
Newton fraktál | 6 |
Shadertoy feladat | 5 |
Texture mappings | 6 |
Órai munka | 13 |
Szorgalmi pontok összesen | 30 |
Nagybeadandó feladat | +∞ |
Osztályzat | Minimum pont | Maximum pont |
---|---|---|
Elégtelen (1) | 0 | 39 |
Elégséges (2) | 40 | 54 |
Közepes (3) | 55 | 69 |
Jó (4) | 70 | 84 |
Jeles (5) | 85 | 100 |
Jeles és 100 feletti rész EA vizsgába számít | 100 | +∞ |
Nagybeadandók feladat
A feladatkiírást itt találjátok: https://docs.google.com/document/d/1V3RXgSPWmNHfQYzRYFDtfyxZE_dz0GSSUZ9nxkPQa8o/edit?usp=sharing A gyakorlat elvégzéséhez egyetlen nagybeadandót kell készíteni C++ és OpenGL segítségével. A minimális pont elérése mellett a beadandónak a következőket minden esetben tudnia kell:
- ImGui segítségével készített grafikus felület. A feladatok paramétereihez, a program változóihoz értelemszerűen elkészített, egyszerű felhasználói felület elkészítése kötelező.
- Valamely kamera implementálása, amivel bejárható a megjelenített színtér. A kamera mozgatása egér és billentyűzet segítségével, valamint a grafikus felületről koordináták beírásával is legyen lehetséges.
- Egy irányfényforrás, mely a Naphoz hasonló “pályán” köröz a színtér körül.
- Egy pontfényforrás, melynek a paraméterei a grafikus felületről állíthatóak.
- A fenti két fényforrás hasson a színtérben megjelenített összes elemre!
- Legyen legalább egy sík és egy Suzanne fej geometriának.
A fentiektől való eltérés csak a szorgalmi időszakan megbeszélt előzetes egyeztetés esetén lehetséges.
Newton Fraktál
C++ és OpenGL segítségével kell implementálni az órán látott Mandelbrot fraktálhoz hasonlóan a Newton-fraktált. Érdemes a Shaders projektből kiindulni.
Egyenként egy pontot lehet szerezni a következőkre, összesen legfeljebb 6 pontot:
- Legalább ötödfokú polinom jelenjen meg véletlen gyökökkel.
- Görgővel lehessen a fraktálba nagyítani, egér “drag&drop” mozdulattal pedig navigálni a fraktálban.
Minden gyökhöz rendeljünk egy színt (hue), és egy pixel színét az határozza meg, hogy a Newton-iteráció alkotta sorozat melyik gyökhöz került egy határnál közelebb. A pixel fényességét az konvergencia sebessége határozza meg, tehát például ahol nem konvergál legyen fekete, az egyik gyök közvetlen közelében lévő pixelek legyenek a gyökkel egyszínűek (a kettő között pedig értelemszerű átmenet, ahogy gyakorlaton).- A gyököknek legyen véletlen kezdőpozíciójuk, melyeket az “R”-el újra tudunk generálni.
- Kezdőpozíció mellett legyen kezdősebesség is, azaz a gyökök mozogjanak a [-1,+1]2 négyzeten belül, annak oldalairól visszaverődve.
- A program effektíven működjön nagyobb fokszámú polinomra (pixelenként a kiértékelés műveletigénye legyen arányos a fokszámmal). A gyökök pattanjanak vissza egymásról.
- Uniformok UBO-ban legyenek átadva és persistent-mapping-el frissítve (és minden buffer immutable-bódon legyen létrehozva).
Határidő: Március 19. hétfő.
ShaderToy feladat
A gyakorlaton is látott https://www.shadertoy.com/new oldalra küldjetek be egy programot, ezt a linket küldjétek el nekem! (csabix.balint kukac gmail.com)A következőkre lehet pontot szerezni, maximum 5-öt:
- Valamilyen kétdimenziós, animált program (a gyakorlaton látott metaball-okhoz hasonlóan, de például “pálcikaember” animációt is lehet csinálni)
- A nézetet módosíthatja a felhasználó (ne feledd: az iChannel textúramintavételezőkre a billentyűzetbemenet alapján készült textúrát is rá lehet rakni!)
- Háromdimenziós program (például valamilyen procedurális geometria vagy bonyolultabb felület/formáció raycastingja/raymarching-ja/spheretracing-je)
- Kétdimenziós animáció textúraként képeződjék le a háromdimenziós geometria felületére
- Kamera-animáció, azaz a kamera egy parametrikus görbe által leírt pályán mozogjon, közben végig a fő objektumot nézze
- A többi feladattól eltérően ez egy kompetatív feladat – a legtöbb szívet begyűjtő program +2 pontot kap.
Beküldési határidő: 2018. május 21.
Texture mapping
Négy közvetítő felület, négy textúra koordináta leképezés, egyenként +0.5 pont. Ha megvan az összes objektum +1 pont, ha az összes vetítési irány, akkor +1 pont.