• Non ci sono risultati.

+ = Texture mapping Textures

N/A
N/A
Protected

Academic year: 2021

Condividi "+ = Texture mapping Textures"

Copied!
17
0
0

Testo completo

(1)

Video Game Dev 2015/2016 Univ Insubria

Textures

Marco Tarini

Texture mapping

geometria 3D

(insieme di quadrilateri)

+

RGB texture 2D (qui: color-map)

=

(2)

Esempio (color-map)

+ =

Texture maps!

Uno degli assets + comuni e importanti di un games

Uno dei maggiori consumatori

di GPU RAM

(3)

Texture maps: strutture dati

Sostanzialmente, un’immagine raster

Texture sheet

«Texel»

Tessiture (nei games)

Texture sheet

=

def. di un segnale sulla superficie (la mesh)

scopo simile di quello dei per-vertex attributes!

ma…

# texels >> # vertices segnali più complessi!

Un texel = un campione di quel segnale

fra i campioni: interpolazione (bilineare)

Campionamento del segnale:

su griglia 2D regolare (immagine raster) ad una risoluzione data (NON adattiva!)

Tessiture: campionamenti regolari, e densi (dettaglio a buon mercato!) Attributi: campionamenti irregolari (adattivi), e sparsi

(4)

I segnali tipicam. memorizzati in tessiture (nei games)

ogni texel un base-color (componenti: R-G-B)

la tessitura è una “diffuse-map” / “color-map” / “RGB-map”

ogni texel una fattore di trasparenza (componenti: α) la tessitura è una “alpha-map” o “cutout-texture”

ogni texel una normale (componenti: X-Y-Z)

la tessitura è una “normal-map” o “bump-map” (more later)

ogni texel contiene un valore di specularità

la tessitura è una “specular-map”

ogni texel contiene un valore di glossiness

la tessitura è una “glossiness-map”

ogni texel contiene un valore di lighting baked...

la tessitura è una (baked) “light-map”

ogni texel contiene un valore di dist. dalla superficie

la tessitura è una “displacemnt map” o “height texture”

MIP map levels

Pre-filtering delle tessiture

“LOD pyramid, per immagini”!

Hardware sceglie livello giusto (per pixel) Evitare artefatti di sottocampionamento

1024x1024

512x512

256x256

1x1

(5)

Texture maps come assets

Caratteristiche:

Size:

risoluzione

canali (es: alpha?) MIP-map

(presenti o no?) Compressione?

e.g. “color-map”, quantizzazione o schemi di compressione specifici

Vincoli ricorrenti:

potenze di 2 per lato

(richiesto da sempre meno engines) sia in U che in V

(es: 256x256 o 1024x512)

res < max

(es: max = 4096 o 2048)

La maggior parte della ricchezza visuale percepita nel tipico videogames è dovuta alle tessiture!

Textures res

più impattanti (quality wise) di Meshes res!

(6)

GPU rendering of a Mesh in a nutshell

(reminder)

Load…

store all data on GPU RAM Geometry + Attributes

Connectivity Textures Shaders

Parameters / Settings

…and Fire!

send the command: “do it” !

THE MESH

THE “MATERIAL”

Texture Sheet on GPU

LOAD

Life of a Texure in a Game Engine

DISK CENTRAL RAM GPU RAM

Image Object

IMPORT

Image File

(as, basically, any 3D assets)

(7)

Texture Sheets (in GPU RAM)

Immagini rasterizzate, ma con perculiarità …

mipmap levels

channels per texels: 1,2,3, or (usually) 4 bits per channels:

usually 8, fixed point («true-color») – or compression

resolution: powers of 2 (usually)

Texture Sheets (in GPU RAM)

Durante il rendering:

meccanismi GPU (hardwired!) di accesso alla texture:

1. selezione del livello di MIPmap appropriato (opz)

2. decompressione

3. gestione di accessi fuori dal bordo (e.g. repeat)

4. passaggio da coord UV [0..1]2

a coord in texel [0..RESX]x[0..RESY]

