Table of Contents

Tema 1 - Cozy Room

@Cristi

- filmulet @Cristi

În cadrul acestei teme va trebui să realizați o simulare a unui lac de la munte, în care se varsă o cascadă. Simularea se va face pe timp de noapte, în scenă fiind prezente surse de lumină dinamice. Un video demonstrativ ce înfățișează o posibilă implementare îl puteți viziona în filmulețul de mai jos:

Geometrie obiecte incapere

@Robert

Multe capturi de ecran!

Masa

Televizorul

Ecran

Lampa

Artificiile de ecranul televizorului

Ecranul televizorului va afișa constant un show de artificii. Pentru aceasta se va folosi un framebuffer în care se va desena un sistem de particule configurat astfel încât să arate ca niște artificii. Textura de culoare din framebuffer va fi afișată pe ecranul televizorului.

Sistemul de particule va avea următorul comportament:

Sistemul de particule pentru artificiile folosite în demo:

Reflexiile incaperii pe ecran

Din centrul televizorului se va randa întreaga scenă (mai puțin televizorul și ecranul acestuia) într-un cubemap. Obiectele desenate în acest cubemap nu este necesar să casteze și umbre. Totuși, iluminarea lămpii trebuie să fie prezentă.

Pe ecranul televizorului se va folosi acest cubemap pentru a reflecta încăperea (vezi Laboratorul 06)

Pentru ca televizorul să afișeze și show-ul de artificii, dar și reflexiile se va face o interpolare liniară între culorile preluate din cele două texturi (textura în care se randeaza artificiile și cubemap-ul reflexiilor) cu un factor de interpolare constant (ex: 0.25). Exemplu de implementare:

  out_color = mix(texture(color_texture, uv), texture(texture_cubemap, cubemapDir), 0.25);
  

Pentru combinarea celor două texturi vă puteți juca cu formula folosită pentru a obține ce rezultate vreți, dar important este ca pe suprafața ecranului să fie prezente și reflexiile și artificiile.

Iluminare

@Cristi

Notare (250)

@Toti

Bonusuri posibile

@Toti

Indicații suplimentare

Tema va fi implementată în OpenGL și C++. Este indicat să folosiți framework-ul și Visual Studio.

Pentru implementarea temei, în folderul src/lab_m2 puteți crea un nou folder, de exemplu Tema1, cu fișierele Tema1.cpp și Tema1.h (pentru implementare POO, este indicat să aveți și alte fișiere). Pentru a vedea fișierele nou create în Visual Studio în Solution Explorer, apăsați click dreapta pe filtrul lab_m2 și selectați Add→New Filter. După ce creați un nou filtru, de exemplu Tema1, dați click dreapta și selectați Add→Existing Item. Astfel adăugați toate fișierele din folderul nou creat. În fișierul lab_list.h trebuie adăugată și calea către header-ul temei. De exemplu: #include “lab_m2/Tema1/Tema1.h”.

Arhivarea proiectului

  • În mod normal arhiva trebuie să conțină toate resursele necesare compilării și rulării
  • Înainte de a face arhiva asigurați-vă că ați curățat proiectul Visual Studio:
    • click dreapta pe proiect în Solution ExplorerClean Solution
    • și ștergeți folderul /build/.vs (dacă nu il vedeți, este posibil să fie ascuns)
  • SAU ștergeți complet folderul /build
  • În cazul în care arhiva tot depășește limita de 50MB (nu ar trebui), puteți să ștergeți și folderul /deps sau /assets întrucât se pot adăuga la testare. Nu este recomandat să faceți acest lucru întrucât îngreunează mult testarea în cazul în care versiunea curentă a bibliotecilor/resurselor diferă de versiunea utilizată la momentul scrierii temei.