ITMI20090876A1 - Metodo di renderizzazione di un edge di una primitiva grafica - Google Patents

Metodo di renderizzazione di un edge di una primitiva grafica Download PDF

Info

Publication number
ITMI20090876A1
ITMI20090876A1 IT000876A ITMI20090876A ITMI20090876A1 IT MI20090876 A1 ITMI20090876 A1 IT MI20090876A1 IT 000876 A IT000876 A IT 000876A IT MI20090876 A ITMI20090876 A IT MI20090876A IT MI20090876 A1 ITMI20090876 A1 IT MI20090876A1
Authority
IT
Italy
Prior art keywords
module
graphic
coefficient
pixel
edge
Prior art date
Application number
IT000876A
Other languages
English (en)
Inventor
Andrea Castelnuovo
Original Assignee
St Microelectronics Srl
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by St Microelectronics Srl filed Critical St Microelectronics Srl
Priority to ITMI2009A000876A priority Critical patent/IT1394538B1/it
Priority to US12/782,486 priority patent/US8406551B2/en
Publication of ITMI20090876A1 publication Critical patent/ITMI20090876A1/it
Application granted granted Critical
Publication of IT1394538B1 publication Critical patent/IT1394538B1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Description

DESCRIZIONE
SFONDO TECNOLOGICO DELL’INVENZIONE
Campo di applicazione
La presente invenzione si riferisce alle tecniche anti-aliasing per grafica computerizzata ed in particolare ad un metodo di renderizzazione di un edge di una primitiva.
Descrizione dell’arte nota
La grafica computerizzata à ̈ la tecnica di generazioni di immagini su un dispositivo hardware, quale ad esempio un display o schermo, tramite computer. La generazione di oggetti da rappresentare su un dispositivo di visualizzazione à ̈ comunemente chiamata renderizzazione (dall’inglese, rendering).
Nella grafica computerizzata, ciascun oggetto da renderizzare à ̈ costituito da un numero di primitive.
Una primitiva à ̈ una entità geometrica semplice quale, ad esempio, un punto, una linea, un triangolo, un rettangolo, un poligono o una superficie di ordine superiore.
La renderizzazione di una primitiva risulta alquanto critica per quanto riguarda la renderizzazione di ciascun edge (bordo o contorno) della primitiva stessa in cui à ̈ sentita fortemente la necessità di ridurre al minimo un effetto visivo denominato aliasing.
Come noto, l’effetto aliasing consiste nel cosiddetto effetto frastagliato o a tratti di un edge di una primitiva che si verifica tipicamente nella renderizzazione di un edge che risulta inclinato rispetto al bordo verticale o orizzontale dello schermo di visualizzazione. Infatti, uno metodo di renderizzazione (approccio più semplice) consiste nell’assegnare nessun colore ai pixel dello schermo non attraversati da alcun edge ed assegnare lo stesso colore a tutti i pixel dello schermo attraversati dallo stesso edge. Questo approccio non prende in considerazione adeguatamente il fatto che un pixel possa essere parzialmente coperto da un edge (nel caso in cui, ad esempio, il pixel sia attraversato dall’edge della primitiva stessa) ed ha come conseguenza una brusca variazione di colore tra la primitiva (e quindi l’oggetto) da renderizzare sulla scena e lo sfondo della scena stessa proprio a causa della produzione dell’effetto aliasing.
Ulteriori approcci corrispondenti ad altrettanti metodi di renderizzazione, con cosiddette tecniche anti-aliasing, tentano di diminuire (o sfumare) l’effetto aliasing affrontandone il problema.
Metodi noti di renderizzazione con tecnica antialiasing sono, ad esempio, il metodo super-sampling (super-campionamento) o FSAA (dall’acronimo inglese, Full Scene Anti-Aliasing) ed il metodo multi-sampling (multi campionamento) o MSAA (dall’acronimo inglese, Multi-Sampling Anti-Aliasing).
Il metodo FSAA elabora un’immagine ad una più alta risoluzione che viene successivamente scalata alla risoluzione finale dello schermo. Per esempio, il metodo 4X FSAA esegue una suddivisione di un pixel dello schermo in quattro sotto-pixel e successivamente controlla quanti dei quattro sotto-pixel sono coperti da un edge di una primitiva. A seconda del numero di sotto-pixel coperti dall’edge il metodo assegnerà al pixel originario un coefficiente di trasparenza corrispondente alla percentuale di copertura del pixel scelto fra gradazioni distinte di copertura riferita al numero di sotto-pixel appartenenti all’edge della primitiva (25% di copertura, 1 sotto-pixel coperto; 50% di copertura, 2 sotto-pixel coperti; 75% di copertura, 3 sotto-pixel coperti; 100% di copertura, 4 sotto-pixel coperti) ed una gradazione di non copertura (0%, pixel non colorato). In questo modo à ̈ possibile diminuire l’effetto aliasing introducendo un effetto di sfumatura dei pixel cosiddetti di bordo tramite l’impiego di una scala di grigi.
Anche il metodo MSAA, alternativo al metodo FSAA, elabora un’immagine ad una più alta risoluzione che viene successivamente scalata alla risoluzione finale dello schermo con la differenza di impiegare un singolo campione di texture per ciascun sotto-pixel, riducendo la banda richiesta rispetto al metodo FSAA.
I metodi di renderizzazione con tecniche antialiasing sopra-menzionati non sono esenti da difetti.
Infatti, entrambi i metodi FSAA e MSAA richiedono un’elaborazione dell’immagine ripetuta tante volte quanti sono i sotto-pixel di campionamento e ciò comporta uno svantaggio da un punto di vista computazionale. Inoltre, l’elaborazione dell’immagine nel metodo FSAA comporta, per ogni sotto-pixel di campionamento, la lettura da memoria di una texture (immagine), corrispondente ad un coefficiente di trasparenza, e l’applicazione della texture al relativo singolo sotto-pixel causando, di fatto, un’elevata ed al quanto svantaggiosa occupazione di banda.
Lo scopo della presente invenzione à ̈ quello di escogitare e mettere a disposizione un metodo di renderizzazione con tecnica anti-aliasing alternativo a quelli dell’arte nota sopra descritta e che consenta di ovviare almeno parzialmente agli inconvenienti qui sopra lamentati con riferimento alla tecnica nota.
SOMMARIO DELL’INVENZIONE
Tale scopo e tali compiti vengono raggiunti da un metodo di renderizzazione in accordo con la rivendicazione 1.
Forma oggetto della presente invenzione anche un modulo grafico in accordo alla rivendicazione 6.
Forma altresì oggetto della presente invenzione un sistema grafico in accordo alla rivendicazione 7.
BREVE DESCRIZIONE DEI DISEGNI
Ulteriori caratteristiche e vantaggi del metodo di renderizzazione secondo l’invenzione risulteranno dalla descrizione di seguito riportata di esempi preferiti di realizzazione, dati a titolo indicativo e non limitativo, con riferimento alle annesse figure, in cui:
- la figura 1 illustra schematicamente un esempio di sistema grafico atto ad implementare il metodo di renderizzazione secondo un esempio di realizzazione dell’invenzione;
- la figura 2 illustra un modulo grafico impiegabile all’interno del sistema grafico della figura 1 per implementare il metodo di renderizzazione secondo un esempio di realizzazione dell’invenzione;
- la figura 3 illustra schematicamente entità geometriche processabili mediante il metodo di renderizzazione secondo un esempio di realizzazione dell’invenzione;
- la figura 4.1 illustra schematicamente un diagramma a blocchi rappresentativo del metodo di renderizzazione secondo un esempio dell’invenzione; - la figura 4.2 illustra schematicamente un diagramma a blocchi rappresentativo del metodo di renderizzazione secondo un ulteriore esempio dell’invenzione, e
- la figura 5 illustra schematicamente una porzione di uno schermo di visualizzazione su cui à ̈ rappresentata un’entità grafica da renderizzare con il metodo secondo un esempio dell’invenzione.
DESCRIZIONE DETTAGLIATA
La figura 1 mostra un sistema grafico 100 in accordo con un esempio di realizzazione dell’invenzione, includente un modulo grafico di renderizzazione 200 o anche pipeline grafica.
Il sistema grafico 100 della figura 1 à ̈, ad esempio, un apparato di navigazione satellitare di tipo GPS (dall’acronimo inglese, Global Positioning System) o semplicemente conosciuto come navigatore satellitare ma, in accordo con altre forme di realizzazione dell’invenzione, può essere un altro sistema grafico, quale un telefono mobile, un palmare (Personal Digital Assistant), un apparato di codifica/decodifica per televisione digitale (set-top box), un dispositivo multimediale con schermo di tipo VGA (ricevitore digitale terrestre, lettori DVIX oppure lettore MP3), un calcolatore elettronico (per esempio un personal computer), una console di gioco (per esempio, PS3) e così via.
L’apparato di navigazione satellitare 100 comprende un’unità centrale di controllo 10 comprendente a sua volta un’unità centrale di processamento 20 (CPU, Central Processing Unit), ad esempio un microprocessore o un microcontrollore.
L’apparato di navigazione satellitare 100 comprende inoltre un modulo di memoria principale di sistema 30 (MEM), ad esempio un modulo di memoria di tipo RAM DDR-SDRAM o DDRII, operativamente collegato all’unità centrale di controllo 10.
Più in dettaglio, il modulo di memoria principale di sistema 30 risulta operativamente collegato ad un primo modulo di controllo 40 (MEM-C) del modulo di memoria principale di sistema 30 di cui risulta munita l’unità centrale di controllo 10 ed avente funzione di interfaccia tra l’unità centrale di processamento 20 ed il modulo di memoria principale di sistema 30. In particolare, il primo modulo di controllo 40 à ̈ configurato per sincronizzare i differenti protocolli di comunicazione impiegati nel bus dati dell’unità centrale di controllo 10 e nel modulo di memoria principale di sistema 30.
L’apparato di navigazione satellitare 100 comprende inoltre un schermo di visualizzazione o display 50 (DISP) operativamente collegato all’unità centrale di controllo 10.
Lo schermo di visualizzazione o display 50 risulta predisposto per visualizzare immagini quali sono, ad esempio, le mappe o carte stradali per la navigazione satellitare.
Lo schermo di visualizzazione 50 risulta operativamente collegato ad un secondo modulo di controllo 60 (DISP-C) dello schermo di visualizzazione 50 di cui risulta munita l’unità centrale di controllo 10 ed avente funzione di interfaccia tra l’unità centrale di processamento 20 ed lo schermo di visualizzazione 40. In particolare, una funzione del secondo modulo di controllo 60 à ̈ garantire la sincronizzazione tra la frequenza del flusso di dati dall’unità centrale di processamento 10 e la frequenza di aggiornamento (refresh) dello schermo di visualizzazione 50.
Inoltre, il secondo modulo di controllo 60 risulta operativamente collegato al primo modulo di controllo 40 per essere conseguentemente operativamente associato al modulo di memoria principale di sistema 30 al fine di acquisire informazioni da fornire allo schermo di visualizzazione o display 50.
L’apparato di navigazione satellitare 100 comprende inoltre un dispositivo di memoria di massa 70 (MEM-MS) operativamente collegato all’unità centrale di controllo 20 e predisposto per l’immagazzinamento di immagini rappresentative di mappe o cartine stradali da rappresentare, da parte dell’unità di controllo 20, sullo schermo di visualizzazione 50 e di altre informazioni quali, ad esempio, l’applicativo o dati relativi all’ultima navigazione satellitare effettuata dall’apparato 100.
Il dispositivo di memoria di massa 70 risulta operativamente collegato ad un terzo modulo di controllo 80 (DEV-C) del dispositivo di memoria di massa 70 di cui risulta munita l’unità centrale di controllo 10 ed avente funzione di interfaccia tra l’unità centrale di processamento 20 ed il dispositivo di memoria di massa 70.
Il dispositivo di memoria di massa 70 à ̈ un dispositivo predisposto per l’immagazzinamento di dati quale, ad esempio, un CD-ROM, una scheda digitale del tipo SDH o un hard - disk, associabile ad un rispettivo lettore di dati di cui risulta munito l’apparato di navigazione satellitare 100 o collegabile direttamente al terzo modulo di controllo 80.
L’apparato di navigazione satellitare 100 comprende inoltre un modulo di posizionamento 90 (M-POS), di per sé noto, operativamente associato all’unità centrale di controllo 10 per fornire all’unità centrale di processamento 20 dati rappresentativi della posizione dell’apparato di navigazione satellitare 100. Il modulo di posizionamento 90 à ̈, ad esempio, un modulo o ricevitore satellitare di tipo GPS.
L’unità centrale di controllo 10 comprende inoltre un modulo grafico di renderizzazione 200 o semplicemente modulo grafico il quale risulta operativamente collegato e controllato dall’unità centrale di processamento 20.
Il modulo grafico 200 à ̈ configurato per implementare un set di funzioni di tipo grafico per renderizzare una scena grafica (ad esempio una mappa stradale) la cui descrizione à ̈ ricevuta in ingresso dall’unità centrale di processamento 20 tramite il dispositivo di memorizzazione di massa 70, e quindi visualizzata sullo schermo di visualizzazione 50 dell’apparato di navigazione satellitare 100.
Il modulo grafico 200 risulta altresì operativamente collegato al primo modulo di controllo 40 per accedere al modulo di memoria principale di sistema 30 sia in lettura sia in scrittura durante l’implementazione del set di funzioni di tipo grafico per la renderizzazione della scena grafica.
Preferibilmente, il modulo grafico 200 à ̈ un motore grafico configurato per renderizzare immagini sgravando da aggiuntivi carichi di lavoro l’unità centrale di processamento 20. Ai fini della presente invenzione, per motore grafico s’intende un dispositivo in grado di renderizzare in hardware o in software non tramite esecuzione da parte dell’unità centrale di processamento 20 ma tramite esecuzione da parte di un altro co-processore quale, ad esempio, un processore di segnali digitali DSP (dall’acronimo inglese, Digital Signal Processor). La terminologia “acceleratore grafico†o “co-processore grafico†, anch’essi comunemente impiegati nel campo della grafica computerizzata, sono del tutto equivalenti al termine motore grafico.
Alternativamente, il modulo grafico 200 può essere un’unità di processamento grafico GPU (dall’acronimo inglese, Graphic Processing Unit) in cui le funzioni di renderizzazione sono compiute sulla base di istruzioni software eseguite da un processore dedicato quale un DSP e sulla base di istruzioni hardware eseguite da una logica hardware specificatamente progettata. In accordo con una ulteriore forma di realizzazione, alcune o tutte le funzioni di renderizzazione sono compiute dall’unità centrale di processamento 20.
La figura 2 mostra un diagramma a blocchi del modulo grafico 200 o pipeline grafica. In particolare il modulo grafico 200 à ̈ configurato per renderizzare immagini sullo schermo di visualizzazione 50 dell’apparato di navigazione satellitare 100 implementando un metodo di renderizzazione oggetto della presente invenzione un cui esempio verrà descritto nel seguito.
Il modulo grafico 200 comprende un modulo di processamento di geometria 220 (geometry stage), conosciuto anche come modulo Tnl (dall’acronimo inglese, Transform and Lighting stage), un modulo di rasterizzazione 230 (rasterizer module) ed un modulo di processamento di pixel 240 (pixel processing module).
Il modulo di processamento di geometria 220, di per sé noto al tecnico esperto di grafica, à ̈ configurato per ricevere in ingresso informazioni rappresentative della scena da renderizzare fornite da un modulo di applicazione 210, mostrato per chiarezza nella figura 2 ma non facente parte del modulo grafico 200.
Il modulo di applicazione 210, anch’esso di per sé noto al tecnico del settore, risulta compreso nell’apparato di navigazione satellitare 100 ed à ̈ predisposto per ricevere dall’unità centrale di processamento 20 informazioni rappresentative dello stato della navigazione satellitare quali, ad esempio, la posizione dell’apparato di navigazione satellitare 100 e la mappa da visualizzare sullo schermo corrispondente alla posizione e fornire in uscita informazioni rappresentative degli oggetti (ad esempio, linee) della mappa stradale da renderizzare e dei parametri e/o comandi necessari alla loro renderizzazione.
Ritornando al modulo di processamento di geometria 220, esso à ̈ predisposto per eseguire un’operazione di trasformazione geometrica di ciascuna linea della mappa stradale ricevuta dal modulo di applicazione 210 in una pluralità di primitive, ad esempio triangoli. Il modulo di processamento di geometria 220 à ̈ configurato per fornire in uscita dati rappresentativi di ciascun triangolo (ad esempio, le coordinate dei vertici).
Come definito in precedenza, una primitiva à ̈ una semplice entità geometrica quale, ad esempio, un punto, una linea, un triangolo, un quadrato, un poligono o una superficie di ordine superiore. Riferimento à ̈ spesso fatto ai triangoli, che possono essere univocamente definiti dalle coordinate dei vertici, senza l’impiego di altri tipi di primitive.
Con particolare riferimento ora alla figura 3, una linea L di una mappa stradale, come fornita dal modulo di processamento di geometria 220, può essere, ad esempio, una linea curva LC, una linea prospettica LP (di forma tipicamente trapezoidale) o una linea orizzontale LO (tipicamente di forma rettangolare).
Ciascuna delle suddette linee (LC, LP, LO) può essere suddivisa in una pluralità di primitive di tipo triangolo mediante l’operazione di trasformazione geometrica eseguita dal modulo di processamento di geometria 220. Si noti che ciascuna primitiva di tipo triangolo comprende tre lati i quali sono rappresentati nella figura secondo il seguente criterio: un lato di un triangolo che cade all’interno della linea à ̈ rappresentato con una linea tratteggiata, un lato che coincide con il bordo (border edge) o una porzione di bordo della linea à ̈ rappresentato con una linea a tratto continuo. Si fa presente che l’approssimazione di ciascuna linea con la relativa pluralità di triangoli à ̈ tanto migliore quanto à ̈ elevato il numero di triangoli.
Il modulo di rasterizzazione 230 à ̈ configurato per ricevere in ingresso i dati rappresentativi di ciascun triangolo ricevuti dal modulo di processamento di geometria 220 e fornire in uscita, per ciascun edge di un triangolo, gli attributi di ciascun pixel necessari per la renderizzazione del rispettivo edge. Tali attributi comprendono, ad esempio, le coordinate del singolo pixel ed il coefficiente di trasparenza o anti-aliasing da applicare allo stesso pixel. Si fa presente che il coefficiente di anti-aliasing à ̈ determinato per gli edge del triangolo che corrispondono ai bordi della linea (edge a tratto continuo nella figura 3) e non per gli edge del triangolo interni alla linea (edge a tratti nella figura 3).
Pertanto, il modulo di rasterizzazione 230 risulta configurato per eseguire un metodo di renderizzazione di un edge di una primitiva grafica secondo un esempio della presente invenzione che, come già detto in precedenza, sarà descritto nel seguito.
Il modulo di processamento di pixel 240 à ̈ configurato per processare gli attributi di ciascun pixel ricevuti dal modulo di rasterizzazione 230 associando a ciascun pixel un colore definitivo da attribuire allo stesso pixel sullo schermo di visualizzazione 50. In particolare, il modulo di processamento di pixel 240 risulta predisposto per scrivere nel buffer di frame 250 l’informazione rappresentativa del colore di ciascun pixel dello schermo di visualizzazione 50. Si noti che il buffer di frame 250 à ̈ un’area di memoria mostrata per chiarezza nella figura 3 ma non facente parte comunque del modulo grafico 200.
Il buffer di frame 250, non mostrato nella figura 1, à ̈ predisposto per essere letto dal secondo modulo di controllo 60 che andrà a fornire le informazioni immagazzinate del buffer di frame 250 allo schermo di visualizzazione 50 per l’accensione dei pixel al fine di ottenere la visualizzazione definitiva della mappa stradale renderizzata.
Con riferimento alla figura 4.1, viene ora descritto un metodo di renderizzazione 300 di un edge di una primitiva grafica da visualizzare su uno schermo secondo un esempio della presente invenzione. Si ribadisce che il metodo di renderizzazione secondo l’invenzione à ̈ implementato dal modulo grafico 200 ed in particolare modo dal modulo di rasterizzazione 230.
Si fa presente che il metodo di renderizzazione dell’invenzione, essendo rivolto alla riduzione dell’effetto aliasing, à ̈ diretto principalmente alla renderizzazione di un edge inclinato rispetto ad una direzione di riferimento (orizzontale o verticale) dello schermo, ovvero avente una predeterminata inclinazione rispetto alla direzione di riferimento.
In particolare, il metodo di renderizzazione 300 implementa un algoritmo di rasterizzazione per determinare quali pixel dello schermo accendere, ad esempio l’algoritmo di Bresenham, di per sé noto.
L’algoritmo di rasterizzazione di Bresenham, in seguito anche semplicemente algoritmo, può essere descritto con particolare riferimento alla figura 5 in cui à ̈ illustrata una porzione di uno schermo di visualizzazione, indicato per semplicità ancora con il riferimento numerico 50, sul quale à ̈ tracciato un edge E di una primitiva grafica da renderizzare.
L’algoritmo considera il punto di inizio di un edge di una primitiva grafica corrispondente al centro di un pixel di inizio ed il punto di fine dello stesso edge come corrispondente ad un centro di un pixel di fine.
Nell’esempio della figura 5 il punto di inizio dell’edge E à ̈ considerato corrispondente al centro di un pixel di inizio P0 di coordinate x0, y0. Il punto di arrivo dell’edge E à ̈ corrispondente al centro di un pixel di fine PF di coordinate x1 e y1.
L’equazione della retta ideale passante per il punto di inizio (x0, x0) ed il punto di arrivo (X1, Y1) à ̈ la seguente:
y - y0=<(y1 - y0)>â‹… (x- x0) (1) (x1- x0)
in cui la quantità<(y1 - y0)>, come noto, indica la (x1- x0)
pendenza della retta.
La pendenza della retta rappresenta la predeterminata inclinazione dell’edge E dipendente, come noto, dalle coordinate del punto di inizio P1 e del punto di fine PF dell’edge E.
L’algoritmo assume che il pixel di inizio P1 abbia centro di coordinate y0=0 e y0=0. Conseguentemente, nell’esempio di figura 5, il pixel di fine PF ha centro di coordinate x1=8 e y1=2 rispetto all’origine (centro del pixel di inizio P1).
L’algoritmo di Bresenham calcola, per ogni pixel, la distanza, lungo la direzione y, tra l’edge inclinato ed il centro del pixel in processamento. Tale distanza à ̈ rappresentativa di un coefficiente di errore commesso dall’algoritmo nello scegliere di accendere un determinato pixel per renderizzare un edge di una predeterminata inclinazione.
Noto il coefficiente di errore, l’algoritmo à ̈ in grado di incrementare il valore della coordinata x e/o il valore della coordinata y per passare all’accensione di un pixel successivo a quello in processamento al fine di accendere i pixel che meglio seguono la retta ideale corrispondente all’edge da renderizzare.
L’algoritmo di Bresenham considera ciascun pixel come un quadrato di lato pari a 1. Pertanto, ciascun coefficiente di errore calcolato con valore inferiore a 0.5 implica che l’edge passerà presumibilmente anche per il pixel affiancato a quello in processamento ed avrà stessa coordinata y ma coordinata x incrementata rispetto alla precedente. Nel caso in cui l’errore sia superiore o uguale a 0.5, l’edge sarà considerato non passante per il pixel affiancato a quello in processamento ma passante per il pixel avente coordinate x ed y incrementate rispetto alle precedenti.
Nell’esempio della figura 5, l’algoritmo parte dall’ipotesi che il pixel di inizio P0 abbia il centro corrispondente al punto di inizio dell’edge E. Pertanto la distanza tra edge e centro del pixel (coefficiente di errore) à ̈ nulla. L’algoritmo mantiene costante la coordinata y ed incrementa la coordinata x per passare dal pixel di inizio P0 al primo pixel P1.
L’algoritmo calcola la distanza tra l’edge E ed il centro del primo pixel P1 come primo coefficiente di errore. Nell’esempio di figura 5 il primo coefficiente di errore à ̈ pari a 0.25. Essendo questo valore minore di 0.5, l’algoritmo incrementa la coordinata x e mantiene costante la coordinata y per passare al processamento di un secondo pixel P2. L’algoritmo calcola la distanza tra l’edge E ed il centro del secondo pixel P2 come secondo coefficiente di errore. Tale secondo coefficiente di errore risulta pari a 0.5. Essendo pari a 0.5, l’algoritmo incrementa sia la coordinata x sia la coordinata y per passare ad un terzo pixel P3 da processare. L’algoritmo calcola pertanto la distanza tra l’edge E ed il terzo pixel P3 come terzo coefficiente di errore. Il terzo coefficiente di errore à ̈ pari a -0,25. Essendo minore di 0.5, l’algoritmo incrementa la coordinata x e mantiene costante la coordinata y per passare ad un quarto pixel P4 da processare. L’algoritmo pertanto calcola la distanza tra l’edge E ed il centro del quarto pixel P4 come quarto coefficiente di errore che risulta pari a 0, come il coefficiente di errore del pixel di inizio P0.
L’algoritmo prosegue i calcoli e le operazioni di incremento di coordinate fino ad arrivare al pixel di fine PF dell’edge E.
Pertanto, il modulo di rasterizzazione 230 risulta in grado, implementando l’algoritmo di Bresenham, di fornire in uscita informazioni rappresentative delle coordinate dei pixel dello schermo da accendere per renderizzare l’edge E inclinato.
La Richiedente ha osservato che il coefficiente di errore tra l’edge da renderizzare ed il centro del pixel in processamento si incrementa passando da un pixel a quello successivo dello stessa quantità che può essere definito un passo di incremento di coefficiente di errore. Tale passo di incremento di coefficiente risulta costante. Nell’esempio di figura 5, tale passo di incremento di coefficiente di errore à ̈ pari a 0.25.
Pertanto, sulla base della predeterminata inclinazione della retta ideale corrispondente all’edge E, à ̈ possibile calcolare a priori il suddetto passo di incremento di coefficiente di errore per stabilire sia le coordinate dei pixel da accendere sia il coefficiente di errore per ciascuno degli stessi pixel.
In particolare, la Richiedente ha altresì notato che conoscere a priori il coefficiente di errore di ciascun pixel, ovvero la distanza dell’edge dal centro del pixel in processamento, comporta la conoscenza a priori di quanto l’edge à ̈ sovrapposto al pixel stesso e pertanto con quale percentuale di copertura. Tale percentuale di copertura si concretizza nella possibilità di assegnare al pixel in processamento un coefficiente di trasparenza proporzionale alla percentuale di copertura.
Pertanto, la Richiedente ha osservato la possibilità di impiegare il coefficiente di errore, già calcolato dall’algoritmo di Bresenham per stabilire le coordinate dei pixel da accendere, ma anche per implementare un metodo di renderizzazione con tecnica anti-aliasing.
Ritornando ora al metodo di renderizzazione 300 dell’esempio della figura 4.1, esso comprende una prima fase di calcolare 301, sulla base della predeterminata inclinazione dell’edge E, un coefficiente di errore rappresentativo della distanza dell’edge E da un centro di un pixel P1.
Successivamente, il metodo 300 comprende la fase di associare 302 un coefficiente di trasparenza al pixel P1 sulla base del coefficiente di errore calcolato.
In particolare, la fase di associare 302 un coefficiente di trasparenza comprende, secondo un esempio di realizzazione dell’invenzione, una fase di calcolare 303 il coefficiente di trasparenza sulla base del coefficiente di errore impiegando una funzione di shading, di per sé nota, del canale cosiddetto di alpha di ciascun pixel, anch’esso di per sé noto, presente nel modulo grafico 200.
Infatti, impiegando il coefficiente di errore precedentemente calcolato come coefficiente della funzione di shading del canale alpha, Ã ̈ possibile generare per ciascun pixel un coefficiente di trasparenza proporzionale alla copertura del pixel stesso.
Pertanto, la fase di calcolare 303 comprende una fase di impiegare 304 detto coefficiente di errore calcolato come coefficiente di funzione di shading del canale alpha di detto pixel, detto coefficiente di funzione di shading generando detto coefficiente di trasparenza.
In una forma alternativa di realizzazione mostrata schematicamente nella figura 4.2, la fase di associare 302 un coefficiente di trasparenza comprende una fase di selezionare 305 il coefficiente di trasparenza fra una pluralità di coefficienti di trasparenza sulla base del coefficiente di errore calcolato.
Ancora, più in particolare, la fase di selezionare 305 un coefficiente di trasparenza comprende la fase di indicizzare 306, mediante il coefficiente di errore, un’area di memoria (non mostrata nelle figure) accessibile dal modulo grafico 200. Tale area di memoria à ̈ predisposta per immagazzinare un gradiente lineare di valori di coefficienti di trasparenza (alfa) monodimensionale.
Per ciascun pixel in processamento, viene generato, in funzione del coefficiente di errore calcolato, un indice tra 0 ed un valore rappresentativo della lunghezza del gradiente (ad esempio, 8) per condividere il corrispondente coefficiente di trasparenza. Questo indice viene impiegato come indirizzo per accedere, nel gradiente di valori di coefficienti di trasparenza, ad una texture lineare contenente un coefficiente di trasparenza il quale a sua volta sarà associato al pixel in processamento mediante una funzione di sostituzione, di per sé nota.
Tipicamente tale gradiente di coefficienti di trasparenza comprende almeno otto differenti elementi di texture (in inglese, texture element, texel) che rappresentano le differenti gradazioni di grigio da assegnare ai pixel da accendere per renderizzare l’edge E in modo da garantire una renderizzazione il meno possibile affetta dall’effetto aliasing.
Tipicamente un motore grafico per il processamento in hardware di pixel presenta unità di texture che possono essere impiegate per generare i suddetti indirizzi. Per esempio, ciascuna unità di texture può calcolare l’indirizzo di destinazione (tx, ty) partendo dalle coordinate (fx, fy) del pixel in processamento, come riportato nel seguito:
é du du ù
ê dx dyú<ù>
<tx>fx
[ ,<ty>é
] =ê ú⋅ds ds êú<+>[txoffset tyoffset ]
ê úëfyû
êë dx dyúû
Al fine di ottenere la tecnica anti-alisiang proposta, i coefficienti vanno impostati come segue:
é du du ù
ê dx dyúéErr<−>1<ù>
ê ú =ds d ú
ê s ê
úë0 0û
êë dx dyúû
[txoffset tyoffset ] = [GRADIENT _ SIZE/2 0 ]
in cui
GRADIENT_SIZE = dimensione del gradiente dei coefficienti di trasparenza
(<y>1<− y>0 )
Err = con 0.0 ≤ Err ≤ 1.0
(x1−x0 )
L’indice così calcolato à ̈ limitato all’interno dell’intervallo [0; GRADIENT_SIZE-1]. Ciò à ̈ ottenibile semplicemente impostando il modo di indirizzamento a bloccare (in inglese, clamp). Questo approccio suddivide lo spazio di renderizzazione in due semi-piani, uno al di sopra dell’edge (piano A) ed uno al di sotto dell’edge (piano B). Il piano A à ̈ riempito di pixel completamente trasparenti mentre il piano B à ̈ riempito di pixel opachi. I pixel corrispondenti all’edge sono invece riempiti con un coefficiente di trasparenza come sopra specificato. Si noti che la forma di realizzazione appena descritta (figura 4.2) comporta l’impiego di una unità di texture presente nel modulo grafico 200 per immagazzinare la texture del coefficiente di trasparenza.
Nella prima forma di realizzazione (figura 4.1) invece non à ̈ necessario impiegare una unità di texture del modulo grafico 200 in quanto per il calcolo del coefficiente di trasparenza si impiega direttamente la funzione shading del canale alpha del pixel già presente, come detto in precedenza, nel modulo grafico 200.
Con riferimento ancora alla figura 5, si noti che indipendentemente dalla forma di realizzazione impiegata, il metodo di renderizzazione 300 consente di associare al terzo pixel P3 ed ad un settimo pixel P7 un primo coefficiente di trasparenza af1, al pixel di inizio P1, al quarto pixel P4 ed al pixel di fine PF un secondo coefficiente di trasparenza af2, al primo pixel P1 ed al quinto pixel P5 un terzo coefficiente di trasparenza af3, al secondo pixel P2, al sesto pixel P6 ed a tutti gli altri pixel al disotto dell’edge E un quinto coefficiente ci trasparenza af4.
Il primo af1, il secondo af2, il terzo af3 ed il quarto af4 coefficiente di trasparenza appartengono ad una scala di gradazioni di grigio tale da renderizzare l’edge inclinato E in modo tale che risulti il più sfumato possibile e tale da presentare un ridotto effetto aliasing.
Si fa presente che il metodo di renderizzazione 300 à ̈ applicato per la visualizzazione di una linea che, come detto in precedenza, à ̈ scomponibile in un insieme di triangoli. In particolare, il metodo di renderizzazione 300 sarà applicato agli edge che coincidono con il bordo della linea e non ad esempio ad un edge condiviso tra due triangoli che si trova a cadere all’interno della linea da visualizzare agli edge di una primitiva grafica destinati a definire il contorno di un oggetto.
Come si può constatare, lo scopo della presente invenzione à ̈ pienamente raggiunto in quanto il metodo di renderizzazione dell’invenzione consente di implementare una tecnica anti-aliasing sfruttando le informazioni (inclinazione della retta ideale corrispondente ad un edge da renderizzare) generate in precedenza da un algoritmo di rasterizzazione e già necessarie per la renderizzazione di un edge di una primitiva grafica.
Inoltre, oltre a vantaggi da un punta computazionale, il metodo di renderizzazione dell’invenzione consente di ridurre fortemente la banda impiegata in quanto richiede solo un area di memoria alquanto ridotta per immagazzinare il gradiente di coefficienti di trasparenza (alfa) da associare di volta in volte ai pixel in processamento dal modulo grafico.
Infine, considerando che lavora su entità grafiche di tipo edge, il metodo di renderizzazione descritto risulta alquanto versatile e flessibile da poter essere vantaggiosamente implementato in applicazioni grafiche bi-dimensionali (2D) o tridimensionali (3D).
Ancora, considerando il fatto che il metodo secondo l’invenzione sfrutta informazioni già fornite da un algoritmo di rasterizzazione di per sé necessario per generare le coordinate dei pixel da accendere per visualizzare l’edge inclinato, il metodo di renderizzazione descritto consente di ridurre l’effetto aliasing ad un costo, sia da punto di vista software ma anche da quello hardware, alquanto contenuto rispetto ai metodi di renderizzazione noti , ad esempio il metodo MSAA ed il metodo FSAA.
Alle forme di realizzazione del metodo sopra descritte, un tecnico del ramo, per soddisfare esigenze contingenti, potrà apportare modifiche, adattamenti e sostituzioni di elementi con altri funzionalmente equivalenti, senza uscire dall'ambito delle seguenti rivendicazioni. Ognuna delle caratteristiche descritte come appartenente ad una possibile forma di realizzazione può essere realizzata indipendentemente dalle altre forme di realizzazione descritte.

