matf-racunarska-grafika

View on GitHub

Projekat

Projekat neobavezan deo kursa koji nosi ukupno 25 bodova i radi se individualno. Projekat se smatra položenim ako se na odbrani osvoji barem 10 bodova.
Jednom odbranjen projekat važi cele školske godine. Projekat nije uslov za izlazak na ispit, niti je položen ispit uslov za rad na projektu i odbranu.
Preporučljivo je na projektu raditi sedmično prateći sedmične zadatke za projekat.
Samostalnim i redovnim radom na sedmičnim zadacima za projekat, uz čitanje priloženih lekcija iz knjige ograđenih na vežbama te sedmice, najlakše se i uradi projekat i spremi gradivo za ispit i odbranu projekta.

Rokovi za ocenjivanje projekata:

Ispratite ../uputstva za preuzimanje šablona projekta [rg-project-template] u kojem se projekat radi. Projekat se brani u roku u kojem je predat u terminu održavanja ispita.
Odbrana projekta je test sastavljen od pitanja samo iz oblasti koje su u projektu implementirane.
Na odbranu je moguće izaći do dva puta u jednoj godini, a u spojenim rokovima. Ponovni izlazak na odbranu poništava ostvarene bodove na prethodnoj odbrani. Tokom trajanja ispitnog roka se ne održavaju konsultacije i pregledanja projekata.

Završen projekat se prijavljuje preko formulara. Pre predaje obavezno proveriti da li su sve štiklirane stavke završene.

Nesamostalan rad na projektu, plagiranje, kao i direktno preuzimanje delova koda iz drugih studentskih projekata smatra se kršenjem pravila polaganja ispita prema pravilniku fakulteta i povlači automatsko pokretanje disciplinskog postupka i zabranu polaganja ispita Računarske grafike u trenutnoj školskoj godini.

Molimo Vas, detaljno pročitajte i ispratite uputstva u daljem tekstu.
Projekti koji odstupaju od šablona datog u uputstvu neće biti pregledani.
Ukoliko budete imali poteškoća u bilo kom koraku slobodno se javite mejlom.

Sav koda iz repozitorijuma sa primerima sa časa možete slobodno koristiti u projektu bez ikakvih restrikcija i navođenja.

Kako da započnem projekat?

Praviti male, logične promene u kodu i redovno komitovati sa porukama koje sažeto opisuju dodatu promenu. Izbegavati dodavanje velike količine koda od jednom.
Stil pisanja koda koji projekat treba da prati nalazi se u DOCS.md dokumentu kloniranog repozitorijuma.

Šta projekat treba da sadrži?

Osnova (Obavezno)

(10 bodova) Bloom ili Point Shadows

(15 bodova) Deferred shading

U projektu se takođe boduje:

Primeri scena i bodova

Sedmični zadaci za projekat

Projekat se razvija inkrementalno iz nedelje u nedelju, tako da zadaci svake nedelje direktno odgovaraju gradivu koje je obrađeno te nedelje.

01 - Postavljanje projekta

Preuzeti materijale:

Podešavanje okruženja

Projekat:


02 OpenGL prozor i crtanje


03 Šejderi i teksture


04 Transformacije i koordinatni sistemi


05 - Kamera


06 Osnovno osvetljenje i materijali


07 Više izvora svetlosti


08 Napredni OpenGL


09 - Modeli i GUI


10 Frejmbaferi i post-procesiranje


Projekat neće biti pregledan ako:

Kako da koristim Git i Github?

Radi lakešeg praćenja rada, preporučljivo je za svaku lekciju od grane {dev} napraviti odvojenu granu {lesson-name-implementation} i promene postavljati na toj grani kako bi pregledanje, poređenje i testiranje bilo lakše.
Kada je lekcija implementirana, granu sa lekcijom {lesson-name-implemntation} spojiti sa granom {dev}.

Kompletan primer rada na implementaciji osvetljenja:

# Napraviti granu
git checkout -b dev
# ... dodati osnovne, zatim za svaku funkcionalnost projekta napraviti granu
git checkout -b lighting-implementation
# ... implementirati svetlo
git add Lighting.cpp light.glsl
git commit -m 'Implemented basic Point light.'
# ... podesiti svetlo
git add Lighting.cpp light.glsl Main.cpp
git commit -m 'Fine tune Point light.'
# if (implementacija svetla završena) {
    git checkout dev
    git merge lighting-implementation