5. interpolazione bilineare (opz)

(8)

Texture Sheets (in GPU RAM)

schemi di

compressione appositi:

quantizzazione

(e.g. 16 bits per texel: 5 red 5 green 5 blue 1 alpha) color-table (or “palette”)

(e.g. tabella di 256 colori, un indice a 8 bit per texel) schemi appositi per tessiture

(poiché devono consentire la random accessibility della texture!) molto lossy,

rate di compressione poco efficiente e rate fisso!

schema più diffiuso S3TC, con varianti DXT1

DXT2 DXT3 DXT4 DXT5

(diversi compromessi fra qualità, costo, canali…)

“no / 1-bit alpha”

“rough alpha”

“smooth alpha ”

Texture Shhets:

formati files

per immagini generiche:

.JPG /.JPEG lossy,

ottimo rate compressione,

immagini “fotografiche”: best solo 3 canali (no choice) 8 bit x canale (no choice) .PNG

lossless

< compression ratio

disegni: best

anche canale alpha possibile

anche 16 bits possibile .TIFF e.RAW (rari)

lossless

appositi per textures:

(opzione più usata) .DDS

(«direct draw surface») stesso indentico formato usato in GPU. Quindi:

inlcude MIPmap levels (volendo) compressione: molto lossy

e compression ratio pessimo (e rete fisso)

GPU ready!

Just read from disk &

load on GPU memory

(9)

Texture maps come assets:

formati files

x immagini generiche

(decomprimere tutta immagine prima di poter accedere ai pixel)

compressione: ottima loading: pesante:

decomprimere da RAM, (forse) ricomprimere in GPU-RAM

MIP-map lvls etc:

controllato dall’engine

x textures

(random accessibility ai texels, senza decomprimere tutta l’imm)

compressione: cattiva

loading: leggero

direct copy Disco => RAM =>

GPU RAM

MIP-map lvls etc:

controllato dall’artista

Texture maps assets e Mesh assets

Vari texture «sheets»

associati ad una mesh

o anche: più meshes sullo stesso sheet (bene)

tipica struttura :

ognimeshassociata a un materiale ognimateriale:

1 sheet di diffuse-map 1 sheet bumpmap (se serve) 1 sheet di alphamap (se serve) 1 vertex shaders + fragment shader vari parametri

(es, shininess, …)

se parti diverse di mesh associate a tessiture diverse:

scomporre oggetto in sotto-mesh

(10)

Texture maps assets e Mesh assets

Non necessariamente 1:1

1:N -- vari texture «sheets» associati ad una mesh N:1 -- più meshes sullo stesso sheet (bene)

se parti diverse di mesh associate a tessiture diverse:

scomporre oggetto in sotto-mesh

MATERIAL MESH A

B MESH

A

TEXTURE 1 BUMPMAP

TEXTURE 2 COLORMAP

Come si legano fra loro

tessiture & mesh?

(11)

3D Models i.e. tri-meshes with:

per vertex attrib normals, color, AO, … LODs

uv-mapping keyframes

cyclic animations face-morphs, …

“skinning”

Materials

lighting model stats / flags textures

RGB maps normal maps alpha maps … shaders

vertex, fragments, …

La parte 3D dei game assets

Animations

blend shapes skeletal animations kinematic animations geometry caches skeletons (rigs)

Geometric proxies

hit-boxes bounding objects AI-meshes

Particle systems

Environments

3d scenes skydomes env. maps scene props

UV-Mapping di una mesh

Serve un mapping (una corrispondenza):

superficie mesh spazio tessitura 2D

«parametrizzazione» della superficie

Idea: memorizzo questo mapping come attributo: (s,t ) per vertice

l’«u-v mapping» della mesh (u,v) == (s,t)

[0..1]

2

(12)

Task di modellazione:

costruz dell’ “u-v mapping”

Texture “atlas”

(composto di vari “charts”)

u

v

UV mapping:

esempio

u

N = A

A N

B

B C

M C M

