もっと詳しく

testo, immagini e fonti


← Versione meno recente Versione delle 09:18, 31 ott 2021
Riga 1: Riga 1:
  +
[[File:Raster graphic fish 20x23squares sdtv-example.jpg|alt=Esempio di grafica raster|miniatura|Esempio di grafica raster]]
{{S|computer grafica}}
 
 
La ”’rasterizzazione”’ è il lavoro di conversione di un’immagine bidimensionale descritta da [[Vettore (matematica)|vettori]] (in [[grafica vettoriale]]), in un’immagine [[raster]] o [[bitmap]], ovvero formata da [[pixel]]. Questo lavoro è effettuato sia per ottenere un’immagine proiettabile su dispositivi video, come i monitor, sia per la stampa<ref name=”Worboys1995″>{{cite book|author=Michael F. Worboys|title=GIS: A Computer Science Perspective|url=https://books.google.com/books?id=duT2fcnQeJMC&pg=PA232|date=30 October 1995|publisher=CRC Press|isbn=978-0-7484-0065-2|pages=232–}}</ref>.
   
 
Il problema principale è di doversi spostare da una descrizione lineare (ad esempio un segmento avente estremi p1 e p2) ad una discreta, ovvero i pixel dell’immagine raster. Questo ha comportato la creazione di vari algoritmi di rasterizzazione (o rastering), sia per oggetti semplici come le linee che per più complessi come i poligoni, ad esempio poligoni colorati internamente<ref name=”Chang2007″>{{cite book|author=Kang-Tsung Chang|title=Programming ArcObjects with VBA: A Task-Oriented Approach, Second Edition|url=https://books.google.com/books?id=1DOY9xuxcosC&pg=PA91|date=27 August 2007|publisher=CRC Press|isbn=978-1-4200-0918-7|pages=91–}}</ref>.
La ”’rasterizzazione”’ è il lavoro di conversione di un’immagine bidimensionale descritta da [[Vettore (matematica)|vettori]] (in [[grafica vettoriale]]), in un’immagine [[raster]] o [[bitmap]], ovvero formata da [[pixel]]. Questo lavoro è effettuato sia per ottenere un’immagine proiettabile su dispositivi video, come i monitor, sia per la stampa.
 
   
  +
Tra i vari algoritmi troviamo<ref>{{Cita web|url=https://www.tutorialandexample.com/line-drawing-algorithm/|titolo=Line Drawing Algorithm in Computer Graphics|autore=mayankjtp|sito=Tutorial And Example|data=2020-02-20|lingua=en-US|accesso=2021-10-31}}</ref><ref>{{Cita pubblicazione|cognome=Daroko blog(www.professionalbloggertricks.com)|data=2014-07-27|titolo=bresenham circles and polygons in computer graphics(Computer graphics…|accesso=2021-10-31|url=https://www.slideshare.net/darokoblog/bresenham-circles-and-polygons-in-computer-graphicscomputer-graphics-tutorials}}</ref>:
Il problema principale è di doversi spostare da una descrizione lineare (ad esempio un segmento avente estremi p1 e p2) ad una discreta, ovvero i pixel dell’immagine raster. Questo ha comportato la creazione di vari algoritmi di rasterizzazione (o rastering), sia per oggetti semplici come le linee che per più complessi come i poligoni, ad esempio poligoni colorati internamente.
 
 
Tra i vari algoritmi troviamo:
 
 
*[[Algoritmo di rasterizzazione di linea]]: trasforma una linea o un segmento.
 
*[[Algoritmo di rasterizzazione di linea]]: trasforma una linea o un segmento.
 
*[[Algoritmo di rasterizzazione di poligono]]: trasforma un poligono.
 
*[[Algoritmo di rasterizzazione di poligono]]: trasforma un poligono.
  +
  +
== Descrizione ==
  +
[[File:Rasterized 3D object (stapler) showing voxels made of a single constituent material.jpg|alt=Oggetto 3D rasterizzato|miniatura|Oggetto 3D rasterizzato]]
  +
L’immagine rasterizzata può essere visualizzata su un display di computer, display video o stampante o archiviata in un formato di file bitmap. La rasterizzazione può riferirsi alla tecnica di disegno di modelli 3D o alla conversione di primitive di rendering 2D come poligoni, segmenti di linea in un formato rasterizzato<ref>{{Cita web|url=https://www.scratchapixel.com//lessons/3d-basic-rendering/rasterization-practical-implementation|titolo=Rasterization: a Practical Implementation|autore=Scratchapixel|sito=Scratchapixel|accesso=2021-10-31}}</ref>.
  +
  +
Il termine deriva dal tedesco ”Raster” (“quadro, schema”), dal latino ”rāstrum”, “raschietto, rastrello”<ref>{{Cita web|url=https://www.etymonline.com/?term=raster|titolo=etymonline.com}}</ref><ref>{{Cita web|url=http://www.perseus.tufts.edu/hopper/text?doc=Perseus:text:1999.04.0059:entry=rastrum|titolo=Charlton T. Lewis, Charles Short, A Latin Dictionary, rastrum|sito=www.perseus.tufts.edu|accesso=2021-10-31}}</ref>.
  +
  +
== Rasterizzazione di immagini 3D ==
  +
La rasterizzazione è una delle tecniche tipiche di rendering di modelli 3D. Rispetto ad altre tecniche di rendering come il ray tracing, la rasterizzazione è estremamente veloce e quindi utilizzata nella maggior parte dei motori 3D in tempo reale. Tuttavia, la rasterizzazione è semplicemente il processo di calcolo della mappatura dalla geometria della scena ai pixel e non prescrive un modo particolare per calcolare il colore di quei pixel. Il colore specifico di ogni pixel è assegnato dall’ombreggiatura (che nelle moderne GPU è completamente programmabile). L’ombreggiatura può essere basata su leggi fisiche, loro approssimazioni o intenti puramente artistici<ref>{{Cita web|url=https://cg.ivd.kit.edu/publications/p2012/3dr/gi2012.pdf|titolo=cg.ivd.kit.edu}}</ref>.
  +
  +
=== Rasterizzazione del triangolo ===
  +
Una rappresentazione comune dei modelli 3D digitali è la forma poligonale. Prima della rasterizzazione, i singoli poligoni vengono scomposti in triangoli, quindi un tipico problema da risolvere nella rasterizzazione 3D è la rasterizzazione di un triangolo. Le proprietà che di solito sono richieste dagli algoritmi di rasterizzazione dei triangoli sono la rasterizzazione di due triangoli adiacenti (cioè quelli che condividono un bordo)<ref>{{Cita web|url=https://fgiesen.wordpress.com/2013/02/08/triangle-rasterization-in-practice/|titolo=Triangle rasterization in practice|sito=The ryg blog|data=2013-02-09|lingua=en|accesso=2021-10-31}}</ref><ref>{{Cita web|url=https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/rasterization-stage|titolo=Rasterization: a Practical Implementation (The Rasterization Stage)|sito=www.scratchapixel.com|accesso=2021-10-31}}</ref><ref>{{Cita web|url=https://www.doc.ic.ac.uk/~dfg/graphics/graphics2010/GraphicsSlides08.pdf|titolo=doc.ic.ac.uk}}</ref>:
  +
  +
# non lascia buchi (pixel non rasterizzati) tra i triangoli, in modo che l’area rasterizzata sia completamente riempita (proprio come la superficie dei triangoli adiacenti). e
  +
# nessun pixel viene rasterizzato più di una volta, ovvero i triangoli rasterizzati non si sovrappongono. Questo per garantire che il risultato non dipenda dall’ordine in cui i triangoli sono rasterizzati. Sovrascrivere i pixel può anche significare sprecare potenza di calcolo su pixel che verrebbero sovrascritti.
  +
  +
Questo porta a stabilire regole di rasterizzazione per garantire le condizioni di cui sopra. Un insieme di tali regole è chiamato ”regola top-left”<ref>{{Cita web|url=https://docs.microsoft.com/en-us/windows/win32/direct3d11/d3d10-graphics-programming-guide-rasterizer-stage-rules|titolo=Rasterization Rules – Win32 apps|autore=stevewhims|sito=docs.microsoft.com|lingua=en-us|accesso=2021-10-31}}</ref>, che afferma che un pixel viene rasterizzato se e solo se<ref>{{Cita pubblicazione|data=2021-10-16|titolo=Rasterisation|rivista=Wikipedia|lingua=en|accesso=2021-10-31|url=https://en.wikipedia.org/w/index.php?title=Rasterisation&oldid=1050181898}}</ref>:[[File:Top-left triangle rasterization rule.gif|alt=Regola di rasterizzazione top-left|miniatura|270x270px|Regola di rasterizzazione top-left]]
  +
# il suo centro giace completamente all’interno del triangolo. o
  +
# il suo centro giace esattamente sul bordo del triangolo (o più bordi in caso di angoli) che è (o, in caso di angoli, tutti sono) bordo ”superiore” o ”sinistro”.
  +
  +
Un bordo ”superiore” è un bordo che è esattamente orizzontale e si trova sopra gli altri bordi e un bordo ”sinistro” è un bordo non orizzontale che si trova sul lato sinistro del triangolo.
  +
  +
Questa regola è implementata ad esempio da Direct3D e molte implementazioni [[OpenGL]] (anche se la specifica non la definisce e richiede solo una regola coerente)<ref>{{Cita web|url=https://docs.microsoft.com/en-us/windows/win32/direct3d9/rasterization-rules|titolo=Rasterization Rules (Direct3D 9) – Win32 apps|autore=stevewhims|sito=docs.microsoft.com|lingua=en-us|accesso=2021-10-31}}</ref><ref>{{Cita web|url=https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf|titolo=khronos.org}}</ref>.
  +
  +
== Qualità ==
  +
[[File:Antialiasing comparaison.gif|alt=Esempio di antialiasing|miniatura|Esempio di antialiasing]]
  +
La qualità della rasterizzazione può essere migliorata con l'[[antialiasing]], che crea bordi “uniformi”. La precisione sub-pixel è un metodo che tiene conto delle posizioni su una scala più fine rispetto alla griglia di pixel e può produrre risultati diversi anche se i punti finali di una primitiva cadono nelle stesse coordinate di pixel, producendo animazioni di movimento più fluide. Hardware semplice o meno recente, come PlayStation 1, mancava di precisione sub-pixel nella rasterizzazione 3D<ref>{{Cita web|url=https://www.libretro.com/index.php/mednafenbeetle-psx-pgxp-arrives/|titolo=Mednafen/Beetle PSX – PGXP arrives! – Libretro|autore=Daniel De Matteis|lingua=en-US|accesso=2021-10-31}}</ref>.
  +
  +
== Note ==
  +
  +
<references />
   
 
== Voci correlate ==
 
== Voci correlate ==