• Non ci sono risultati.

Tessiture ripetute ripetute ripetute ripetute (tiled textures)•Tipico utilizzo:

N/A
N/A
Protected

Academic year: 2021

Condividi "Tessiture ripetute ripetute ripetute ripetute (tiled textures)•Tipico utilizzo:"

Copied!
4
0
0

Testo completo

(1)

Il texture look-up

Fr am m en ti & & & & va ry in g va ry in g va ry in g va ry in g in te rp ol at i in te rp ol at i in te rp ol at i in te rp ol at i

Ve rti ci & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i

Screen Screen Screen Screen buffer buffer buffer buffer

Ve rti ci po rie tta ti & & & & va ry in g va ry in g va ry in g va ry in g co m pu ta ti co m pu ta ti co m pu ta ti co m pu ta ti

rasterizer triangoli set- up

rasterizer set-

rasterizer punti set- up

co m pu ta zi on i pe r ve rti ce co m pu ta zi on i pe r f ra m m en to

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Fr am m en ti

& lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i Ve rti ci

& & & & co m ta pu m co ti ta pu co m ti ta pu m co ti ta pu ti

rasterizer segmenti set- up

co m pu ta zi on i

Texture RAM co m pu ta zi on i pe r f ra m m en to

interpolo coordinate

texture

coordinate texture interpolate compreso:

coordinate texture

(per vertice!)

texture

look-up

texture

look-up

Texture Look-up:

fuori dai bordi: modo "clamp"

1

v

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

u

if (u<0) u←0; if (u>1) u←1;

if (v<0) v←0; if (v>1) v←1;

1

Texture Look-up:

fuori dai bordi: modo "repeat"

v

1

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

u

1

u ← u – [ u ] v ← v – [ v ]

Tessiture ripetute ripetute ripetute ripetute (tiled textures)

• Tipico utilizzo:

Nota: deve essere un’immagine “TILEABLE”

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Molto efficiente in spazio!

In OpenGL

glTexParameteri(

GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );

nota:

setto per u e v separatemente sono parametri della tessitura. Ogni tessitura caricata in memoria ha i

propri parametri.

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

glTexParameteri(

GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );

o

esempio: repeat sulla uuuu e clamp sulla vvvv

Texture Mapping

Fr am m en ti & at tri bu ti & at tri bu ti & at tri bu ti & at tri bu ti in te rp ol at i in te rp ol at i in te rp ol at i in te rp ol at i

Ve rti ci & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i

Screen Screen Screen Screen buffer buffer buffer buffer

Ve rti ci p or ie tta ti & at tri bu ti & at tri bu ti & at tri bu ti & at tri bu ti co m pu ta ti co m pu ta ti co m pu ta ti co m pu ta ti

rasterizer triangoli set- up

rasterizer set-

rasterizer punti set- up

co m pu ta zi on i pe r ve rti ce co m pu ta zi on i pe r f ra m m en to

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Fr am m en ti

& lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i & lo ro a ttr ib ut i Ve rti ci p or ie tta ti & at tri bu ti & at tri bu ti & at tri bu ti & at tri bu ti co m pu ta ti co m pu ta ti co m pu ta ti co m pu ta ti

rasterizer segmenti set- up

co m pu ta zi on i

Texture RAM co m pu ta zi on i pe r f ra m m en to

interpolo coordinate

texture

coordinate texture interpolate compreso:

coordinate texture

(per vertice!)

texture

look-up

texture

look-up

(2)

Texture Look-up

• Un frammento ha coordinate non intere (in texels)

texture look-up

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Texture Space Screen Space

Texture Look-up

pixel texel

un pixel = meno di un texel

magnification

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

pixel

Texture Space Screen Space

un pixel = più di un texel

minification

5.5 6.5 7.5

Caso Magnification

v Soluzione 1:

prendo il texel in cui casco (cioè il texel il cui centro è più vicino alle coordinate u,v

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

0.5 1.5 2.5 3.5 4.5 5.5 6.5 0.5

1.5 2.5 3.5 4.5

u è più vicino alle coordinate u,v

del frammento) equivale ad arrotondare

le coordinate texel ad interi

"Nearest Filtering"

7.5

Caso Magnification

Nearest Filtering: risutlato visivo

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

texture 128x128

"si vedono i texel !"

5.5 6.5 7.5

Caso Magnification

v Soluzione 2:

Medio il valore dei quattro texel più vicini

Ripasso:

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

0.5 1.5 2.5 3.5 4.5 5.5 6.5 0.5