Claims (12)

  1. RIVENDICAZIONI 1. Metodo (300) di renderizzazione di un edge (E) di una primitiva grafica da visualizzare su uno schermo, detto edge avendo una predeterminata inclinazione rispetto ad una direzione di riferimento dello schermo, detto metodo comprendendo fasi di: - calcolare (301), sulla base della predeterminata inclinazione di detto edge (E), un coefficiente di errore rappresentativo della distanza di detto edge (E) da un centro di un pixel (P1) dello schermo (50); - associare (302) un coefficiente di trasparenza a detto pixel (P1) sulla base di detto coefficiente di errore calcolato.
  2. 2. Metodo (300) secondo la rivendicazione 1, in la fase di associare (302) un coefficiente di trasparenza comprende la fase di calcolare (303) detto coefficiente di trasparenza sulla base di detto coefficiente di errore calcolato.
  3. 3. Metodo (300) secondo la rivendicazione 2, in cui la fase di calcolare (303) comprende una fase di impiegare (304) detto coefficiente di errore calcolato come coefficiente di funzione di shading del canale alpha di detto pixel (P1), detto coefficiente di funzione di shading generando detto coefficiente di trasparenza.
  4. 4. Metodo (300) secondo la rivendicazione 1, in cui la fase di associare (302) un coefficiente di trasparenza comprende una fase di selezionare (305) detto coefficiente di trasparenza fra una pluralità di coefficienti di trasparenza, sulla base di detto coefficiente di errore calcolato.
  5. 5. Metodo (300) secondo la rivendicazione 4, in cui la fase di selezionare (305) un coefficiente di trasparenza comprende la fase di indicizzare (306), mediante detto coefficiente di errore calcolato, un’area di memoria predisposta per immagazzinare un gradiente lineare di valori di coefficienti di trasparenza.
  6. 6. Modulo grafico (200) per la renderizzazione di un edge (E) di una primitiva grafica da visualizzare su uno schermo (50), comprendente: - uno modulo di processamento di geometria (220); - un modulo di rasterizzazione (230) operativamente associato a detto modulo di processamento di geometria (220); - un modulo di processamento di pixel (240) operativamente associato a detto modulo di rasterizzazione (230), detto modulo di rasterizzazione essendo configurato per implementare il metodo di renderizzazione secondo le rivendicazioni 1-5.
  7. 7. Sistema grafico (100) comprendente: - un’unità centrale di controllo (10) comprendente un’unità centrale di processamento (20); - un modulo di memoria operativamente associato a detta un’unità centrale di controllo (10); - uno schermo di visualizzazione (50) operativamente collegato all’unità centrale di controllo (10); - un modulo grafico (200) operativamente associato a detta unità centrale di processamento (20), detto modulo grafico (200) essendo in accordo alla rivendicazione 6.
  8. 8. Sistema grafico (100) secondo la rivendicazione 7, comprendente inoltre un dispositivo di memorizzazione di massa (70) operativamente collegato all’unità centrale di controllo (10), detto dispositivo di memorizzazione di massa (70) essendo predisposto per l’immagazzinamento di immagini da rappresentare sullo schermo di visualizzazione (50).
  9. 9. Sistema grafico (100) secondo la rivendicazione 8, comprendente inoltre un modulo di posizionamento (90) operativamente collegato all’unità centrale di controllo (10), detto modulo di posizionamento (90) essendo predisposto per fornire all’unità centrale di controllo (10) informazioni rappresentative della posizione del sistema grafico (100).
  10. 10. Sistema grafico (100) secondo la rivendicazione 7, comprendente inoltre un modulo di applicazione (210) operativamente collegato a detto modulo grafico (200), detto modulo di applicazione (210) essendo configurato per fornire al modulo grafico (200) informazioni rappresentative della scena da renderizzare.
  11. 11. Sistema grafico (100) secondo la rivendicazione 10, comprendente inoltre un buffer di frame (250) operativamente collegato a detto modulo grafico (200), detto buffer di frame (250) essendo predisposto per immagazzinare informazioni rappresentative del colore di ciascun pixel dello schermo di visualizzazione (50).
  12. 12. Sistema grafico (100) secondo la rivendicazione 7, appartenente al gruppo: navigatore satellitare, set-top box, telefono mobile, palmare PDA, ricevitore digitale terrestre, lettore DVIX, lettore MP3, personal computer, console di gioco PS3.
