Utente:Davi.trip/Sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Davi.trip (discussione | contributi)
Nessun oggetto della modifica
Davi.trip (discussione | contributi)
Nessun oggetto della modifica
Riga 40:
# Ombreggiatura di ciascun poligono, ''scan line'' per ''scan line'', tramite interpolazione lineare delle intensità ai vertici lungo ciascuno spigolo e in seguito tra gli spigoli lungo ciascuna ''scan line''.<ref name=":8" /> Ciò avviene in fase di rasterizzazione.<ref name=":10" />
 
Per calcolare l'intensità in <math>I_a</math>, <math>I_p</math> e <math>I_b</math>, conoscendo l'ordinata <math>y_s</math> di una ''scan line'' e le intensità ai vertici <math>I_1</math>, <math>I_2</math>, <math>I_3</math>, si possono usare le seguenti formule:<ref name=":8" />[[File:Gouraud-interpolation.png|miniatura|Interpolazione dell'intensità lungo gli spigoli di un poligono e le ''scan line''|alt=]]<math display="block">I_a=I_1-(I_1-I_2)\frac{y_1-y_s}{y_1-y_2}</math>
 
<math display="block">I_b=I_1-(I_1-I_3)\frac{y_1-y_s}{y_1-y_3}</math>
Riga 46:
<math display="block">I_p=I_b-(I_b-I_a)\frac{x_b-x_p}{x_b-x_a}</math>
 
Usando le coordinate baricentriche, se in un triangolo un punto <math>A</math> che giace sullo spigolo i cui vertici sono <math>v_1</math> e <math>v_3</math>, posto a distanza <math>t</math> da <math>v_1</math>, è <math>A=tv_1+(1-t)v_3</math>, allora l'intensità di questo punto è <math>I_A=tS_1+(1-t)S_3</math>, dove <math>S_1</math> e <math>S_3</math> sono le intensità di <math>v_1</math> e <math>v_3</math>.<ref name=":14">{{Cita|Janke|pp. 307-311}}</ref><ref name=":15">{{Cita pubblicazione|autore=|titolo=Polygon Rendering Methods|rivista=|editore=Università di Tel Aviv|volume=|numero=|lingua=en|accesso=22 dicembre 2018|url=https://www.cs.tau.ac.il/~dcor/Graphics/pdf.slides/polygon-shading13.pdf}}</ref> Allo stesso modo, l'intensità di un punto <math>B</math> (sullo spigolo i cui vertici sono <math>v_2</math> e <math>v_3</math>, con distanza <math>d</math> da <math>v_2</math>), è <math>I_B=dS_2+(1-d)S_3</math>.<ref name=":10" /><ref name=":15" /> Le coordinate baricentriche possono servire per interpolare i tre vertici in modo da "ombreggiare" qualsiasi punto interno.<ref name=":14" /> Così, l'intensità <math>I</math> di un punto interno <math>P</math> giacenteche giace sul segmento della ''scan line'' i cui estremi sono i due punti <math>A</math> e <math>B</math> (le cui intensità sono state trovate con l'interpolazione), è <math>I_P=gI_A+(1-g)I_B</math>, dove <math>g</math> è la distanza da <math>A</math> lungo il segmento <math>AB</math>.<ref name=":10" /><ref name=":14" /><ref name=":15" />
 
Invece di ombreggiare tutti i punti di un triangolo pressoché allo stesso modo, il Gouraud shading ombreggia come se la superficie presa in considerazione sia curva.<ref name=":14" /> Gli spigoli condivisi dai triangoli vengono ammorbiditi, ma la sua semplicità causa altri problemi.<ref name=":14" /> Un problema ovvio è che, siccome lo shading dei punti è interpolato, le riflessioni speculari non possono essere accuratamente renderizzate su una faccia.<ref name=":14" /> Solamente i valori ai vertici sono accurati, perciò la riflessione speculare tende ad essere spalmata sulla faccia.<ref name=":14" />
 
=== Phong shading ===