This shows you the differences between two versions of the page.
|
pgapi:teme:2025:01 [2025/11/15 23:12] andrei.lambru |
pgapi:teme:2025:01 [2025/12/03 13:47] (current) robert.caragicu |
||
|---|---|---|---|
| Line 3: | Line 3: | ||
| * **Responsabili:** Robert Caragicu, Silviu Stăncioiu, Cristian Lambru | * **Responsabili:** Robert Caragicu, Silviu Stăncioiu, Cristian Lambru | ||
| * **Lansare:** 16 noiembrie 2025 | * **Lansare:** 16 noiembrie 2025 | ||
| - | * **Termen de predare:** 7 decembrie 2025, ora 23:55 | + | * **Termen de predare:** 11 decembrie 2025, ora 23:55 |
| * **Regulament:** https://ocw.cs.pub.ro/courses/pgapi/regulament_general | * **Regulament:** https://ocw.cs.pub.ro/courses/pgapi/regulament_general | ||
| * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!** | * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!** | ||
| Line 24: | Line 24: | ||
| În cadrul acestei teme veți folosi mai multe suprafețe de rotație și translație. Se vor folosi Geometry Shaders descrise în [[pgapi:laboratoare:04|]]. Vom modifica generarea din cadrul laboratorului în 3 moduri importante: | În cadrul acestei teme veți folosi mai multe suprafețe de rotație și translație. Se vor folosi Geometry Shaders descrise în [[pgapi:laboratoare:04|]]. Vom modifica generarea din cadrul laboratorului în 3 moduri importante: | ||
| - | - Geometria generată va fi multiplicată pentru a desena într-un singur pas pe toate fețele unui cubemap. Cubemap-ul va fi folosit pentru a desena reflexia mediului înconjurător pe ecranul televizorului (capitolul //Reflexiile incăperii pe ecran//). | + | - Geometria generată va fi multiplicată pentru a desena într-un singur pas pe toate fețele unui cubemap. Cubemap-ul va fi folosit pentru a desena reflexia mediului înconjurător pe ecranul televizorului (capitolul //Reflexiile incăperii pe ecranul televizorului//). |
| - Coordonate UV vor fi calculate fiecărui vârf pentru a permite desenarea de suprafețe texturate. | - Coordonate UV vor fi calculate fiecărui vârf pentru a permite desenarea de suprafețe texturate. | ||
| - Fiecare vârf va avea calculată o normală pentru a permite atât desenarea suprafețelor iluminate de lampă cât și desenarea reflexiilor pe ecranul televizorului. | - Fiecare vârf va avea calculată o normală pentru a permite atât desenarea suprafețelor iluminate de lampă cât și desenarea reflexiilor pe ecranul televizorului. | ||
| Line 89: | Line 89: | ||
| ===== Iluminarea încăperii ===== | ===== Iluminarea încăperii ===== | ||
| - | Încăperea este iluminată de lampa care se află pe masa din partea opusă celei pe care se află televizorul și vazele. Se utilizează o sursă de lumină de tip spot, similară cu cea utilizată în [[pgapi:laboratoare:01|]]. Directia de iluminare trebuie orientata conform geometriei lampii. Suplimentar, intensitatea iluminarii lampii trebuie sa fluctueze conform unui sablon de modificare similar cu cel din filmuletul demonstrativ. | + | Încăperea este iluminată de lampa care se află pe masa din partea opusă celei pe care se află televizorul și vazele. Se utilizează o sursă de lumină de tip spot, similară cu cea utilizată în [[pgapi:laboratoare:01|]]. Direcția de iluminare trebuie orientată conform geometriei lămpii. Suplimentar, intensitatea iluminării lămpii trebuie să fluctueze conform unui șablon de modificare similar cu cel din filmulețul demonstrativ de mai sus. |
| - | Similar cu abordarea utilizata in [[pgapi:laboratoare:01|]], iluminarea trebuie sa produca umbre pe baza obiectelor din incapere. | + | Similar cu abordarea utilizata în [[pgapi:laboratoare:01|]], iluminarea trebuie să producă umbre pe baza obiectelor din încăpere, după cum se poate observa în imaginea de mai jos. |
| + | {{ :pgapi:teme:2025:shadows.png?600 |}} | ||
| - | ===== Artificiile de ecranul televizorului ===== | + | ===== Artificiile pe 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. | 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. | ||
| Line 108: | Line 109: | ||
| {{ :pgapi:teme:2025:fireworks_gif.gif?300 |}} | {{ :pgapi:teme:2025:fireworks_gif.gif?300 |}} | ||
| - | |||
| ===== Reflexiile încăperii pe ecranul televizorului ===== | ===== Reflexiile încăperii pe ecranul televizorului ===== | ||
| - | 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ă. | + | Din centrul televizorului se va randa întreaga scenă (mai puțin televizorul și ecranul acestuia) într-un cubemap. Obiectele desenate în acest cubemap trebuie să fie luminate și să casteze umbre. |
| - | {{ :pgapi:teme:2025:room_cubemap.gif?300 |}} | + | {{ :pgapi:teme:2025:room_cubemap_2.gif?300 |}} |
| Pe ecranul televizorului se va folosi acest cubemap pentru a reflecta încăperea (vezi [[pgapi:laboratoare:06|]]) | Pe ecranul televizorului se va folosi acest cubemap pentru a reflecta încăperea (vezi [[pgapi:laboratoare:06|]]) | ||
| - | {{ :pgapi:teme:2025:tv_reflection.png?300 |}} | + | {{ :pgapi:teme:2025:tv_reflection_2.png?300 |}} |
| 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: | 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: | ||
| <code glsl> | <code glsl> | ||
| - | out_color = mix(texture(color_texture, uv), texture(texture_cubemap, cubemapDir), 0.25); | + | out_color = mix(texture(color_texture, uv), texture(texture_cubemap, cubemapDir), 0.25); |
| </code> | </code> | ||
| | | ||
| 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. | 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. | ||
| + | <note important> | ||
| + | Pentru facilitarea vizualizării efectului de reflexie pe suprafața ecranului de la televizor, acesta din urmă trebuie să poată fi rotit în jurul axei OY, în ambele sensuri, prin apăsarea butoanelor 1 și 2 de la tastatură. Reflexia pe ecran trebuie să fie coerentă cu rotația pe care o are ecranul televizorului. | ||
| + | </note> | ||
| ===== Notare (250) ===== | ===== Notare (250) ===== | ||
| - Desenarea geometriei scenei (100p) | - Desenarea geometriei scenei (100p) | ||