Shading - Normali -...

Post on 16-Feb-2019

237 views 0 download

Transcript of Shading - Normali -...

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- NormaliNormali

�� Dalla Dalla meshmesh al colore di ogni pixel dellal colore di ogni pixel dell’’oggetto oggetto sullo schermo.sullo schermo.

�� Ci servono le normali:Ci servono le normali:��NormaleNormale ad ad unauna facciafaccia

�� Ma Ma sappiamosappiamo cheche spessospesso la mesh la mesh èè solo solo unun’’approsimazioneapprosimazione quindiquindi……....

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- NormaliNormali

�� In questo caso possiamo usare le In questo caso possiamo usare le ““verevere”” normali, per verticenormali, per vertice

�� DiDi solitosolito associate associate aiai verticivertici e e passatepassate allaalla schedascheda graficagraficainsiemeinsieme ad ad essiessi

�� CalcolabiliCalcolabili come media come media delledellenormalinormali allealle faccefacce adiacentiadiacenti ad ad un un verticevertice

�� Per Per oggettioggetti poligonalipoligonali, , èènecessarionecessario ““sdoppiaresdoppiare”” i i verticivertici e e passarepassare due due diverse diverse normalinormali

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- InterpolazioneInterpolazione

��Date le normali ai vertici, come Date le normali ai vertici, come colorare lcolorare l’’interno del poligono ?interno del poligono ?

��Flat shadingFlat shading

��GouraudGouraud interpolationinterpolation

��PhongPhong interpolationinterpolation

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- FlatFlat

��Considera il colore costante sul poligonoConsidera il colore costante sul poligono

��Usa la normale alla facciaUsa la normale alla faccia

��Equivalente al campionamento di un solo Equivalente al campionamento di un solo puntopunto

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- GouraudGouraud

�� Calcola il colore in ogni verticeCalcola il colore in ogni vertice

�� Interpola linearmente i coloriInterpola linearmente i colori

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

DiDi default Open GL:default Open GL:1)1) PrendePrende in input in input varivari attributiattributi perper--

verticevertice ((posizioneposizione, , colorecolore, light , light source, texture coordinates, etc.)source, texture coordinates, etc.)

2)2) CalcolaCalcola un un colorecolore finale per finale per ogniogniverticevertice utilizzandoutilizzando un un certocerto modellomodellodidi illuminazioneilluminazione (OpenGL (OpenGL usausaPhongPhong))

3)3) Per Per ogniogni pixel, pixel, interpolainterpolalinearmentelinearmente i i valorivalori associatiassociati aiai tretreverticivertici per per ottenereottenere ilil colorecolore del del pixel (ad pixel (ad esempioesempio GouraudGouraud shading)shading)

4)4) ScriveScrive ilil colorecolore del pixel del pixel nelnel frame frame bufferbuffer

ShadingShading –– GouraudGouraud (esempio)(esempio)

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- GouraudGouraud

��Problema:Problema:

�� Interpola linearmente i colori ma il Interpola linearmente i colori ma il modello di illuminazione non modello di illuminazione non èè linearelineare

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- PhongPhong

�� Interpola le normali, poi calcola il Interpola le normali, poi calcola il colorecolore

��OK, ma quante normali ?OK, ma quante normali ?

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ShadingShading -- RiepilogoRiepilogo

��FLAT : FLAT : ccff = f (= f (NNff))

��GOURAUD:GOURAUD: ccvivi = f (= f (NNvivi) )

ccv1 v1 ccv2 v2 ccv3v3 vengono interpolati vengono interpolati trilinearmentetrilinearmente sul sul

triangolotriangolo

��PHONG:PHONG: ccpp = f (= f (NNpp) )

NNpp èè il risultato dellil risultato dell’’interpolazione delle interpolazione delle NNvivi . .

LL’’equazione di illuminazione viene valutata equazione di illuminazione viene valutata

per ogni pixelper ogni pixel ((perper--pixelpixel--lightinglighting). ).

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture MappingMapping

