Rendering: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Inseritore (discussione | contributi)
fix
(13 versioni intermedie di 7 utenti non mostrate)
Riga 1:
[[File:Sala II sketchup.jpg|thumb|Una resa grafica virtuale della sala II dei [[Musei del Castello Sforzesco]] di [[Milano]], dove viene illustrato l'allestimento eseguito dai [[BBPR]] per il [[riordino dei musei del Castello Sforzesco|riordino degli stessi]].]]
[[File:Glasses 800 edit.png|thumb|Un'immagine renderizzata con [[POV-Ray]]]]
 
Nella [[computer grafica]], il '''''rendering''''' (lett. "{{Lett|restituzione [[grafica]]"}}) identifica il processo di resa, ovvero di generazione di un'[[immagine]] a partire da una descrizione [[matematica]] di una scena tridimensionale, interpretata da [[algoritmo|algoritmi]] che definiscono il colore di ogni punto dell'[[immagine digitale]].
 
In senso esteso (nel [[disegno]]), indica un'operazione atta a produrre una rappresentazione di qualità di un oggetto o di una architettura (progettata o rilevata).
Line 20 ⟶ 21:
Le immagini possono essere analizzate in termini di una serie di fenomeni visibili. Le ricerche e i progressi nel campo del rendering sono state in gran parte motivate dal tentativo di simularli in modo accurato ed efficiente.
 
* '''[[Ombreggiatura|shading]]''' — ombreggiatura; variazione del colore e luminosità di una superficie a seconda della luce [[incidenza (geometria)|incidente]]
* '''[[texture mapping]]''' — un metodo per definire i dettagli del colore di una [[superficie]] mettendola in corrispondenza con un'[[immagine]] (texture)
* '''[[bump mapping]]''' — un metodo per simulare irregolarità nella forma di una superficie mettendola in corrispondenza con un'immagine (bump map) che definisce una perturbazione fittizia della superficie, usata solo per ricavarne una distorsione della direzione [[perpendicolare]] (normale) impiegata nei calcoli per la propagazione della luce.
* '''[[normal mapping]]''' — un metodo simile al bump mapping in cui l'immagine definisce direttamente come perturbare la [[normale alla superficie|normale della superficie]] in quel punto.
* '''[[displacement mapping|displacement-mapping]]''' — estrusione di una superficie secondo le normali tramite un'immagine in scala di grigi, producendo una reale perturbazione della forma della superficie, (per esempio per creare una montagna a partire da una superficie piana).
* '''[[distance fog]]''' — attenuazione e dispersione della luce nel passaggio attraverso l'aria o altri mezzi; solo il vuoto è perfettamente trasparente.
* '''shadows''' — gestione delle [[Ombra|ombre]] proiettate
* '''soft shadows''' — ombre parziali prodotte da sorgenti di luce estese
* '''reflection''' — [[riflessione (fisica)|riflessioni]]''' — riflessioni speculari o quasi
* '''transparency[[trasparenza]]''' — trasmissione della luce attraverso un oggetto
* '''[[rifrazione]]''' — deviazione della luce nel passaggio da un mezzo all'altro
* '''[[Illuminazione globale|illuminazione indiretta]]''' e '''Globalglobal illumination''' — tenere conto della luce riflessa più volte (il minimo è una sola riflessione, sorgente di luce -> oggetto -> camera)
* '''[[causticCaustica (ottica)|caustiche]]he''' — accumulo di luce riflessa o rifratta proiettata in forme caratteristiche su altri oggetti (ad esempio la forma a cardioide della luce riflessa dall'interno di un cilindro o le forme irregolari in movimento sul fondo di una piscina)
* '''[[profondità di campo]]''' o '''DoF''' (Depth of Field) — simulazione della progressiva sfocatura degli oggetti posti a distanza crescente dalla superficie di messa a fuoco (profondità di campo).
* '''[[Mosso (fotografia)|motion blur]]''' — simulazione della sfocatura degli oggetti in movimento rapido come in una ripresa fotografica.
* '''[[Dispersione (fisica)|subsurface scattering]]''' o '''SSS''' — simulazione del comportamento della luce che penetra un oggetto di materiale traslucido come la cera o la pelle umana (dispersione subsuperficiale).
* '''[[ambient occlusion]]''' — simulazione del comportamento della luce in prossimità di volumi occlusi dove i raggi luminosi faticano ad entrare e uscire
* '''[[anisotropia]]''' — simulazione di un materiale che riflette la luce in modo diverso per ogni direzione tangente al punto.
Line 46 ⟶ 47:
Questi approcci possono essere particolarmente intensi dal punto di vista computazionale, perché entrambi creano una struttura abbastanza completa per la gestione delle equazione di rendering.
 
Per le applicazioneapplicazioni in un ''[[sistema real-time]]'', non è pensabile di eseguire una elaborazione completa. In genere si semplifica il problema con una delle seguenti approssimazioni:
* Nessuna illuminazione, solo '''[[texture mapping]]''', poiché il colore intrinseco di un oggetto ha l'influenza maggiore sul suo aspetto.
* Illuminazione diretta: si tiene conto solo della luce che va dalla fonte di illuminazione alla superficie, non di quella riflessa da altre superfici presenti nella scena. Questa luce potrà essere tenuta in considerazione con altri casi speciali attraverso il precalcolo.
 
Alcuni dei principali algoritmi, sono:
 
* [[Algoritmo del pittore]]
* [[Scanline rendering|Algoritmi di tipo scanline]]
Riga 64:
L'attuale stato dell'arte per la costruzione di scene in 3D per la creazione di film è il linguaggio di descrizione delle scene [[RenderMan]] creato dalla [[Pixar Animation Studios|Pixar]]. (da confrontare con formati più semplici per la descrizione di un ambiente 3D come [[VRML]] o [[Application programming interface|API]] come [[DirectX]] o [[OpenGL]] che sfruttano l'accelerazione hardware delle moderne schede grafiche).
 
altriAltri popolari e potenti motori di render:
* [[Mental Ray]]
* [[Vray]]
Riga 71:
* [[POV-Ray]]
* Maxwell Render
* [[Cycles render|Cycles Render]]
* EEVEE Render
 
=== Uso ===
Riga 89:
 
=== Le equazioni alla base del rendering ===
{{Vedivedi anche|Equazione di rendering}}
 
: <math>L_o(x, \vec w) = L_e(x, \vec w) + \int_\Omega f_r(x, \vec w', \vec w) L_i(x, \vec w') (\vec w' \cdot \vec n) d\vec w'</math>
Significato: in una particolare posizione e direzione, la luce uscente (L<sub>o</sub>) è la somma della luce emessa (L<sub>e</sub>) e della luce riflessa. La luce riflessa è ottenuta moltiplicando: L<sub>i</sub> (la luce che arriva da tutte le direzioni), per il coefficiente di riflessione (f<sub>r</sub>), e per l'angolo di arrivo.
Line 96 ⟶ 97:
 
=== La BRDF ===
{{vedi anche|Bidirectional reflectance distribution function}}
 
La [[bidirectional reflectance distribution function|BRDF]] (bidirectional reflectance distribution function) è un modello che esprime l'interazione della luce con una superficie tramite questa semplice espressione:
<math>f_r(x, \vec w', \vec w) = \frac{dL_r(x, \vec w)}{L_i(x, \vec w')(\vec w' \cdot \vec n) d\vec w'}</math>
Line 131 ⟶ 134:
* 1991 '''Hierarchical radiosity''' (Hanrahan, P. Salzman, D. Aupperle, L. (1991). A rapid hierarchical radiosity algorithm. ''Computer Graphics (Proceedings of SIGGRAPH 1991)'' '''25''' (4), 197–206.)
* 1993 '''Tone mapping''' (Tumblin, J. Rushmeier, H.E. (1993). Tone reproduction for realistic computer generated images. ''IEEE Computer Graphics & Applications'' '''13''' (6), 42–48.)
* 1993 '''Subsurface scattering''' (Hanrahan, P. Krueger, W. (1993). Reflection from layered surfaces due to subsurface scattering. ''Computer Graphics (Proceedings of SIGGRAPH 1993)'' '''27''' , 165–174.)
* 1995 '''Photon mapping''' (Jensen, H.J. Christensen, N.J. (1995). Photon maps in bidirectional monte carlo ray tracing of complex objects. ''Computers & Graphics'' '''19''' (2), 215–224.)
 
=== Nel web ===
[[File:Explorer-css-rounded.png|miniaturathumb|Esempio di differenza di rendering dell'effetto CSS3 "border radious" tra [[Internet Explorer]] 8 e gli altri browser<ref name=":0">{{Cita web|url=https://speckyboy.com/getting-to-grips-with-html5-browser-compatibility/|titolo=Getting to Grips with HTML5 Browser Compatibility|sito=Speckyboy Design Magazine|data=2012-03-26|lingua=en|accesso=2021-02-03}}</ref>]]
All'interno di un [[Browser|browser web]] c'è un software che interpreta cosa visualizzare in base alle informazioni che riceve (HTML, CSS, JS...) chiamato [[motore di rendering]]. Ogni browser ha il proprio e molti sono diversi fra loro, ad esempio [[Mozilla Firefox|Firefox]] ha come motore di rendering [[Gecko]] e [[Chrome]] ha [[WebKit|Webkit]]. Per questo non è detto che una pagina web sia visualizzata nello stesso modo da tutti i browser. Questa differenza di visualizzazione delle pagine si è notata molto in diverse occasioni nella storia del web:
 
All'interno di un [[Browser|browser web]] c'è un software che interpreta cosa visualizzare in base alle informazioni che riceve (HTML, CSS, JS...) chiamato [[motore di rendering]]. Ogni browser ha il proprio e molti sono diversi fra loro, ad esempio [[Mozilla Firefox|Firefox]] ha come motore di rendering [[Gecko]] e [[Google Chrome|Chrome]] ha [[WebKit|Webkit]]. Per questo non è detto che una pagina web sia visualizzata nello stesso modo da tutti i browser. Questa differenza di visualizzazione delle pagine si è notata molto in diverse occasioni nella storia del web:
* Agli albori del web quando si usava il tag HTML <nowiki><table> per costruire il layout dei siti web era frequente che i vari motori di rendering interpretassero le caratteristiche delle tabelle in maniera diversa (altezza, larghezza, allineamenti...) influendo sulla corretta visualizzazione delle pagine web.</nowiki>
 
* Alla nascita dei [[CSS]] il motore di rendering [[Trident (motore di rendering)|Trident]] di [[Internet Explorer]] 6 e versioni precedenti interpretava male alcune regole CSS influendo sulla corretta visualizzazione delle pagine web. In parte questo problema veniva risolto da tecniche come CSS alternativi appositamente per Internet Explorer e commenti condizionali su misura per esso<ref name=":1">{{Cita web|url=https://www.sitepoint.com/internet-explorer-conditional-comments/|titolo=Internet Explorer Conditional Comments - SitePoint|sito=www.sitepoint.com|lingua=en|accesso=2021-02-03}}</ref>. Altre critiche a Trident erano la lentezza di rendering delle pagine web rispetto agli altri motori, il mancato supporto della trasparenza nelle immagini [[Portable Network Graphics|PNG]] e [[Graphics Interchange Format|GIF]]<ref>{{Cita web|url=https://www.theverge.com/2014/4/8/5593584/the-most-hated-browser-in-the-world-is-finally-dead|titolo=The most hated browser in the world is finally dead|autore=Kwame Opam|sito=The Verge|data=2014-04-08|lingua=en|accesso=2021-02-03}}</ref><ref>{{Cita web|url=https://davidwalsh.name/6-reasons-why-ie6-must-die|titolo=6 Reasons Why IE6 Must Die|autore=David Walsh|sito=David Walsh Blog|data=2007-08-29|lingua=en|accesso=2021-02-03}}</ref>.
Questa differenza di visualizzazione delle pagine si è notata molto in diverse occasioni nella storia del web:
* Alla nascita di [[HTML5]] e CSS3 il motore di rendering [[WebKit|Webkit]] fu il primo a interpretare in modo corretto molti dei nuovi codici, il secondo ad aggiornarsi da quel punto di vista fu Gecko e per ultimo Trindent. Per alcuni anni i siti web che utilizzavano i nuovi tag CSS e HTML disponibili venivano visti in maniera differente a seconda del browser che utilizzava l'utente<ref name=":0" />. In parte questo problema veniva risolto da tecniche come CSS alternativi appositamente per Internet Explorer, commenti condizionali su misura per esso e librerie [[JavaScript]] come Modernizr<ref>{{Cita web|url=https://www.targetweb.it/css3-su-internet-explorer/|titolo=Css3 su Internet Explorer 8? - da oggi si può|sito=Target Web.it|data=2011-04-08|lingua=it-IT|accesso=2021-02-03}}</ref><ref name=":1" /><ref>{{Cita web|url=https://alistapart.com/it/article/approfittare-di-html5-e-css3-con-modernizr/|titolo=Approfittare di HTML5 e CSS3 con Modernizr|autore=Faruk Ateş|sito=Italian A List Apart|data=2010-07-05|lingua=it-IT|accesso=2021-02-03}}</ref>.
* Agli albori del web quando si usava il tag HTML <nowiki><table></nowiki> per costruire il layout dei siti web era frequente che i vari motori di rendering interpretassero le caratteristiche delle tabelle in maniera diversa (altezza, larghezza, allineamenti...) influendo sulla corretta visualizzazione delle pagine web.</nowiki>
* Alla nascita dei [[CSS]] il motore di rendering [[Trident (motore di rendering)|Trident]] di [[Internet Explorer]] 6 e versioni precedenti interpretava male alcune regole CSS influendo sulla corretta visualizzazione delle pagine web. In parte questo problema veniva risolto da tecniche come CSS alternativi appositamente per Internet Explorer e commenti condizionali su misura per esso<ref name=":1">{{Cita web|url=https://www.sitepoint.com/internet-explorer-conditional-comments/|titolo=Internet Explorer Conditional Comments - SitePoint|sito=www.sitepoint.com|lingua=en|accesso=2021-02-03}}</ref>. Altre critiche a Trident erano la lentezza di rendering delle pagine web rispetto agli altri motori, il mancato supporto della trasparenza nelle immagini [[Portable Network Graphics|PNG]] e [[Graphics Interchange Format|GIF]]<ref>{{Cita web|url=https://www.theverge.com/2014/4/8/5593584/the-most-hated-browser-in-the-world-is-finally-dead|titolo=The most hated browser in the world is finally dead|autore=Kwame Opam|sito=The Verge|data=2014-04-08|lingua=en|accesso=2021-02-03}}</ref><ref>{{Cita web|url=https://davidwalsh.name/6-reasons-why-ie6-must-die|titolo=6 Reasons Why IE6 Must Die|autore=David Walsh|sito=David Walsh Blog|data=2007-08-29|lingua=en|accesso=2021-02-03}}</ref>.
* Alla nascita di [[HTML5]] e CSS3 il motore di rendering [[WebKit|Webkit]] fu il primo a interpretare in modo corretto molti dei nuovi codici, il secondo ad aggiornarsi da quel punto di vista fu Gecko e per ultimo Trindent. Per alcuni anni i siti web che utilizzavano i nuovi tag CSS e HTML disponibili venivano visti in maniera differente a seconda del browser che utilizzava l'utente<ref name=":0" />. In parte questo problema veniva risolto da tecniche come CSS alternativi appositamente per Internet Explorer, commenti condizionali su misura per esso e librerie [[JavaScript]] come Modernizr<ref>{{Cita web|url=https://www.targetweb.it/css3-su-internet-explorer/|titolo=Css3 su Internet Explorer 8? - da oggi si può|sito=Target Web.it|data=2011-04-08|lingua=it-IT|accesso=2021-02-03}}</ref><ref name=":1" /><ref>{{Cita web|url=https://alistapart.com/it/article/approfittare-di-html5-e-css3-con-modernizr/|titolo=Approfittare di HTML5 e CSS3 con Modernizr|autore=Faruk Ateş|sito=Italian A List Apart|data=2010-07-05|lingua=it-IT|accesso=2021-02-03}}</ref>. Successivamente nacque il motore di rendering HTML Edge (e rese obsoleto Internet Explorer a favore di [[Microsoft Edge]]) che sostituì Trident.
 
==== Web 3D ====
{{vedi anche|Web 3D}}
 
Web 3D è un termine usato per indicare i contenuti 3D interattivi inseriti in una pagina [[HTML]], visualizzabili da un comune browser attraverso un particolare Web 3D viewer. Si utilizza il concetto di Web 3D anche per indicare una possibile evoluzione del Web in cui viene abbandonata l'idea di pagina e ci si immerge in uno spazio tridimensionale interattivo. Anche in questo caso i browser utilizzano il proprio motore di rendering per interpretare ricostruzioni 3D (anche interattive).
 
== Libri e compendi ==
Line 155 ⟶ 165:
* Blinn (1996). ''Jim Blinns Corner - A Trip Down The Graphics Pipeline''. Morgan Kaufmann. ISBN 1-55860-387-5.
* {{cita web|http://radsite.lbl.gov/radiance/papers/sg94.1/|Description of the "Radiance" system}}
 
== Note ==
<references/>
 
== Altri progetti ==
{{Interprogetto|preposizione=sul}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC||rendering}}
 
{{Controllo di autorità}}
{{Portale|architettura|design|informatica}}