ITMI2009A000876A 2009-05-19 2009-05-19 Metodo di renderizzazione di un edge di una primitiva grafica IT1394538B1 (it)

Priority Applications (2)

Application Number Priority Date Filing Date Title
ITMI2009A000876A IT1394538B1 (it) 2009-05-19 2009-05-19 Metodo di renderizzazione di un edge di una primitiva grafica
US12/782,486 US8406551B2 (en) 2009-05-19 2010-05-18 Rendering method of an edge of a graphics primitive

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
ITMI2009A000876A IT1394538B1 (it) 2009-05-19 2009-05-19 Metodo di renderizzazione di un edge di una primitiva grafica

Publications (2)

Publication Number Publication Date
ITMI20090876A1 true ITMI20090876A1 (it) 2010-11-20
IT1394538B1 IT1394538B1 (it) 2012-07-05

Family

ID=41508843

Family Applications (1)

Application Number Title Priority Date Filing Date
ITMI2009A000876A IT1394538B1 (it) 2009-05-19 2009-05-19 Metodo di renderizzazione di un edge di una primitiva grafica

Country Status (2)

Country Link
US (1) US8406551B2 (it)
IT (1) IT1394538B1 (it)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11212506B2 (en) 2018-07-31 2021-12-28 Intel Corporation Reduced rendering of six-degree of freedom video
US10783698B2 (en) * 2018-07-31 2020-09-22 Intel Corporation Point cloud operations
US10887574B2 (en) 2018-07-31 2021-01-05 Intel Corporation Selective packing of patches for immersive video
US11178373B2 (en) 2018-07-31 2021-11-16 Intel Corporation Adaptive resolution of point cloud and viewpoint prediction for video streaming in computing environments
US10762394B2 (en) 2018-07-31 2020-09-01 Intel Corporation System and method for 3D blob classification and transmission
US10893299B2 (en) 2018-07-31 2021-01-12 Intel Corporation Surface normal vector processing mechanism
US11057631B2 (en) 2018-10-10 2021-07-06 Intel Corporation Point cloud coding standard conformance definition in computing environments
JP7187300B2 (ja) * 2018-12-26 2022-12-12 キヤノン株式会社 画像処理装置、画像処理方法及びプログラム
US20210245047A1 (en) 2020-02-10 2021-08-12 Intel Corporation Continuum architecture for cloud gaming

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487142A (en) * 1993-03-19 1996-01-23 Fujitsu Limited Anti-aliasing line display apparatus
US5815162A (en) * 1996-04-19 1998-09-29 Silicon Graphics, Inc. System and method of drawing anti-aliased lines using a modified bresenham line-drawing algorithm

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287442A (en) * 1991-01-10 1994-02-15 Hewlett-Packard Company Serpentine rendering of antialiased vectors in a computer graphics system
US5333250A (en) * 1992-06-22 1994-07-26 International Business Machines Corporation Method and apparatus for drawing antialiased lines on a raster display
US6947057B2 (en) * 2000-01-11 2005-09-20 Sun Microsystems, Inc. Rendering lines with sample weighting
JP4387611B2 (ja) * 2001-06-07 2009-12-16 富士通マイクロエレクトロニクス株式会社 描画装置及び描画方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487142A (en) * 1993-03-19 1996-01-23 Fujitsu Limited Anti-aliasing line display apparatus
US5815162A (en) * 1996-04-19 1998-09-29 Silicon Graphics, Inc. System and method of drawing anti-aliased lines using a modified bresenham line-drawing algorithm

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
"Anti-Aliased Line Drawing", 2000, XP002565128, Retrieved from the Internet <URL:http://courses.ece.illinois.edu/ece390/archive/archive-f2000/mp/mp4/anti.html> [retrieved on 20100125] *
FOLEY J D ET AL: "COMPUTER GRAPHICS PRINCIPLES AND PRACTICE, PASSAGE", 1 January 1996, ADDISON WESLEY, pages: 132 - 143, XP002565153 *
FOLEY J D ET AL: "COMPUTER GRAPHICS PRINCIPLES AND PRACTICE, PASSAGE", 1 January 1996, ADDISON WESLEY, pages: 72 - 79, XP002565152 *
FOLEY J D ET AL: "COMPUTER GRAPHICS PRINCIPLES AND PRACTICE, PASSAGE", 1 January 1996, ADDISON WESLEY, pages: 834 - 839, XP002565129 *
PITTEWAY M L V ET AL: "BRESENHAM'S ALGORITHM WITH GREY SCALE", COMMUNICATIONS OF THE ASSOCIATION FOR COMPUTING MACHINERY, ACM, NEW YORK, NY, US, vol. 23, no. 11, 1 November 1980 (1980-11-01), pages 625/626, XP000978645, ISSN: 0001-0782 *