�� TextureTexture coordinatescoordinates associate ai vertici del triangolo =>> associate ai vertici del triangolo =>> corrispondenza tra spazio dello corrispondenza tra spazio dello schemoschemo ((fragmentfragment) e ) e texturetexture--spacespace. .

Colore di ogni pixel determinato in base a tale Colore di ogni pixel determinato in base a tale corrispondenza. corrispondenza.

La La texturetexture equivale ad una funzione: T(s,t) = (r, g, b)equivale ad una funzione: T(s,t) = (r, g, b)

a volte si parla di coordinate (u,v) invece che di (s,t). Di sola volte si parla di coordinate (u,v) invece che di (s,t). Di solito le ito le coordinate (u,v) si intendono normalizzate nellcoordinate (u,v) si intendono normalizzate nell’’intervallo (0,1).intervallo (0,1).

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ParametrizzazioneParametrizzazione

��Ad ogni vertice deve essere associata Ad ogni vertice deve essere associata una una ““texturetexture coordinatecoordinate”” in modo da in modo da associare ad ogni triangolo una associare ad ogni triangolo una porzione dellporzione dell’’immagineimmagine

��Esistono vari modi per eseguire questo Esistono vari modi per eseguire questo compito...compito...

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ParametrizzazioneParametrizzazione -- ProiezioneProiezione

�� Possiamo proiettare lo spazio di Possiamo proiettare lo spazio di texturetexturesullsull’’oggetto, dopo averlo oggetto, dopo averlo mappatomappato su una superficie su una superficie (cubo, cilindro, sfera) che circonda l(cubo, cilindro, sfera) che circonda l’’oggetto stesso oggetto stesso ((openglopengl permette di farlo in modo automatico)permette di farlo in modo automatico)

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ParametrizzazioneParametrizzazione -- UnfoldingUnfolding

�� Possiamo tagliare la superficie dellPossiamo tagliare la superficie dell’’oggetto e oggetto e ““stenderlastenderla”” sullo spazio di sullo spazio di texturetexture (opportunamente (opportunamente scalata)scalata)

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

Texture coordinates Texture coordinates -- InterpInterp..

�� A quali punti in A quali punti in texturetexturespace corrispondono i space corrispondono i vertici in world space?vertici in world space?

�� UtilizziamoUtilizziamo unaunainterpolazioneinterpolazione linearelineare::

�� UnaUna rettaretta in world space in world space corrispondecorrisponde ad ad unauna rettarettain texture spacein texture space

Texture map

s

t

Triangolo in world space

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

(x1, y1), (s1, t1)(x2, y2), (s2, t2)

(x3, y3), (s3, t3)

3

13

11

13

11 syy

yys

yy

yysR

−+

−−=

3

23

22

23

21 syy

yys

yy

yysL

−+

−−=

R

LR

LL

LR

L sxx

xxs

xx

xxs

−+

−−= 1

Texture coordinates Texture coordinates -- InterpInterp..

v1 v2

v3

PLPRP

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

Pipeline e Texture MappingPipeline e Texture Mapping

�� QuestoQuesto tipotipo didi interpolazioneinterpolazione in in realtrealtàà avvieneavviene in screen in screen space space durantedurante la la rasterizzazionerasterizzazione del del poligonopoligono

�� La La proiezioneproiezione prospetticaprospettica peròperò fafa sisi cheche distanzedistanze ugualiugualilungolungo unauna linealinea in world space non in world space non corrispondanocorrispondano a a distanzedistanze ugualiuguali lungolungo unauna linealinea in screen spacein screen space

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

Pipeline e Texture MappingPipeline e Texture Mapping

�� EE’’ possibilepossibile applicareapplicare un texture mapping un texture mapping correttocorretto prospetticamenteprospetticamente ((ovviamenteovviamente ad un ad un costocosto))

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

ComportamentoComportamento aiai bordibordi: Repeat: Repeat

(0,0)(0,0)

(1,1)(1,1)

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

(0,0)(0,0)

(1,1)(1,1)

ComportamentoComportamento aiai bordibordi: Clamp: Clamp

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture ModesModes