1.5 2.5 3.5 4.5

u

Interpolazione Bilineare

7.5 Ripasso:

interpolazione lineare (1D) interpolazione bi-lineare (2D)

Formule...

Caso Magnification

Bilinear Interpolation: risutlato visivo

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

texture 128x128

(3)

Caso Magnification

• Modo Nearest:

– si vedono i texel

– va bene se i bordi fra i texel sono utili – più veloce

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

• Modo Interpolazione Bilineare – di solito qualità migliore

– può essere più lento

– rischia di avere un effetto "sfuocato"

Caso Minification

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Nearest Filtering Bilinear interpolation

non risolve il problema

Caso Minification: MIP-mapping

MIP-map level 2

MIP-map level 3

MIP-mapping: "Multum In Parvo"

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

MIP-map

level 0

MIP-map level 1

level 2

MIP-map level 4 (un solo texel)

Mipmap Math

• Definiamo un fattore di scala, ρ =texels/pixel – ρ è il massimo fra ρ x e ρ y

– può variare entro lo stesso triangolo

– può essere derivato dalle matrici di trasformazione – e calcolato nei vertici, interpolato nei frammenti

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

– e calcolato nei vertici, interpolato nei frammenti

• il livello di mipmap da utilizzare è: log 2 ρ

– livello 0 = massima risoluzione – se livello<0 cosa significa?

– nota: il livello non è necess. un numero intero

Caso Minification: MIP-mapping

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

Bilinear interpolation

non risolve il problema

MIP-mapping

Caso Minification: MIP-mapping

3 4 5

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

0 1 2 3

altro

esempio

(4)

In OpenGL

glTexParameteri(

GL_TEXTURE_2D,

GL_TEXTURE_MAG_FILTER, GL_NEAREST);

decidere che tipo di magnificazione usare:

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

GL_NEAREST);

glTexParameteri(

GL_TEXTURE_2D,

GL_TEXTURE_MAG_FILTER, GL_LINEAR );

oppure

In OpenGL

glTexParameteri(

GL_TEXTURE_2D,

GL_TEXTURE_MIN_FILTER, modo );

decidere che tipo di minifacazione usare:

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

modo );

modo = GL_NEAREST GL_LINEAR

GL_NEAREST_MIPMAP_NEAREST GL_LINEAR_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_LINEAR

dove

interpolazione trilineare

In OpenGL

• Caricare sulla scheda i vari livelli di mipmapping.

– uno per uno:

glTexImage2D ( GL_TEXTURE_2D,

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

GL_TEXTURE_2D,

i, // MIP-map level GL_RGB, // formato interno imageWidth, imageHeight, 0, // bordo

GL_RGB, // formato nella RAM GL_UNSIGNED_BYTE,

imageData);

In OpenGL

• Caricare sulla scheda i vari livelli di mipmapping.

– tutti insieme (con la liberira glu):

glTexImage2D ( GL_TEXTURE_2D, gluBuild2DMipmaps (

M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a

GL_TEXTURE_2D,

i, // MIP-map level GL_RGB, // formato interno imageWidth, imageHeight, 0, // bordo

GL_RGB, // formato nella RAM GL_UNSIGNED_BYTE,

imageData);

Riferimenti

Documenti correlati

Si eseguono estrazioni ripetute

- Esercitazioni di corsa veloce; corsa calciata; corsa rapida a ginocchia alte; esecuzioni ripetute; ripetute veloci; ripetute in situazioni di difficoltà; velocità del

È necessaria la documentazione fotografica del campione consegnato con marker quantitativo (si consiglia 1 µl di lambda HindIII [500 ng/ml]). Si consiglia di partire da una

Sostituendo, pertanto, nel diagramma della TAV.4 ogni varietà di bande alla identità che la definisce si ottiene il reticolo di tutte le varietà di bande. Rioorldato che una iden tità

In questo lavoro, viene presentata l’applicazione della tecnica di ricampionamento Replicazioni Bilanciate Ripetute, finalizzata al calcolo degli errori campionari

La ripetizione annuale negli stessi punti delle misure di campo elettrico generato sul territorio del comune di Aosta ha permesso di tenere sotto

Esso si trova proprio nel centro città dove sono presenti le stazioni radio base storiche che erano già state progettate con il massimo della potenza utile e non hanno subito

Date N misure di una data osservabile fisica (x 1 , x 2 , .... x N ) e supposte valide le ipotesi 1 e 2 allora la migliore stima della incertezza media delle misure è data