Differences

This shows you the differences between two versions of the page.

Link to this comparison view

egc:laboratoare:07 [2022/11/18 17:47]
andrei.lambru
egc:laboratoare:07 [2025/11/26 20:51] (current)
andrei.voicu2409 [Cerințe laborator]
Line 23: Line 23:
  
 <code glsl> <code glsl>
-     vec3 culoare = emisiva + ambientala + difuza + speculara; # GLSL+     ​culoare = emisiva + ambientala + difuza + speculara; # GLSL
 </​code>​ </​code>​
  
Line 34: Line 34:
 Avem astfel: Avem astfel:
 <code glsl> ​ <code glsl> ​
-     vec3 emisiva = Ke; # GLSL+     ​emisiva = Ke; # GLSL
 </​code>​ </​code>​
 <note tip> <note tip>
Line 53: Line 53:
  
 <code glsl> <code glsl>
-     vec3 ambientala = Ka * culoareAmbientalaGlobala;​ # GLSL+     ​ambientala = Ka * culoareAmbientalaGlobala;​ # GLSL
 </​code>​ </​code>​
  
Line 72: Line 72:
 $difuza = K_d \cdot culoareLumina \cdot max(\vec{N}\cdot \vec{L}, 0)$ $difuza = K_d \cdot culoareLumina \cdot max(\vec{N}\cdot \vec{L}, 0)$
 <code glsl> <code glsl>
-     vec3 difuza = Kd * culoareLumina * max (dot(N,L), 0); # GLSL+     ​difuza = Kd * culoareLumina * max (dot(N,L), 0); # GLSL
 </​code>​ </​code>​
 <note tip> <note tip>
Line 105: Line 105:
 $speculara = K_s \cdot culoareLumina \cdot primesteLumina \cdot (max(\vec{V}\cdot \vec{R}, 0))^n$ $speculara = K_s \cdot culoareLumina \cdot primesteLumina \cdot (max(\vec{V}\cdot \vec{R}, 0))^n$
 <code glsl> <code glsl>
-     vec3 speculara = Ks * culoareLumina * primesteLumina * pow(max(dot(V,​ R), 0), n) # GLSL+     ​speculara = Ks * culoareLumina * primesteLumina * pow(max(dot(V,​ R), 0), n) # GLSL
 </​code>​ </​code>​
  
Line 134: Line 134:
 $speculara = K_s \cdot  culoareLumina \cdot  primesteLumina \cdot  (max(\vec{N}\cdot \vec{H}, 0)^n $ $speculara = K_s \cdot  culoareLumina \cdot  primesteLumina \cdot  (max(\vec{N}\cdot \vec{H}, 0)^n $
 <code glsl> <code glsl>
-     vec3 speculara = Ks * culoareLumina * primesteLumina * pow(max(dot(N,​ H), 0), n) # GLSL+     ​speculara = Ks * culoareLumina * primesteLumina * pow(max(dot(N,​ H), 0), n) # GLSL
 </​code>​ </​code>​
  
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>​
  
egc/laboratoare/07.1668786474.txt.gz · Last modified: 2022/11/18 17:47 by andrei.lambru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0