� REPLACE: Il colore della texture SOSTITUISCE quello del materialeDECAL: Il colore della texture si mescola a mò di adesivo su quellodel materiale (se la texture è trasparente, si vede anche il materiale)

� MODULATE: Il colore della texture modula quello del materiale� BLEND Il colore della texture agisce da fattore di “blending” fra un

colore esterno e quello del materiale

Sa*TaSrgb*(1-Trgb)+Brgb*TrgbBLEND

Sa*TaSrgb*TrgbMODULATE

SaSrgb*(1-Ta)+Trgb*TaDECAL

TaTrgbREPLACE

Result transparencyResult colorMode

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture MappingMapping -- FilteringFiltering

�� Gli elementi della Gli elementi della texturetexture, ovvero i suoi pixel, , ovvero i suoi pixel, vengono indicati con il termine di vengono indicati con il termine di texelstexels

�� In generale non cIn generale non c’è’è una corrispondenza 1 a 1 fra una corrispondenza 1 a 1 fra pixelspixels sullo schermo e sullo schermo e texelstexels::

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture MappingMapping -- MagnificationMagnification

��Nel primo caso (Nel primo caso (MagnificationMagnification) ) èèpossibile applicare un filtraggio di due possibile applicare un filtraggio di due tipitipi

Nearest Linear

Media lineare del quadrato 2x2 dei texel con le coordinate piùvicine al centro del pixel

Colore del texel con le coordinate più vicine al centrodel pixel

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture MappingMapping –– NearestNearest FilteringFiltering

Texture map Poligono lontano dall’osservatore in screenspace

Poligono rasterizzato in screen space

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

TextureTexture MappingMapping -- MinificationMinification

�� Nel secondo caso (Nel secondo caso (MinificationMinification) tali modalit) tali modalitààdi filtraggio non sempre danno risultati di filtraggio non sempre danno risultati soddisfacentisoddisfacenti

�� Se lSe l’’oggetto oggetto èè lontano molti lontano molti texeltexelcorrispondono ad un solo pixel sullo schermocorrispondono ad un solo pixel sullo schermo

�� Usando un filtraggio Usando un filtraggio nearestnearest o o linearlinear vengono vengono utilizzati fra uno e 4 utilizzati fra uno e 4 texelstexels

�� Muovendo lMuovendo l’’oggetto i oggetto i texeltexel interessati interessati cambiano rapidamente e si ha uno cambiano rapidamente e si ha uno sgradevole sfarfallio (sgradevole sfarfallio (flashingflashing))

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

MipmappingMipmapping

��Si utilizzano versioni a varie risoluzioni Si utilizzano versioni a varie risoluzioni della della texturetexture ((prefilteringprefiltering))

��La media dei La media dei texelstexels èè coscosììprecomputataprecomputata correttamentecorrettamente

Spaziorichiesto: al massimo 1.3333 volte lo spaziodella texture originale:

1+0.25+.25*.25+0.25*0.25*0.25+…

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

MipmapMipmap MathMath

�� DefiniamoDefiniamo un un fattorefattore didi scalascala, , ρρ==texelstexels/pixel/pixel

�� ρρ èè ilil massimomassimo frafra ρρxx e e ρρyy

�� PuòPuò essereessere derivatoderivato dalledalle matricimatrici diditrasformazionetrasformazione

�� DefiniamoDefiniamo λλ=log=log2 2 ρρ

�� λλ indicaindica qualequale livellolivello didi mipmapmipmap utilizzareutilizzare

�� LivelloLivello 0 = texture a 0 = texture a massimamassima risoluzionerisoluzione

�� Se Se λλ<0 <0 cosacosa significasignifica??

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

MipmappingMipmapping

��Le modalitLe modalitàà di di filteringfiltering possibili possibili utilizzando livelli di utilizzando livelli di mipmapmipmap sono:sono:

��linearlinear e e nearestnearest tra i vari livelli di tra i vari livelli di mipmapmipmap

��linearlinear e e nearestnearest per il livello di per il livello di mipmapmipmapselezionatoselezionato

��totale di 4 combinazionitotale di 4 combinazioni

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

