This shows you the differences between two versions of the page.
|
egc:laboratoare:07 [2022/11/22 09:37] andrei.lambru |
egc:laboratoare:07 [2025/11/26 20:51] (current) andrei.voicu2409 [Cerințe laborator] |
||
|---|---|---|---|
| Line 141: | Line 141: | ||
| Atunci când sursa de lumină punctiformă este suficient de îndepărtată de obiectele scenei vizualizate, vectorul $\vec{L}$ este același în orice punct. Sursa de lumină este numită în acest caz direcțională. Aplicând modelul pentru vizualizarea a două suprafețe paralele construite din același material, se va obține o aceeași intensitate (unghiul dintre $\vec{L}$ și normală este același pentru cele două suprafețe). Dacă proiecțiile suprafețelor se suprapun în imagine, atunci ele nu se vor distinge. Această situație apare deoarece în model nu se ține cont de faptul că intensitatea luminii descrește proporțional cu inversul pătratului distanței de la sursa de lumină la obiect. Deci, obiectele mai îndepărtate de sursă sunt mai slab luminate. O posibilă corecție a modelului, care poate fi aplicată pentru surse poziționale (la distanță finită de scenă) este: | Atunci când sursa de lumină punctiformă este suficient de îndepărtată de obiectele scenei vizualizate, vectorul $\vec{L}$ este același în orice punct. Sursa de lumină este numită în acest caz direcțională. Aplicând modelul pentru vizualizarea a două suprafețe paralele construite din același material, se va obține o aceeași intensitate (unghiul dintre $\vec{L}$ și normală este același pentru cele două suprafețe). Dacă proiecțiile suprafețelor se suprapun în imagine, atunci ele nu se vor distinge. Această situație apare deoarece în model nu se ține cont de faptul că intensitatea luminii descrește proporțional cu inversul pătratului distanței de la sursa de lumină la obiect. Deci, obiectele mai îndepărtate de sursă sunt mai slab luminate. O posibilă corecție a modelului, care poate fi aplicată pentru surse poziționale (la distanță finită de scenă) este: | ||
| <code glsl> | <code glsl> | ||
| - | vec3 culoareObiect = emisiva + ambientala + factorAtenuare * ( difuza + speculara ); # GLSL | + | culoareObiect = emisiva + ambientala + factorAtenuare * ( difuza + speculara ); # GLSL |
| </code> | </code> | ||
| Line 220: | Line 220: | ||
| - Completați fragment shader-ul astfel încât să aplicați iluminarea calculată în Vertex Shader | - Completați fragment shader-ul astfel încât să aplicați iluminarea calculată în Vertex Shader | ||
| - Colorați sfera și planul din scenă (de ex: sfera - albastru, planul - gri) | - Colorați sfera și planul din scenă (de ex: sfera - albastru, planul - gri) | ||
| + | |||
| + | <hidden> | ||
| + | ---- | ||
| + | Bonusuri posibile: | ||
| + | - **[Bonus]** Implementarea unui cel-shader simplu, fără contur, care discretizează benzile de culoare pe baza unui parametru transmis în vertex shader printr-o uniformă. Acest parametru poate fi modificat din tastatură, iar efectul este foarte vizibil pe planul utilizat ca suprafață de sol. | ||
| + | </hidden> | ||