This shows you the differences between two versions of the page.
|
pgapi:teme:2025:02 [2025/12/13 13:23] maria_anca.balutoiu [Filtru de netezire separabil (blur gaussian)] |
pgapi:teme:2025:02 [2025/12/13 22:17] (current) mihnea.mitrache [Arhitectura generală] |
||
|---|---|---|---|
| Line 9: | Line 9: | ||
| ===== Descriere generală ===== | ===== Descriere generală ===== | ||
| - | Scopul acestei teme va fi implementarea unui efect de blur de profunzime (''Depth of Field / Bokeh Blur'') aplicat unei imagini 2D, în care zona de focus va fi controlabilă interactiv de către utilizator. | + | Scopul acestei teme va fi implementarea unui efect de blur de profunzime (''Depth of Field / Bokeh Blur'') aplicat unei imagini 2D ([[https://www.ea.com/frostbite/news/circular-separable-convolution-depth-of-field|similar cu cel propus de cei de la Electronic Arts]]), în care zona de focus va fi controlabilă interactiv de către utilizator. |
| Puteți studia în următorul videoclip o posibilă implementare a cerințelor. | Puteți studia în următorul videoclip o posibilă implementare a cerințelor. | ||
| Line 60: | Line 60: | ||
| {{ :pgapi:teme:2025:pas_i.png?500 |}} | {{ :pgapi:teme:2025:pas_i.png?500 |}} | ||
| + | În cadrul pasului II veți obține imaginea finală. | ||
| - | {{ :pgapi:teme:2025:pas_ii_.png?500 |}} | + | <note tip>Aveți deja toate elementele necesare calculate la pasul I.</note> |
| + | |||
| + | Trebuie să aplicați filtrul de blur pereche față de cel folosit la pasul I. Spre exemplu se aplică blur vertical în situația în care s-a început cu cel orizontal. | ||
| + | |||
| + | Sursa este imaginea de la pasul anterior, iar intensitatea de blur a fost deja calculată și trebuie doar accesată. | ||
| + | |||
| + | {{ :pgapi:teme:2025:pas_ii.png?500 |}} | ||
| <note tip>Puteți începe cu oricare dintre cele două tipuri de blur. Varianta de mai sus pornește cu filtrul de blur orizontal.</note> | <note tip>Puteți începe cu oricare dintre cele două tipuri de blur. Varianta de mai sus pornește cu filtrul de blur orizontal.</note> | ||
| Line 97: | Line 104: | ||
| ===== Filtru de netezire separabil (blur gaussian) ===== | ===== Filtru de netezire separabil (blur gaussian) ===== | ||
| - | Pentru blur se folosește un filtru gaussian **separabil**: | + | Pentru blur se folosește un filtru gaussian **separabil** ([[https://en.m.wikipedia.org/wiki/Separable_filter|ca aici]]): |
| * mai întâi (în cazul implementării pe GPU, în primul pass), se aplică doar pe orizontală (axa X); | * mai întâi (în cazul implementării pe GPU, în primul pass), se aplică doar pe orizontală (axa X); | ||
| * apoi (în pass-ul al doilea în cazul implementării pe GPU) se aplică doar pe verticală (axa Y). | * apoi (în pass-ul al doilea în cazul implementării pe GPU) se aplică doar pe verticală (axa Y). | ||
| Line 119: | Line 126: | ||
| {{ :pgapi:teme:2024:earth.png?600 |}} | {{ :pgapi:teme:2024:earth.png?600 |}} | ||
| - | Primul pas este efectuarea unei neteziri pe orizontală. Fiecare pixel va fi egal cu media aritmetică a pixelului și a celor 24 de vecini pe aceeași linie cu pixelul. | + | Primul pas este efectuarea unei neteziri pe orizontală. Fiecare pixel va fi egal cu media aritmetică a pixelului și a vecinilor pe aceeași linie cu pixelul. |
| Rezultatul este acesta: | Rezultatul este acesta: | ||
| {{ :pgapi:teme:2024:earth_blur_horz.png?600 |}} | {{ :pgapi:teme:2024:earth_blur_horz.png?600 |}} | ||
| - | Al doilea pas este efectuarea pe acest rezultat a unei neteziri pe verticală. Fiecare pixel va fi egal cu media aritmetică a pixelului și a celor 24 de vecini pe aceeași coloană cu pixelul. | + | Al doilea pas este efectuarea a unei neteziri pe verticală. Fiecare pixel va fi egal cu media aritmetică a pixelului și a vecinilor pe aceeași coloană cu pixelul. |
| Rezultatul este acesta: | Rezultatul este acesta: | ||
| {{ :pgapi:teme:2024:earth_blur_vert.png?600 |}} | {{ :pgapi:teme:2024:earth_blur_vert.png?600 |}} | ||
| - | |||
| - | Această metodă reduce numărul total de eșantionări a texturii pentru fiecare pixel de la 625 la 50. | ||
| - | |||
| ===== Model de bokeh / blur radial ===== | ===== Model de bokeh / blur radial ===== | ||