(13)

Notazione di spazio texture

Texture 2D u

v

Texture Space (o "spazio parametrico" o "spazio u-v")

Texture Space = [0,1] x [0,1]

es: 512 texels

es: 1024 texels

1.0

1.0

Due notazioni

s-t (es OpenGL)

s t

1.0

1.0 u

1.0

1.0

u-v (es DirectX) (0,0)

(0,0)

più diffusa

(in game industry)

più diffusa

(in game industry)

(14)

Nota: Spazio tessitura non dipende da risoluz

(o forma)

Texture 2D

s t

1.0 1.0

1024x512

s 1.0 1.0

128x64

Conveniente!

si può ridurre la res dei texture sheets (bilanciando qualità / memoria) senza alcuna conseguenza sull’UV mapping delle mesh.

Es: caricare in GPU RAM solo i livelli MIP-MAP alti t

Due tipi di UV-mapping:

UV mapping NON iniettivo

Zone diverse della mesh fanno riferimento allo stessa regione della tessitura

es: with overlapping charts

Ottimizzazione spazio tessiutra

Sfruttamento simmetrie / ripetizioni del segnale

UV mapping iniettivo

Ogni punto della tessitura (non vuoto):

1 solo punto sulla mesh es: non-overlapping charts

Genericità / Flessibilità

Utilizzabile per vari scopi (e.g. light backing)

Scopi diversi

spesso, presenti entrambi: 2 UV mapping distinti

aka: “Unwrapping”

o: “Unwrapped UVs”

o:“1:1UV-mapping”

o:“LightmapUV-mapping”

aka: “UV-mapping”

(standard)

(15)

Costruzione dell’UV-mapping

Tipico task del modelling

programmi (semi-)automatici (molto studiati) modellatori professionisti

usando tools appositi

In pratica, bisogna trovare un posto in spazio tessitura per ogni triangolo della mesh

Analogo a:

sbucciare una mela (cutting)

stendere ogni buccia prodotta (unfolding)

disporre le buccie su un rettangolo piano (packing)

Nota richiede (quasi sempre) di “tagliare” la superficie:

discontinuità dei valori u,v cioè vertex-seams

Task di modellazione:

“u-v mapping”

(“u-v” == “s-t”)

strategie pratiche:

1. selezionare edge di taglio

…o…

1. assegnare facce a charts

decidere dove sono i “texture seams”

2. unfolding

minimizzare “distorsione”

3. packing dei charts minimizzare spazi vuoti

assegnare aree secondo necessita’

(es, parti importanti maggiore spazio tessitura) (campionamento dei texel diviene in parte adattivo!)

DEMO!

(16)

Tileable Textures

A A

B

B

Tileable textures

(17)

Tileable textures

Tipico utilizzo:

Molto efficiente in spazio!

RGB maps:

come si ottengono

Image first, then UV-mapping

e.g. immagine da fotografie e.g. tileable images

UV-mapping

first, then

paint 2D

paint with 2D app(e.g. photoshop)

UV-mapping

first, then

paint 3D

paint within 3D modelling software,

or: 1. export 2D rendering,

2. paint over with e.g. photoshop, 3. reimport images

UV-mapper

UV-mapper 2D painter

UV-mapper 3D painter

Riferimenti

Documenti correlati

[r]

¤  Useful for computing sampled integral measures over

Over 97% of all enterprises in Vietnam's supporting industry are micro, small and medium but with appropriate development and support policies, Vietnamese

In this work several catalysts for the steam reforming of oxygenated compounds (ethanol or glycerol) derived from biomass were prepared. The main objective of this thesis was to

alle normali operazioni morfologiche vengono in aiuto degli strumenti come le analisi delle texture (dall’inglese, trama o tessitura) e le reti neurali che vanno a

 Texture coordinate (the mesh “uv mapping”).  For:

 If different parts of mesh associated to different textures: decompose the object in sub-mesh.. Texture maps assets and

Marco Tarini - 2014 1 Game Engines+. Master Game Dev