Filtering ExampleFiltering Example

Level 0

Level 2

Level 1

s=0.12, t=0.1ρ=1.4λ=0.49

NEAREST_MIPMAPNEAREST_MIPMAP_NEAREST:level 0, pixel (0,0)

NEAREST_MIPMAPNEAREST_MIPMAP_LINEAR:level 0CL [combination of pixels

(0,0), (1,0), (1,1), (0,1)]

LINEAR_MIPMAPLINEAR_MIPMAP_NEAREST

{level 0, pixel (0,0)} * 0.51

+ {level 1, pixel (0,0)} * 0.49

LINEAR_MIPMAPLINEAR_MIPMAP_LINEAR:

{level 0, CL} * 0.51

+ {level 1, CL} * 0.49

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

MipmappingMipmapping

��Esempio:Esempio:

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RIEPILOGORIEPILOGO

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RiepilogoRiepilogo

�� MODELLAZIONE MODELLAZIONE –– FASE OFFLINE:FASE OFFLINE:

ProcessoProcesso didi definizionedefinizione delldell’’AmbienteAmbiente VirtualeVirtuale e e deidei suoisuoi componenticomponenti::

-- proprietproprietàà geometrichegeometriche-- proprietproprietàà otticheottiche-- proprietproprietàà fisichefisiche-- proprietproprietàà acusticheacustiche, etc., etc.

DalDal puntopunto didi vista vista visivovisivo, , ilil risultatorisultato del del processoprocesso èè unauna ““shapeshape””, , ovveroovvero unauna forma forma geometricageometrica, , solitamentesolitamente unauna meshmesh poligonalepoligonale definitadefinita dada::

-- unauna listalista didi N N verticivertici {{VV11, V, V22, , ……, V, VNN}} dove:dove:

VVii = [X= [Xii, Y, Yii, , ZZii]]

-- unauna listalista didi M M faccefacce {{FF11, F, F22, , ……, F, FMM}} cheche specificanospecificano la la connettivitconnettivitàà deidei verticivertici::

FFii = [V= [Vi1i1, V, Vi2i2, V, Vi3i3] ] supponendosupponendo faccefacce triangolaritriangolari

-- unauna listalista didi K K materialimateriali {M{M11,M,M22,,……,M,MKK}, }, associatiassociati a a unauna facciafaccia, o a , o a gruppigruppi didifaccefacce ((subsetssubsets):):

MMii = [= [MMi_ambi_amb, , MMi_difi_dif, , MMi_speci_spec]]MMi_xxxi_xxx = [= [RRi_xxxi_xxx,, GGi_xxxi_xxx,, BBi_xxxi_xxx]]

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RiepilogoRiepilogo

�� MODELLAZIONE MODELLAZIONE -- TEXTURING:TEXTURING:

�� Ad Ad ogniogni materialemateriale puòpuò essereessere associataassociata ancheanche unauna texturetexture

�� In In questoquesto casocaso èè necessarionecessario specificarespecificare ancheanche::

�� unauna listalista didi NNTT texture verticestexture vertices {{TVTV11, TV, TV22, , ……, TV, TVNTNT}} dove:dove:

TVTVii = [= [SSii, T, Tii]] --> > texture coordinatestexture coordinates

�� ll’’associazioneassociazione tratra la la listalista didi verticivertici {V} {V} e la e la listalista didi texture vertices texture vertices {TV}{TV}

�� unauna listalista didi MMTT texture facestexture faces {{TFTF11, TF, TF22, , ……, TF, TFMTMT}} dove:dove:

TFTFii = [= [TVTVmm, , TVTVnn, , TVTVll] ] supponendosupponendo faccefacce triangolaritriangolari

�� ll’’associazioneassociazione tratra la la listalista didi verticivertici {V} {V} e la e la listalista didi texture vertices texture vertices {TV}{TV}

�� ll’’associazioneassociazione tratra la la listalista didi faccefacce {F} {F} e la e la listalista didi texture faces texture faces {TF} {TF}

�� SpessoSpesso {F} = {TF}{F} = {TF}

