This shows you the differences between two versions of the page.
ipg:laboratoare:08 [2025/09/30 12:29] 127.0.0.1 external edit |
ipg:laboratoare:08 [2025/09/30 14:12] (current) andrei.lambru |
||
---|---|---|---|
Line 217: | Line 217: | ||
Un alt exemplu de aplicare a utilizării obitectelor de tip textură pentru a stoca informații generice este utilizarea unei grile 2D pentru a păstra un deplasament în spațiul obiectului. Astfel, la desenarea unui plan, se poate modifica componenta y a coordonatei fiecărui vârf pe baza informației din grila 2D, proiectată pe toată suprafața planului. Un exemplu de imagine ce păstrează o astfel de informație se poate vedea mai jos: | Un alt exemplu de aplicare a utilizării obitectelor de tip textură pentru a stoca informații generice este utilizarea unei grile 2D pentru a păstra un deplasament în spațiul obiectului. Astfel, la desenarea unui plan, se poate modifica componenta y a coordonatei fiecărui vârf pe baza informației din grila 2D, proiectată pe toată suprafața planului. Un exemplu de imagine ce păstrează o astfel de informație se poate vedea mai jos: | ||
- | {{ ppbg:laboratoare:heightmap.png?200 | }} | + | {{ ipg:laboratoare:heightmap.png?200 | }} |
Rezultatul deformării unui plan pe baza imaginii de mai sus este: | Rezultatul deformării unui plan pe baza imaginii de mai sus este: | ||
- | {{ ppbg:laboratoare:terrain.png?600 | }} | + | {{ ipg:laboratoare:terrain.png?600 | }} |
===== Cerințe laborator ===== | ===== Cerințe laborator ===== | ||
Line 232: | Line 232: | ||
* Utilizați directiva ''discard'' pentru a opri programele de tip fragment shader pe baza valorii componentei alpha eșantionate. | * Utilizați directiva ''discard'' pentru a opri programele de tip fragment shader pe baza valorii componentei alpha eșantionate. | ||
* În metoda ''Init()'', specificați coordonatele de textură ale vârfurilor unui patrulater. Aveți în vedere că directiva ''glTexImage2D()'' asociază primele celule din memorie cu linia de jos a grilei 2D, astfel că este necesară inversarea componentei y a coordonatelor de textură. | * În metoda ''Init()'', specificați coordonatele de textură ale vârfurilor unui patrulater. Aveți în vedere că directiva ''glTexImage2D()'' asociază primele celule din memorie cu linia de jos a grilei 2D, astfel că este necesară inversarea componentei y a coordonatelor de textură. | ||
- | * Până în acest punct, rezultatul pe care ar trebui să îl obțineti este următorul: {{ ppbg:laboratoare:textures.png?600 | }} | + | * Până în acest punct, rezultatul pe care ar trebui să îl obțineti este următorul: {{ ipg:laboratoare:textures.png?600 | }} |
- | - 0.05p - Completați metoda ''CreateStrippedTexture()'' pentru a crea conținutul unei grile 2D ce conține o informație de culoare cu trei componente, rgb, în fiecare celulă. Grila 2D trebuie să conțină același triplet (r, g, b) în toate celulele ce se află pe aceeași linie. Altfel spus, toate valorile de culoare de pe o linie sunt identice. Culoarea celulelor unei linii este aleasă aleatoriu. Un exemplu de rezultat posibil este: {{ ppbg:laboratoare:striped.png?300 | }} | + | - 0.05p - Completați metoda ''CreateStrippedTexture()'' pentru a crea conținutul unei grile 2D ce conține o informație de culoare cu trei componente, rgb, în fiecare celulă. Grila 2D trebuie să conțină același triplet (r, g, b) în toate celulele ce se află pe aceeași linie. Altfel spus, toate valorile de culoare de pe o linie sunt identice. Culoarea celulelor unei linii este aleasă aleatoriu. Un exemplu de rezultat posibil este: {{ ipg:laboratoare:striped.png?300 | }} |
- 0.05p - Creați un alt program de tip shader în care să eșantionați informația din două obiecte de tip textură și atribuiți la final o culoare obținută prin combinarea celor două culori eșantionate: | - 0.05p - Creați un alt program de tip shader în care să eșantionați informația din două obiecte de tip textură și atribuiți la final o culoare obținută prin combinarea celor două culori eșantionate: | ||
* Utilizați programul de tip shader pentru desenarea cubului din partea dreaptă. | * Utilizați programul de tip shader pentru desenarea cubului din partea dreaptă. | ||
Line 248: | Line 248: | ||
Bonus: Utilizați imaginile ''lab08/images/snow.png'' și ''lab08/images/water.png'', împreună cu valoarea de înălțime a fiecarui pixel, pentru a obține rezultatul de mai jos. Observați că trecerea de la zona de apă la cea de pământ este graduală. Același lucru este valabil și pentru trecerea de la zona de pământ la cea de zăpadă :) . | Bonus: Utilizați imaginile ''lab08/images/snow.png'' și ''lab08/images/water.png'', împreună cu valoarea de înălțime a fiecarui pixel, pentru a obține rezultatul de mai jos. Observați că trecerea de la zona de apă la cea de pământ este graduală. Același lucru este valabil și pentru trecerea de la zona de pământ la cea de zăpadă :) . | ||
- | {{ ppbg:laboratoare:terrain2.png?600 | }} | + | {{ ipg:laboratoare:terrain2.png?600 | }} |