# } else if (implementacija svetla ima problem) {
    git push -u origin HEAD
    # Pogledati upustvo [Implementation] ispod
# }

[Implementation] Imam problem/poteškoću prilikom implementacije lekcije koju ne mogu da rešim?

Obavezno ispratiti upustvo iznad: [## Kako da efektivno koristim Git i Github?]. Implementacije lekcija držati u odvojenim granama.

Ako ništa od toga ne uspe:

  1. U podešavanjima sa GitHub stranice Vašeg projekta dodati korisničko ime: @spaske00 u Contributors: : Settings -> Collaborators and teams -> Add people type @spaske00. Za role staviti write.
  2. Komitovati promene i postaviti granu na GitHub: git push -u origin {lesson-name-implementation}
  3. Napravite Pull Request sa stranice Vašeg projekta: Pull Requests -> New pull request -> base postaviti {YOUR_REPOSITORY_NAME}:dev, za compare odabrati {YOUR_REPOSITORY_NAME}:{lesson-name-implementation} -> Create pull request
  4. U opisu ostaviti pitanja
  5. Sidebar desno Reviewers -> wheel icon -> add @spaske00.
  6. Poslati mejl sa naslovom: [RG][Implementation] i u sadržaju ostaviti samo link do pull requesta: https://github.com/{YOUR_USER_NAME}/{YOUR_REPOSITORY_NAME}/pulls/{NUMBER}.
To: {asistent} _At__ @math.rs
Subject: [RG][Implementation]
Content:

https://github.com/{YOUR_USER_NAME}/{YOUR_REPOSITORY_NAME}/pulls/{NUMBER}

[Question] Imam opšte pitanje u vezi projekta/lekcije?

Ukoliko imate opšte pitanje u vezi lekcije ili projekta, koje nema prateći kod, prvo barem 1-2 sata probajte sami da pronađete odgovor u materijalima kursa.
Ako ne uspete:

  1. Uključiti opciju Issues: Settings -> Features -> Enable Issues
  2. Na stranici Vašeg repozitorijuma napraviti novi issue: https://github.com:{YOUR_USER_NAME}/{YOUR_REPOSITORY_NAME}/issues
  3. Naslov [Issue] postavite da bude tekst pitanja
  4. U opisu [Issue] opisati koje ste materijale pogledali i eventualno detaljnije pojasnite pitanje.
  5. U opisu problema tagovati korisničko ime: @spaske00.

Jedan [Issue] treba sadržati tačno jedno pitanje, ukoliko imate više pitanja, slobodno napravite više [Issue] tiketa.

Prijava i ocenjivanje projekata

Koraci za prijavu projekta:

  1. U podešavanjima dodati korisničko ime: @spaske00 u Contributors: sa stranice Vašeg projekta: Settings -> Collaborators and teams -> Add people type @spaske00. Za role staviti write.
  2. Postaviti granu na Github: git push -u origin {dev}
  3. Napraviti Pull Request sa stranice projekta: Pull Requests -> New pull request -> base ostaviti {YOUR_REPOSITORY_NAME}:main, za compare odabrati {YOUR_REPOSITORY_NAME}:{dev} -> Create pull request. (Obratiti pažnju da umesto {YOUR_REPOSITORY_NAME} Github ponekad ostavi matf-rg-project-2024, zameniti sa granom main na Vašem repozitorijumu)
  4. Sidebar desno Reviewers -> wheel icon -> add @spaske00.
  5. Prijaviti projekat popunjavanjem [formulara]

Komentari

Ako je kod ispravljen predlogom iz komentara, u odgovoru na komentar ostaviti kratak opis promene.
Ako niste sigurni kako da implementirate predlog, odgovoriti na komentar pitanjem za dodatno pojašnjenje.
Ako predlog nije implementiran, ne razrešavati komentar dok ne bude obrađen radi lakšeg praćenja izmena.

Važno: Konsultacije i pregledanje projekata se ne održavaju tokom trajanja ispitnog roka.

Gde mogu pronaći modele za projekat?

Preporučljivo je koristiti standardne modele za razvoj i istraživanja u računarskoj grafici:

Dodatne modele možete naći sa: