+ All Categories
Home > Documents > Video Game Dev 2015/2016 Univ Insubria...

Video Game Dev 2015/2016 Univ Insubria...

Date post: 17-Feb-2019
Category:
Upload: vuonganh
View: 223 times
Download: 0 times
Share this document with a friend
17
Video Game Dev - Uni Insubria 24/10/2015 Marco Tarini - 2015/2016 1 Video Game Dev 2015/2016 Univ Insubria Textures Marco Tarini Texture mapping geometria 3D (insieme di quadrilateri) + RGB texture 2D (qui: color-map) =
Transcript
Page 1: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 1

Video Game Dev 2015/2016Univ Insubria

Textures

Marco Tarini

Texture mapping

geometria 3D(insieme di quadrilateri)

+

RGB texture 2D

(qui: color-map)

=

Page 2: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 2

Esempio (color-map)

+ =

Texture maps!Uno degli assets + comuni e

importanti di un games

Uno dei maggiori consumatori

di GPU RAM

Page 3: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 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

Page 4: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 4

I segnali tipicam. memorizzatiin 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

Page 5: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 5

Texture mapscome assets

� Caratteristiche:

� Size:

� risoluzione

� canali (es: alpha?)

� MIP-map

� (presenti o no?)

� Compressione?

� e.g. “color-map”, quantizzazioneo 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!

Page 6: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 6

GPU rendering of a Meshin 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”

TextureSheet

on GPU

LOAD

Life of a Texurein a Game Engine

DISK CENTRAL RAM GPU RAM

ImageObject

IMPORT

ImageFile

(as, basically, any 3D assets)

Page 7: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 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)

Page 8: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 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

� � compressione: vabbe’

☺ max flessibilità canali etc

� .PNM (davvero raro)

� � � compressione: ahah

☺ ma parsing facilissimo! (no lib)

� 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

(no decompress / recompress!)

Page 9: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 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 assetse Mesh assets

� Vari texture «sheets»associati ad una mesh� o anche: più meshes sullo stesso sheet (bene)

� tipica struttura :� ogni mesh associata a un materiale� ogni materiale:

� 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

Page 10: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 10

Texture maps assetse 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

AMESH

B

MESH

A

TEXTURE 1

BUMPMAP

TEXTURE 2

COLORMAP

Come si legano fra loro tessiture & mesh?

Page 11: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 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 deigame 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

Page 12: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 12

Task di modellazione:costruz dell’ “u-v mapping”

Texture “atlas”(composto di

vari “charts”)

u

v

UV mapping:esempio

MESH TEXTURE SPACE

u

vN = A

A N

B

B C

C

(vertex seam)

MM

Page 13: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 13

Notazione di spazio texture

Texture 2Du

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

v

1.0

1.0

u-v(es DirectX)

(0,0)

(0,0)

più diffusa (in game industry)

più diffusa (in game industry)

Page 14: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 14

Nota: Spazio tessitura non dipende da risoluz (o forma)

Texture 2D

s

t

1.0

1.0

1024x512

s1.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

� (2 attributi UV per ogni vertici)Quali degli UV mapping

mostrati fin’ora sono di

quale tipo?

aka: “Unwrapping”o: “Unwrapped UVs”

o: “1:1 UV-mapping”

o: “Lightmap UV-mapping”

aka: “UV-mapping”(standard)

Page 15: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 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!

Page 16: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 16

Tileable Textures

AA

B

B

Tileable textures

Page 17: Video Game Dev 2015/2016 Univ Insubria Texturesvcg.isti.cnr.it/~tarini/teaching/gamedev2015/11.textures.pdf · def. di un segnale sulla superficie (la mesh) scopo simile di quello

Video Game Dev - Uni Insubria 24/10/2015

Marco Tarini - 2015/2016 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 images4. goto 1

UV-mapper

UV-mapper 2D painter

UV-mapper 3D painter


Recommended