Grafika MSc Gyakorlat anyagok

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.

FeladatMaximum pont
Newton fraktál6
Shadertoy feladat5
Texture mappings6
Órai munka13
Szorgalmi pontok összesen30
Nagybeadandó feladat+∞
A legtöbb pontot a nagybeadandó ér, a pontok összege alapján történik az osztályzás az alábbi módon.
OsztályzatMinimum pontMaximum pont
Elégtelen (1)039
Elégséges (2)4054
Közepes (3)5569
Jó (4)7084
Jeles (5)85100
Jeles és 100 feletti rész EA vizsgába számít100+∞

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.

Nagybeadandó feladatkiírás