Also Published As

Publication number Publication date
US20100296750A1 (en) 2010-11-25
IT1394538B1 (it) 2012-07-05
US8406551B2 (en) 2013-03-26

Similar Documents

Publication Publication Date Title
CN108734624B (zh) 包括多个处理级的图形处理流水线及其操作方法与介质
ITMI20090876A1 (it) Metodo di renderizzazione di un edge di una primitiva grafica
US20230351678A1 (en) Hidden culling in tile-based computer generated images
CN107392988B (zh) 利用投影几何失真用于以可变采样率渲染的系统、方法和计算机程序产品
EP3559914B1 (en) Foveated rendering in tiled architectures
KR102338831B1 (ko) 구성가능한 변환 파라미터들을 갖는 다중 공간 렌더링
TWI592902B (zh) 來自片段著色器程式之樣本遮罩的控制
US9754407B2 (en) System, method, and computer program product for shading using a dynamic object-space grid
US9747718B2 (en) System, method, and computer program product for performing object-space shading
CN107256573B (zh) 基于图块的计算机图形
US8059119B2 (en) Method for detecting border tiles or border pixels of a primitive for tile-based rendering
US10546365B2 (en) Single pass flexible screen/scale rasterization
US7884825B2 (en) Drawing method, image generating device, and electronic information apparatus
US9589386B2 (en) System and method for display of a repeating texture stored in a texture atlas
US8115783B2 (en) Methods of and apparatus for processing computer graphics
US20050068333A1 (en) Image processing apparatus and method of same
TWI434226B (zh) 影像處理技術
JP2010102713A (ja) コンピュータグラフィックスを処理する方法および機器
JP2010165357A (ja) グラフィックスを処理する方法およびそのための装置
US9530241B2 (en) Clipping of graphics primitives
KR102442488B1 (ko) 그래픽 처리 시스템 및 그래픽 프로세서
KR20220148814A (ko) 효율적인 다중 뷰 래스터화를 위한 방법들 및 장치
JP4419480B2 (ja) 画像処理装置およびその方法
JP2006195939A (ja) シャドウ・シルエット・アンチエリアス回路