This shows you the differences between two versions of the page.
egc:laboratoare:08 [2022/11/27 15:43] robert.caragicu Adaugat sectiunea "Iluminarea suprafetelor folosind mai multe lumini" |
egc:laboratoare:08 [2023/12/06 12:29] (current) anca.cristea [Iluminare Spot-light] |
||
---|---|---|---|
Line 4: | Line 4: | ||
**Autori**: [[Ph.Dumitru@gmail.com | Philip Dumitru]], [[andrei.lapusteanu@upb.ro | Andrei Lăpușteanu]], [[caragicu_r@outlook.com | Robert Caragicu]] | **Autori**: [[Ph.Dumitru@gmail.com | Philip Dumitru]], [[andrei.lapusteanu@upb.ro | Andrei Lăpușteanu]], [[caragicu_r@outlook.com | Robert Caragicu]] | ||
- | <hidden> | + | |
==== Modelarea reflexiei luminii ==== | ==== Modelarea reflexiei luminii ==== | ||
Line 34: | Line 34: | ||
Totuși, trebuie să menționăm că modelul complet urmărește formula de mai sus, unde constantele de material $K_e, K_a, K_d, K_s$ sunt diferite și au 3 canale $(R,G,B)$, iar intensitatea luminii ambientale și intensitatea sursei de lumină au de asemenea 3 canale. Expresia luminii se evaluează separat pentru cele trei canale. | Totuși, trebuie să menționăm că modelul complet urmărește formula de mai sus, unde constantele de material $K_e, K_a, K_d, K_s$ sunt diferite și au 3 canale $(R,G,B)$, iar intensitatea luminii ambientale și intensitatea sursei de lumină au de asemenea 3 canale. Expresia luminii se evaluează separat pentru cele trei canale. | ||
- | </hidden> | + | |
==== Iluminare Phong in Fragment Shader ==== | ==== Iluminare Phong in Fragment Shader ==== | ||
Line 109: | Line 109: | ||
Astfel, punctul **P** se afla in conul de lumina (primeste lumina) daca conditia urmatoare este indepilita: | Astfel, punctul **P** se afla in conul de lumina (primeste lumina) daca conditia urmatoare este indepilita: | ||
<code glsl> | <code glsl> | ||
- | float cut_off = radians(30); | + | float cut_off = radians(30.0f); |
float spot_light = dot(-L, light_direction); | float spot_light = dot(-L, light_direction); | ||
if (spot_light > cos(cut_off)) | if (spot_light > cos(cut_off)) | ||
Line 121: | Line 121: | ||
<code glsl> | <code glsl> | ||
- | float cut_off = radians(30); | + | float cut_off = radians(30.0f); |
float spot_light = dot(-L, light_direction); | float spot_light = dot(-L, light_direction); | ||
float spot_light_limit = cos(cut_off); | float spot_light_limit = cos(cut_off); | ||
Line 241: | Line 241: | ||
* Directia de ilumiare este transmisa ca ''uniform vec3 light_direction'' | * Directia de ilumiare este transmisa ca ''uniform vec3 light_direction'' | ||
* Nu uitati sa aplicati un model de atenuare al luminii in functie de apropierea fragmentelor de unghiul de cut-off | * Nu uitati sa aplicati un model de atenuare al luminii in functie de apropierea fragmentelor de unghiul de cut-off | ||
+ | - Sa se adauge în scenă o nouă sursă de lumină si sa se calculeze iluminarea | ||
**[Bonus]** | **[Bonus]** | ||
Line 247: | Line 248: | ||
* rotirea spotului: **sus, jos, stanga, dreapta** | * rotirea spotului: **sus, jos, stanga, dreapta** | ||
* 2 taste pentru a creste/micsora unghiul de iluminare al spot-ului | * 2 taste pentru a creste/micsora unghiul de iluminare al spot-ului | ||
- | * Sa se adauga în scenă o nouă sursă de lumină | + | |
<hidden> | <hidden> |