�� unauna listalista didi NNTEX TEX textures textures {{TexTex11, Tex, Tex22, , ……, , TexTexNTNT}} dove dove TexTexii = bitmap= bitmap

�� ll’’associazioneassociazione tratra la la listalista didi materialimateriali {M} {M} e la e la listalista didi textures textures {TEX}{TEX}

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RiepilogoRiepilogo

MeshMeshMesh

MaterialMaterialMaterial

TextureTextureTexture

SubsetSubsetSubsetSubsetSubsetSubset SubsetSubsetSubset

MaterialMaterialMaterial MaterialMaterialMaterial

TextureTextureTexture

{V, F, TV, TF, M, TEX} {V, F, TV, TF, M, TEX}

{S{S11}}⊆⊆{F}{F} {S{S22}}⊆⊆{F}{F} {S{S33}}⊆⊆{F}{F}

MM11 MM22MM33

TT11 TT22

SSii : : FFjj, F, Fj+1j+1, , ……, , FFj+kj+k

[V[Vj1j1, V, Vj2j2, V, Vj3j3] ]

[TV[TVi1i1, TV, TVi2i2, TV, TVi3i3] ]

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RiepilogoRiepilogo

�� RENDERING (FASE REALRENDERING (FASE REAL--TIME)TIME)

�� DiDi ogniogni oggettooggetto delladella scenascena, in , in relazionerelazione allaalla posizioneposizione e e allaalla direzionedirezione didi vista, vista, vengonovengonotrasformatitrasformati i i verticivertici dallodallo spaziospazio 3D (3D (objectobject--space coordinatesspace coordinates) a ) a unouno spaziospazio 2D (2D (window window

coordinatescoordinates).).

�� SuccessivamenteSuccessivamente, , vieneviene determinatodeterminato ((mediantemediante operazionioperazioni didi lightinglighting) o ) o indicatoindicato ((direttamentedirettamente) ) ililcolorecolore deidei pixel pixel corrispondenticorrispondenti aiai verticivertici trasformatitrasformati

�� QuindiQuindi, a , a partirepartire daidai coloricolori didi questiquesti pixel, pixel, vengonovengono ricavatiricavati i i coloricolori ((shadingshading) ) didi tuttitutti i pixel i pixel intermediintermedi

DatiDati necessarinecessari::

-- coordinate coordinate verticivertici oggettooggetto

-- coordinate coordinate puntopunto didi vistavista

DatiDati necessarinecessari::

-- coordinate coordinate verticivertici oggettooggetto

-- normalinormali

-- coordinate coordinate puntopunto didi vistavista

-- coordinate e coordinate e tipotipo didi luciluci

-- colorecolore o o materialimateriali

DatiDati necessarinecessari::

-- coordinate coordinate verticivertici--pixelpixel

-- ((normalinormali))

-- datidati faccefacce

RealtRealtàà Virtuale: il presente, il passato, il futuroVirtuale: il presente, il passato, il futuroShadingShading e e TextureTexture MappingMapping

RiepilogoRiepilogo

�� RENDERING (FASE REALRENDERING (FASE REAL--TIME)TIME)

�� Se Se ll’’oggettooggetto èè associatoassociato ad ad unauna o o pipiùù texturestextures, , esseesse vengonovengono compostecomposte con i con i colori/materialicolori/materialisottostantisottostanti

�� VengonoVengono infineinfine effettuateeffettuate le le operazionioperazioni didi zz--buffering buffering ((risoluzionerisoluzione visibilitvisibilitàà), ), blendingblending

((trasparenzatrasparenza) e opzionalmente ) e opzionalmente altrealtre operazionioperazioni nellonello spaziospazio didi finestrafinestra ((eses. . antialiasingantialiasing etc.)etc.)

DatiDati necessarinecessari::

-- coordinate coordinate verticivertici--pixelpixel

-- texture coordinatestexture coordinates

-- datidati faccefacce

-- coloricolori / / materialimateriali

DatiDati necessarinecessari::

-- coordinate pixelcoordinate pixel

-- alphaalpha

-- coloricolori / / materialimateriali