This shows you the differences between two versions of the page.
pgapi:laboratoare:01 [2025/09/29 18:12] andrei.lambru |
pgapi:laboratoare:01 [2025/09/29 18:20] (current) andrei.lambru |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laboratorul 01 ====== | ====== Laboratorul 01 ====== | ||
+ | <hidden> | ||
===== Framework laborator ===== | ===== Framework laborator ===== | ||
Framework-ul de laborator este cel de la EGC, îmbogățit cu noi funcționalități. Pentru cei care doresc, conținutul laboratoarelor de EGC se poate găsi în [[:pgapi:recapitulare]]. | Framework-ul de laborator este cel de la EGC, îmbogățit cu noi funcționalități. Pentru cei care doresc, conținutul laboratoarelor de EGC se poate găsi în [[:pgapi:recapitulare]]. | ||
Line 6: | Line 7: | ||
Framework-ul de laborator se găsește pe [[https://github.com/UPB-Graphics/gfx-framework | Github]] \\ | Framework-ul de laborator se găsește pe [[https://github.com/UPB-Graphics/gfx-framework | Github]] \\ | ||
Puteți să descărcați direct arhiva accesând [[https://github.com/UPB-Graphics/gfx-framework/archive/refs/heads/master.zip | acest link ]] | Puteți să descărcați direct arhiva accesând [[https://github.com/UPB-Graphics/gfx-framework/archive/refs/heads/master.zip | acest link ]] | ||
+ | </hidden> | ||
===== Obiecte de tip framebuffer și umbre ===== | ===== Obiecte de tip framebuffer și umbre ===== | ||
Line 11: | Line 13: | ||
==== Introducere ==== | ==== Introducere ==== | ||
- | În acest laborator, vom introduce atât elemente noi de OpenGL, cât și o abordare pentru calcularea umbrelor realizate de iluminarea unei surse de lumină de tip spot. Metoda prezentată aici se numeste //metoda mapării umbrelor//, întâlnită în engleză sub numele de //shadow mapping//, ce a fost prezentată în cadrul cursului de EGC din anul III. Va recomandăm să revizualizați secțiunea despre [[:pgapi:recapitulare#introducere1 | texturi]] din pagina de [[:pgapi:recapitulare]]. Această recomandare reapare mai jos în pagină, acolo unde noțiunile de la EGC sunt explicit necesare. | + | În acest laborator, vom introduce atât elemente noi de OpenGL, cât și o abordare pentru calcularea umbrelor realizate de iluminarea unei surse de lumină de tip spot. Metoda prezentată aici se numește //metoda mapării umbrelor//, întâlnită în limba engleză sub numele de //shadow mapping//, ce a fost prezentată în cadrul cursului de EGC din anul III. Vă recomandăm să revizualizați secțiunea despre [[:pgapi:recapitulare#introducere1 | texturi]] din pagina de [[:pgapi:recapitulare]]. Această recomandare reapare mai jos în pagină, acolo unde noțiunile de la EGC sunt explicit necesare. |
Prima parte a laboratorului se concentrează doar pe descrierea obiectelor de tip framebuffer. Partea a doua reia sumar metoda mapării umbrelor și oferă mai multe detalii doar despre pașii tehnicii, ce țin de utilizarea obiectelor de tip framebuffer. | Prima parte a laboratorului se concentrează doar pe descrierea obiectelor de tip framebuffer. Partea a doua reia sumar metoda mapării umbrelor și oferă mai multe detalii doar despre pașii tehnicii, ce țin de utilizarea obiectelor de tip framebuffer. | ||
Line 17: | Line 19: | ||
==== Obiecte de tip framebuffer ==== | ==== Obiecte de tip framebuffer ==== | ||
- | Redarea scenei în fereastra de desenare se realizează, de fapt prin redarea scenei într-o textură specială, ce este afișată ulterior în fereastră. API-ul grafic OpenGL nu permite desenarea direct într-o textură, ci impune utilizarea unui obiect suplimentar, numit buffer de cadru sau framebuffer. Acest obiect conține: | + | Redarea scenei în fereastra de desenare se realizează, de fapt, prin redarea scenei într-o textură specială, ce este afișată ulterior în fereastră. API-ul grafic OpenGL nu permite desenarea direct într-o textură, ci impune utilizarea unui obiect suplimentar, numit buffer de cadru sau framebuffer. Acest obiect conține: |
- | * **Texturile cu format de culoare în care se redă scena**. Pot să fie mai multe texturi pe care se desenează, până la un număr limită dat de procesorul grafic, care este în general 8. În laboratorul 6 o să vedem aplicații pentru care este necesară desenarea în mai multe texturi. Putem să ne gândim la o textură ca la o structură de date în care păstrăm informație oarecare, nu doar culoare. De exemplu: putem păstra poziția în spațiul lume a fragmentului, obținută prin interpolare între vârfuri, sau vectorul normal în spațiul lume al fragmentului, obținut prin același proces de interpolare. | + | * **Texturile cu format de culoare în care se redă scena**. Pot să fie mai multe texturi pe care se desenează, până la un număr limită dat de procesorul grafic, care este în general 8. În laboratorul următor o să vedem aplicații pentru care este necesară desenarea în mai multe texturi. Putem să ne gândim la o textură ca la o structură de date în care păstrăm informație oarecare, nu doar culoare. De exemplu: putem păstra poziția în spațiul lume a fragmentului, obținută prin interpolare între vârfuri, sau vectorul normal în spațiul lume al fragmentului, obținut prin același proces de interpolare. |
- | * **Textura în care se păstrează informația de adâncime** a fragmentelor desenate în texturile cu format de culoare. Această informație este utilizată în pasul de test de adâncime din procesul de rasterizare. | + | * **Textura în care se păstrează informația de adâncime** a fragmentelor desenate în texturile cu format de culoare. Această informație este utilizată în pasul din procesul de rasterizare în care se realizează de testul de adâncime. |
=== Crearea obiectelor de tip framebuffer === | === Crearea obiectelor de tip framebuffer === |