• Nenhum resultado encontrado

Sistemas Gráficos. Sistemas híbridos, multi-processados. Dispositivo de saída. Dispositivos de entrada. W. Celes Sistemas Gráficos 3

N/A
N/A
Protected

Academic year: 2022

Share "Sistemas Gráficos. Sistemas híbridos, multi-processados. Dispositivo de saída. Dispositivos de entrada. W. Celes Sistemas Gráficos 3"

Copied!
80
0
0

Texto

(1)

Sistemas Gr´aficos

Sistemas h´ıbridos, multi-processados

CPU GPU

RAM VRAM

Dispositivo de saída Dispositivos

de entrada

W. Celes Sistemas Gr´aficos 3

(2)

Fluxo de Dados e Opera¸c˜oes

W. Celes Sistemas Gr´aficos 4

(3)

Arquitetura do Pipeline Gr´afico

N´ıveis de est´agios:

I

Est´agios conceituais

I

Est´agios funcionais

I Est´agios de implementa¸c˜ao

Est´agios conceituais:

Aplicação Geometria Rasterização

sw hw

Operações por vértice

Operações por fragmento

W. Celes Sistemas Gr´aficos 7

(4)

Representa¸c˜ao Geom´etrica de Objetos

Objeto Superfícies Polígonos

W. Celes Representa¸c˜ao Geom´etrica 2

(5)

Representa¸c˜ao Geom´etrica

Primitivas gr´aficas Ponto

Linha Triˆangulo

Descri¸c˜ao baseada nos v´ertices

W. Celes Representa¸c˜ao Geom´etrica 3

(6)

Representa¸c˜ao de Malhas de Triˆangulos

Tabela de incidˆencia

v

0

x

0

y

0

z

0

v

1

x

1

y

1

z

1

. . .

f

0

v

i

v

j

v

k

f

1

v

i

v

j

v

k

. . .

Compartilha v´ertices Representa¸c˜ao compacta Suficiente para renderiza¸c˜ao

Mas n˜ao ´e uma representa¸c˜ao completa (e.g., n˜ao representa aretas)

W. Celes Representa¸c˜ao Geom´etrica 5

(7)

Caracteriza¸c˜ao da Geometria

Atributos de v´ertices Coordenada (x, y, z)

Cor (r, g , b) ou Normal (n

x

, n

y

, n

z

) Coordenada de textura (s , t) Atributos de faces

Conven¸c˜ao da ordem de incidˆencia

Clockwise (CW) ou Counterclockwise (CCW)

Normal dada em acordˆancia

Qualquer lado pode ser vis´ıvel e iluminado

Modo de desenho

Preenchimento (FILL), linha (LINE), ponto (POINT) Atributos de pontos e linhas

Tamanho ou espessura

W. Celes Representa¸c˜ao Geom´etrica 7

(8)

Tipos de primitivas

GL_LINES 0

1

2 3 5

4

GL_LINE_STRIP 0

1

2 3

GL_LINE_LOOP

0 1

2 3

GL_POLYGON (convexo)

0 4

3 2 1

GL_QUADS

0 3

1 2

4 7

5 6

GL_QUAD_STRIP 0

1 3

2 4

5 GL_TRIANGLES

0 1

2

3 4

5

GL_TRIANGLE_STRIP 1

0 2

3

4 5

GL_TRIANGLE_FAN 0

1

2 3

4 GL_POINTS

0 1

2

W. Celes Representa¸c˜ao Geom´etrica 10

(9)

API com vetores

Coordenadas e atributos definidas em vetores no cliente Especifica¸c˜ao do vetor de coordenada

glVertexPointer(size, type, stride, pointer);

Exemplo:

struct MyVertex { float x, y, z;

float nx, ny, nz;

}; ...

MyVertex p[N];

...

glVertexPointer(3, GL FLOAT, sizeof(MyVertex), p);

Ativa¸c˜ao

glEnableClientState(GL VERTEX ARRAY);

...

glDisableClientState(GL VERTEX ARRAY);

API an´aloga para atributos (normal, cor, etc.) Pode ser intercalados (

glInterleavedArrays

)

W. Celes Representa¸c˜ao Geom´etrica 15

(10)

Principais fun¸c˜oes de desenho

Desenho de primitivas com incidˆencia

glDrawElements (mode, count, type, indices);

mode

: tipo de primitiva

count

: n´ umero de v´ertices

type

: tipo dos ´ındices (deve ser unsigned)

indices

: ponteiro para vetor de ´ındices

Desenho de primitivas com incidˆencia sequencial

glDrawArrays (mode, first, count);

first

: ´ındice inicial do vetor

W. Celes Representa¸c˜ao Geom´etrica 16

(11)

Desenho de um grid

0 1 2 . . . nx

i

0 1 2 . . . ny

j

int Index (int i, int j) { return i + j⇥(m nx+1);

}

...

// fill coord

for (int j=0; j<=m ny; j++) { for (int i=0; i<=m nx; i++) {

int k = Index(i, j);

m coord[3⇥k] = (float)i / m nx;

m coord[3⇥k+1] = (float)j / m ny;

m coord[3⇥k+2] = 0.0f;

}

}// fill incidence as triangles int k = 0;

for (int j=0; j<ny; j++) { for (int i=0; i<nx; i++) {

m ind[k++] = Index(i, j);

m ind[k++] = Index(i+1, j+1);

m ind[k++] = Index(i, j+1);

m ind[k++] = Index(i, j);

m ind[k++] = Index(i+1, j);

m ind[k++] = Index(i+1, j+1);

} }

W. Celes Representa¸c˜ao Geom´etrica 17

(12)

Desenho de uma esfera

Coordenadas esf´ericas:

x = r cos ⇥ sin ⌅ y = r cos ⌅ z = r sin ⇥ sin ⌅

com:

⇥ ⇥ [0, 2⇤]

⌅ ⇥ [0, ⇤]

Considera¸c˜oes

Usar sempre geometria de r = 1.0 E aplicar escala para ajustar tamanho

Vetor de coordenadas e normais podem ser os mesmos

W. Celes Representa¸c˜ao Geom´etrica 18

(13)

Transforma¸c˜oes no pipeline

Geometria Rasterização Aplicação

Transformação Modelagem e Visualização

Iluminação Projeção Clipping

Rasterização Mapeamento de

Textura Combinação Fog/Blend Teste !,s,z

Frame Buffer Mapeamento

de Tela

Aplicação

operações por vértice

operações por pixel

W. Celes Espa¸cos de Coordenadas e Transforma¸c˜oes 2

(14)

Espa¸cos de coordenadas

x

z x

z x

z

Mm

transf. de modelagem

Mv

transf. de visualização

x z

x z

Mv

transf. de projeção

Ms

transf. de mapeamento (-1,-1)

(1, 1) (x0, 0)

(x0+w, 1)

Espaço do objeto (local)

Espaço do mundo (global)

Espaço do olho (camera)

Espaço pós-projeção (clip)

Espaço de tela (janela)

W. Celes Espa¸cos de Coordenadas e Transforma¸c˜oes 3

(15)

Proje¸c˜ao perspectiva (cˆonica)

Volume de vis˜ao definido por uma pirˆamide truncada

I

Linhas paralelas

I

Preservam-se paralelas se paralelas ao plano de proje¸c˜ao

I

Caso contr´ario, convergem para um ponto de fuga

I

Pontos colineares preservam-se colineares

I

Transforma¸c˜ao n˜ao linear ao longo da profundidade

I

Parˆametros: x

min

, x

max

, y

min

, y

max

, z

near

, z

far

I

z

near

, z

far

: distˆancia `a origem (devem ser positivas)

(-1,-1,-1) ( 1, 1, 1) (xmin,ymin)

znear

zfar (xmax,ymax)

P

P

z = -1 z = 1

W. Celes Espa¸cos de Coordenadas e Transforma¸c˜oes 25

(16)

Proje¸c˜ao perspectiva (cˆonica)

Transforma¸c˜ao do espa¸co

P

P

x

z

(f+n)/(f-n)

f

x

z 1 -1

W. Celes Espa¸cos de Coordenadas e Transforma¸c˜oes 26

(17)

Proje¸c˜ao perspectiva (cˆonica)

N˜ao linearidade ao longo da profundidade

(far-near = 100) 0.0

1.0

-1.0

0 dist – near 100

z

win

n=50 (n/f=0.5) n=10 (n/f=0.1) n=5 (n/f=0.05) n=1 (n/f=0.01)

W. Celes Espa¸cos de Coordenadas e Transforma¸c˜oes 27

(18)

Migra¸c˜ao entre espa¸cos

Migra¸c˜ao de v´ ertices:

v M

mvp

! v

0

Object space Clip space

v M

mvp1

v

0

Migra¸c˜ao de planos:

n M

mvpT

! n

0

Object space Clip space

n M

Tmvp

n

0

W. Celes Espa¸cos de Coordenadas e Transforma¸c˜oes 36

(19)

Ilumina¸c˜ao e Shading

Ilumina¸c˜ao

I

Intera¸c˜ao entre luz e materiais, produzindo uma cor

Shading (“sombreamento”)

I

Uso do c´alculo de ilumina¸c˜ao para renderizar primitivas

I

Flat (constant) shading: c´alculo de ilumina¸c˜ao por primitiva

I

Gouraud shading: c´alculo de ilumina¸c˜ao por v´ertice

I

Phong shading: c´alculo de ilumina¸c˜ao por pixel

Imagem deIntergraph Computer Systems

W. Celes Ilumina¸c˜ao 2

(20)

Modelo de ilumina¸c˜ao local

Intera¸c˜ao luz-mat´eria modelada por componentes

I

Componente especular

I

Modela raios refletidos diretamente (cor do brilho)

I

Componente difusa

I

Modela raios refletidos ap´os itera¸c˜ao com mat´eria (cor fosca)

I

Componente ambiente

I

Simula contribui¸c˜ao global

I

Componente emissivo

I

Simula materiais de fontes de luz

W. Celes Ilumina¸c˜ao 6

(21)

Componente difusa

Lei de Lambert para material fosco

n l

ϕ

i

dif

= cos = n · l

onde n e l s˜ao vetores unit´arios Se >

2

) i

dif

= 0

i

dif

= max(n · l, 0)

Interpreta¸c˜ao geom´etrica

W. Celes Ilumina¸c˜ao 12

(22)

Componente especular

Modelo de ilumina¸c˜ao de Phong

n l

ϕ ϕ

r v

ϴ n

l r

-l

i

spec

= (cos ✓)

mshi

= (r · v)

mshi

onde: r = 2(n · l)n l

Dire¸c˜ao preferencial de reflex˜ao

W. Celes Ilumina¸c˜ao 14

(23)

Componente especular

C´alculo com half vector (Blin)

I

Evita c´alculo do vetor reflex˜ao

I

Half vector ´e a bissetriz de l e v

n l

h

ϴ

v

h = l + v

| l + v | i

spec

= (n · h)

mshi

Correla¸c˜ao:

(r · v)

mshi

⇡ (n · h)

4mshi

Combinando fonte e material:

c

spec

= max(n · h, 0)

mshi

m

spec

⌦ s

spec I

S´o pode ter reflex˜ao especular se n · l > 0

W. Celes Ilumina¸c˜ao 15

(24)

  Pipeline de testes e operações

Frag Scissor test Alpha test Stencil test

Depth test

Blending Dithering Logical op. Frame

Buffer

(25)

  Restringe área de desenho a um retângulo

  Facilmente acelerada por hardware

  API

glScissor ( x, y, w, h );

glEnable (GL_SCISSOR_TEST);

(26)

  Teste sobre alpha dos fragmentos

  Testados com relação a um valor de referência

glAlphaTest ( func, ref );

glEnable (GL_ALPHA_TEST);

func teste

GL_NEVER GL_ALWAYS GL_LESS GL_LEQUAL GL_EQUAL etc...

Nunca

Sempre

Se A f < ref

Se A f <= ref

Se A f == ref

...

(27)

  Restringe área de desenho

   Buffer de stencil requisitado na criação

  Especificação do teste

glStencilFunc ( func, ref, mask );

func: GL_NEVER, GL_ALWAYS, GL_LESS, ...

ref: valor de referência

mask: máscara de bits (aplicadas a valor do stencil e ref)

  Preenchimento do buffer de stencil

glStencilOp ( fail, zfail, zpass );

Op. válidas : GL_KEEP, GL_ZERO, GL_INCR, GL_REPLACE, ...

  Ativação

glEnable (GL_STENCIL_TEST);

pelo valor de referência

(28)

  Teste de visibilidade

  Z-buffer requisitado na criação

glDepthFunc ( func ); // default: GL_LESS glEnable (GL_DEPTH_TEST);

  Suporte a algoritmos de múltiplas passadas

  Primeira: glDepthFunc ( GL_LESS );

  Demais: glDepthFunc ( GL_EQUAL );

  Combinação: glBlendFunc (GL_ONE, GL_ONE);

(29)

   Combinação da cor do fragmento

sendo processado com a cor do pixel

  depois da rasterização e antes do

fragmento ser desenhado no framebuffer.

   Aplicações

  transparência

  composição digital

  pintura

obs: blending não funciona com color index.

(30)

glBlendFunc (fator_frag, fator_pixel);

GL_ZERO src or dst (0,0,0,0)

GL_ONE src or dst (1,1,1,1)

GL_DST_COLOR src (R d ,G d ,B d ,A d ) GL_SRC_COLOR dst (R s ,G s ,B s ,A s )

GL_ONE_MINUS_DST_COLOR src (1,1,1,1) - (R d ,G d ,B d ,A d ) GL_ONE_MINUS_SRC_COLOR dst (1,1,1,1) - (R s ,G s ,B s ,A s ) GL_SRC_ALPHA src or dst (A s ,A s ,A s ,A s )

GL_ONE_MINUS_SRC_ALPHA src or dst (1,1,1,1) - (A s ,A s ,A s ,A s ) GL_DST_ALPHA src or dst (A d ,A d ,A d ,A d )

GL_ONE_MINUS_DST_ALPHA src or dst (1,1,1,1) - (A d ,A d ,A d ,A d )

GL_SRC_ALPHA_SATURATE src (f ,f ,f ,1); f = min(A s ,1-A d )

(31)

  Resolve ordem de renderização

  Quando distância em z é desprezível

  Resolve problemas de precisão

  Algoritmos de rasterização diferentes

  Exemplos

  Quadro numa parede

  Folha de papel sobre mesa

  Linhas de uma malha de elementos

(32)

glPolygonOffset (factor, units) o = r . units + m . Factor

r = menor valor que garante diferença em z w

m = declividade na profundidade

(33)

Textura

Mapeamento de textura

I

Modela padronagem de cor (textura de cor)

I

Modela ilumina¸c˜ao (mapa de ilumina¸c˜ao)

I

Modela rugosidade (mapa de normal)

I

Modela sombras (mapa de profundidade)

I

etc.

W. Celes Imagem e Textura 13

(34)

Mapeamento de textura

Mapeamento conceitual

mapeamento de textura

s

0.0 1.0

t

0.0 1.0

(s, t) (s, t)

(s, t)

W. Celes Imagem e Textura 14

(35)

Mapeamento de textura

Mapeamento fragmento a fragmento

mapeamento texel a texel

s t

(s, t) (s, t)

(s, t)

W. Celes Imagem e Textura 15

(36)

Textura

Cria¸c˜ao do objeto de textura

I

Requisita “nomes”

glGenTextures(int n, unsigned int ⇤texnames);

I

Associa objeto como corrente

glBindTexture(enum target, int texname);

I

Na finaliza¸c˜ao, deleta objetos

glDeleteTexture (int n, unsigned int ⇤texnames);

W. Celes Imagem e Textura 16

(37)

Textura

Especifica¸c˜ao de imagem do objeto de textura

glTexImage2D (GL TEXTURE 2D, level, iformat,

width, height, border, format, type, pixels );

I level

: n´ıvel da pirˆamide de mipmapping (a base tem valor 0)

I iformat

: formato interno

I border

: indica existˆencia de borda, 0 ou 1

W. Celes Imagem e Textura 17

(38)

Textura

Especifica¸c˜ao de imagem do objeto de textura

I

Dimens˜ao tem que ser potˆencia de 2: 2

n

+ 2b

I

Exce¸c˜ao para “texturas retangulares”

I

Estrat´egias de ajustes

I

Re-escala (quando tem repeti¸c˜ao)

gluScaleImage (format,

in width, in height, in type, in pixels, out width, out height, out type, out pixels );

I

Mapeamento de sub´area (quanto n˜ao tem repeti¸c˜ao)

W. Celes Imagem e Textura 18

(39)

Textura

Especifica¸c˜ao de imagem do objeto de textura

I

Dimens˜ao tem que ser potˆencia de 2: 2

n

+ 2b

I

Exce¸c˜ao para “texturas retangulares”

I

Estrat´egias de ajustes

I

Re-escala (quando tem repeti¸c˜ao)

gluScaleImage (format,

in width, in height, in type, in pixels, out width, out height, out type, out pixels );

I

Mapeamento de sub´area (quanto n˜ao tem repeti¸c˜ao)

W. Celes Imagem e Textura 18

(40)

Textura

Especifica¸c˜ao de imagem do objeto de textura

I

Dimens˜ao tem que ser potˆencia de 2: 2

n

+ 2b

I

Exce¸c˜ao para “texturas retangulares”

I

Estrat´egias de ajustes

I

Re-escala (quando tem repeti¸c˜ao)

gluScaleImage (format,

in width, in height, in type, in pixels, out width, out height, out type, out pixels );

I

Mapeamento de sub´area (quanto n˜ao tem repeti¸c˜ao)

1.0 w/W 1.0

h/H

W. Celes Imagem e Textura 18

(41)

Textura

Outras formas de especifica¸c˜ao da imagem

I

Redefinindo sub-imagem

glTexSubImage2D (target, level,

xoffset, yoffset, w, h, format, type, pixels );

I

Copiando do frame bu↵er

glCopyTexture2D (target, level, iformat, x, y, w, h, border);

I

O↵screen rendering

I

pbu↵er, FBO

W. Celes Imagem e Textura 19

(42)

Pipeline de textura

Vértice x,y,z nx,ny,nz

geração

s, t transform s’, t’ sp, tp map/filtro

combinação fragmento fragres

texel rasterização por vértice por fragmento

W. Celes Imagem e Textura 20

(43)

Pipeline de textura

Gera¸c˜ao de coordenadas de textura

I

Dadas explicitamente como atributos de v´ertices

glTexCoord⇤ (s, t, r, q)

ou

glTexCoordPointer(nelem,type,offset,array);

glEnableClientState(GL TEXTURE COORD ARRAY);

I

Geradas automaticamente a partir dos dados dos v´ertices

I

Combina¸c˜ao linear no espa¸co do objeto

s = a

s

x + b

s

y + c

s

z + d

s

t = a

t

x + ...

I

Combina¸c˜ao linear no espa¸co do objeto

s = a

es

x

e

+ b

se

y

e

+ c

se

z

e

+ d

se

t = a

et

x

e

+ ...

W. Celes Imagem e Textura 21

(44)

Pipeline de textura

Gera¸c˜ao de coordenadas de textura

I

Dadas explicitamente como atributos de v´ertices

glTexCoord⇤ (s, t, r, q)

ou

glTexCoordPointer(nelem,type,offset,array);

glEnableClientState(GL TEXTURE COORD ARRAY);

I

Geradas automaticamente a partir dos dados dos v´ertices

I

Combina¸c˜ao linear no espa¸co do objeto

s = a

s

x + b

s

y + c

s

z + d

s

t = a

t

x + ...

I

Combina¸c˜ao linear no espa¸co do objeto

s = a

es

x

e

+ b

se

y

e

+ c

se

z

e

+ d

se

t = a

et

x

e

+ ...

W. Celes Imagem e Textura 21

(45)

Pipeline de textura

Especifica¸c˜ao dos “planos” geradores: a, b, c , d

I

Se gera¸c˜ao for no espa¸co do olho, o plano especificado ´e transformado para o espa¸co do olho.

glTexGeni (GL S, GL TEXTURE GEN MODE, GL OBJECT PLANE);

glTexGenfv (GL S, GL OBJECT PLANE, plane);

I

Ativa¸c˜ao da gera¸c˜ao autom´atica

glEnable (GL TEXTURE GEN S);

...

Quando usar espa¸co o objeto e espa¸co do olho?

I

Espa¸co do objeto: textura aplicada em um objeto

I

Espa¸co do olho: textura aplicada em todos os objetos da cena

W. Celes Imagem e Textura 22

(46)

Pipeline de textura

Especifica¸c˜ao dos “planos” geradores: a, b, c , d

I

Se gera¸c˜ao for no espa¸co do olho, o plano especificado ´e transformado para o espa¸co do olho.

glTexGeni (GL S, GL TEXTURE GEN MODE, GL OBJECT PLANE);

glTexGenfv (GL S, GL OBJECT PLANE, plane);

I

Ativa¸c˜ao da gera¸c˜ao autom´atica

glEnable (GL TEXTURE GEN S);

...

Quando usar espa¸co o objeto e espa¸co do olho?

I

Espa¸co do objeto: textura aplicada em um objeto

I

Espa¸co do olho: textura aplicada em todos os objetos da cena

W. Celes Imagem e Textura 22

(47)

Pipeline de textura

Transforma¸c˜ao aplicada `as coordenadas de textura 2

6 6 4

s

0

t

0

r

0

q

0

3 7 7

5 = M

tex

2 6 6 4

s t r q

3 7 7 5

I

Uso da API de transforma¸c˜ao

I

Pilha de matriz de textura

glMatrixMode(GL TEXTURE);

I

Todas as fun¸c˜oes de especifica¸c˜ao de transforma¸c˜oes

glLoadIdentity();

glTranslate⇤(...);

glRotate⇤(...);

glMultMatrix⇤(...);

...

gluPerspective(...);

gluLookAt(...);

...

W. Celes Imagem e Textura 23

(48)

Pipeline de textura

Mapeamento

I

Dado um fragmento com coordenada de textura interpolada (s, t ), acessa texel ( { r, g , b, a } ) correspondente

Modo de mapeamento (wrap)

I

Valores (s , t) fora do intervalo

glTexParameter⇤(target, pname, param);

I GL TEXTURE WRAP S

,

GL TEXTURE WRAP T

, ...

I

Repeat, mirrored, clamp to edge, clamp to border

Tomas Akenine-M¨oller c 2002

W. Celes Imagem e Textura 24

(49)

Pipeline de textura

Filtros

I

Correspondˆencia entre fragmento e texel Amplia¸c˜ao (magnification)

I

Fragmento mapeado para um sub-texel

I

A ´area de um texel corresponde a v´arios pixels da tela

W. Celes Imagem e Textura 25

(50)

Pipeline de textura

Filtros de amplia¸c˜ao

I

Nearest: 1 texel por fragmento

I

Baixa qualidade (aliasing)

I

Linear: 4 texels por fragmento

I

Melhor qualidade (anti-aliasing)

Tomas Akenine-M¨oller c 2002

W. Celes Imagem e Textura 26

(51)

Pipeline de textura

Filtros de amplia¸c˜ao

I

Nearest: 1 texel por fragmento

I

Baixa qualidade (aliasing)

I

Linear: 4 texels por fragmento

I

Melhor qualidade (anti-aliasing)

Tomas Akenine-M¨oller c 2002

W. Celes Imagem e Textura 26

(52)

Pipeline de textura

Filtros de amplia¸c˜ao

I

Nearest: 1 texel por fragmento

I

Baixa qualidade (aliasing)

I

Linear: 4 texels por fragmento

I

Melhor qualidade (anti-aliasing)

nearest linear

Tomas Akenine-M¨oller c 2002

W. Celes Imagem e Textura 26

(53)

Pipeline de textura

Redu¸c˜ao (minification)

I

A ´area de um fragmento corresponde a v´arios texels

W. Celes Imagem e Textura 27

(54)

Pipeline de textura

Filtros de redu¸c˜ao

I

Nearest: um texel por fragmento

I

Baixa qualidade (aliasing)

I

Linear: 4 texels por fragmento

I

Ainda baixa qualidade (aliasing)

W. Celes Imagem e Textura 28

(55)

Pipeline de textura

Filtros de redu¸c˜ao

I

Nearest: um texel por fragmento

I

Baixa qualidade (aliasing)

I

Linear: 4 texels por fragmento

I

Ainda baixa qualidade (aliasing)

W. Celes Imagem e Textura 28

(56)

Filtro de redu¸c˜ao

Problema de falta de amostragem de sinal

Nyquist rate

A frequˆencia da amostragem deve ser pelo menos duas vezes maior que a frequˆencia do sinal

W. Celes Imagem e Textura 29

(57)

Filtro de redu¸c˜ao

Problema de falta de amostragem de sinal

Nyquist rate

A frequˆencia da amostragem deve ser pelo menos duas vezes maior que a frequˆencia do sinal

W. Celes Imagem e Textura 29

(58)

Filtro de redu¸c˜ao

Para alcan¸car o Nyquist rate:

como n˜ao se pode aumentar o n´ umero de amostras (resolu¸c˜ao da tela), diminui-se a frequˆencia do sinal, isto ´e, diminui-se a textura.

Pirˆamide de mipmapping

Tomas Akenine-M¨oller c 2002

W. Celes Imagem e Textura 30

(59)

Filtro de redu¸c˜ao

Para alcan¸car o Nyquist rate:

como n˜ao se pode aumentar o n´ umero de amostras (resolu¸c˜ao da tela), diminui-se a frequˆencia do sinal, isto ´e, diminui-se a textura.

Pirˆamide de mipmapping

Tomas Akenine-M¨oller c 2002

W. Celes Imagem e Textura 30

(60)

Filtro de redu¸c˜ao

Filtro trilinear

I

Aplica filtro bilinear em dois n´ıveis adjacentes da pirˆamide

I

Interpola linearmente os dois texels encontrados

C´alculo do n´ıvel da pirˆamide

I

Busca-se rela¸c˜ao de um texel por fragmento

= log

2

⇢ + lod

bias

onde:

I

: n´ıvel da pirˆamide (0 representa a base)

I

⇢: m´aximo fator de escala entre pol´ıgono na tela e textura

I

lod

bias

: constante definida via

glTexEnv⇤()

(default ´e 0.0) Pode-se controlar os n´ıveis m´ınimo e m´aximo usados no filtro.

W. Celes Imagem e Textura 31

(61)

Filtro de redu¸c˜ao

Filtro trilinear

I

Aplica filtro bilinear em dois n´ıveis adjacentes da pirˆamide

I

Interpola linearmente os dois texels encontrados C´alculo do n´ıvel da pirˆamide

I

Busca-se rela¸c˜ao de um texel por fragmento

= log

2

⇢ + lod

bias

onde:

I

: n´ıvel da pirˆamide (0 representa a base)

I

⇢: m´aximo fator de escala entre pol´ıgono na tela e textura

I

lod

bias

: constante definida via

glTexEnv⇤()

(default ´e 0.0)

Pode-se controlar os n´ıveis m´ınimo e m´aximo usados no filtro.

W. Celes Imagem e Textura 31

(62)

Filtro de redu¸c˜ao

Filtro trilinear

I

Aplica filtro bilinear em dois n´ıveis adjacentes da pirˆamide

I

Interpola linearmente os dois texels encontrados C´alculo do n´ıvel da pirˆamide

I

Busca-se rela¸c˜ao de um texel por fragmento

= log

2

⇢ + lod

bias

onde:

I

: n´ıvel da pirˆamide (0 representa a base)

I

⇢: m´aximo fator de escala entre pol´ıgono na tela e textura

I

lod

bias

: constante definida via

glTexEnv⇤()

(default ´e 0.0) Pode-se controlar os n´ıveis m´ınimo e m´aximo usados no filtro.

W. Celes Imagem e Textura 31

(63)

Constru¸c˜ao da pirˆamide de mipmapping

Vers˜ao 3.0 ou posterior

glGenerateMipmap (target);

I target

:

GL TEXTURE 1D, GL TEXTURE 2D, ...

I

Pirˆamide constru´ıda entre n´ıveis:

GL TEXTURE BASE LEVEL

e

GL TEXTURE MAX LEVEL

Vers˜oes anteriores

I

Especifica imagem e constroi pirˆamide

gluBuild1DMimaps

(target, iformat, width, format, type, ⇤texels);

gluBuild2DMimaps

(target, iformat, width, height, format, type, ⇤texels);

gluBuild3DMimaps

(target, iformat, width, height, depth, format, type, ⇤texels);

W. Celes Imagem e Textura 32

(64)

Filtro de textura

API para defini¸c˜ao do filtro

glTexParameter⇤ (target, param, value);

I

Filtro de amplia¸c˜ao:

GL TEXTURE MAG FILTER

I GL NEAREST, GL LINEAR

I

Filtro de redu¸c˜ao:

GL TEXTURE MIN FILTER

I GL NEAREST, GL LINEAR,

GL NEAREST MIPMAP NEAREST, GL LINEAR MIPMAP LINEAR, ...

W. Celes Imagem e Textura 33

(65)

Mipmapping

0 1 2 3

W. Celes Imagem e Textura 34

(66)

Compara¸c˜ao entre filtros

Filtros nearest x bilinear

c David Kirk/NVIDIA and Wen-mei W. Hwu, 2007

W. Celes Imagem e Textura 35

(67)

Compara¸c˜ao entre filtros

Filtros bilinear x trilinear

c David Kirk/NVIDIA and Wen-mei W. Hwu, 2007

W. Celes Imagem e Textura 36

(68)

Compara¸c˜ao de desempenho

Compara¸c˜ao entre 4 diferentes m´aquinas

SIGGRAPH 2002, Course # 37, Performance OpenGL: Platform Independent Techniques

W. Celes Imagem e Textura 37

(69)

Espa¸co de mem´oria

Qual o espa¸co de mem´oria adicional para armazenar a pirˆamide?

I

Considerando uma imagem RGB

Gasta-se apenas 1/3 a mais de mem´oria para textura RGB

W. Celes Imagem e Textura 38

(70)

Espa¸co de mem´oria

Qual o espa¸co de mem´oria adicional para armazenar a pirˆamide?

I

Considerando uma imagem RGB

Gasta-se apenas 1/3 a mais de mem´oria para textura RGB

W. Celes Imagem e Textura 38

(71)

Espa¸co de mem´oria

Qual o espa¸co de mem´oria adicional para armazenar a pirˆamide?

I

Considerando uma imagem RGB

Gasta-se apenas 1/3 a mais de mem´oria para textura RGB

W. Celes Imagem e Textura 38

(72)

Espa¸co de mem´oria

Qual o espa¸co de mem´oria adicional para armazenar a pirˆamide?

I

Considerando uma imagem RGB

Gasta-se apenas 1/3 a mais de mem´oria para textura RGB

W. Celes Imagem e Textura 38

(73)

Filtro de mipmapping

Filtro isotr´opico

I

Usa-se a quadril´atero que aproxima o mapeamento do fragmento no espa¸co de textura

texel

projected fragment

quadrilátero

I

N´ıvel da pirˆamide: = log

2

⇢ + lod

bias

, onde ⇢ = p Q

area I

Tende a “embassar” demasiadamente a imagem (overblur)

W. Celes Imagem e Textura 39

(74)

Filtro de mipmapping

Filtro anisotr´opico

I

Utiliza diversas amostras e faz a m´edia dos texels resultantes

amostras de mipmapping linha de anisotropia

W. Celes Imagem e Textura 40

(75)

Compara¸c˜ao entre filtros

Filtro anisotr´opico deixa imagem mais n´ıtida

c Tom’s Hardware guide

W. Celes Imagem e Textura 41

(76)

Compara¸c˜ao entre filtros

Filtro anisotr´opico “retarda” subida na pirˆamide

c Tom’s Hardware guide

W. Celes Imagem e Textura 42

(77)

Fun¸c˜oes de textura

Determina combina¸c˜ao de cor do fragmento com texel resultante

glTexEnv⇤ (target, pname, param);

Fun¸c˜oes (para textura RGBA)

I

Replace: c = c

t

, a = a

t I

Modulate: c = c

f

c

t

, a = a

t

I

Decal: c = c

f

(1 a

t

) + c

t

a

t

, a = a

f I

Blend: c = c

f

(1 a

t

) + c

c

c

t

, a = a

f

a

t

Com programa¸c˜ao em placa gr´afica podemos fazer combina¸c˜ao procedural

W. Celes Imagem e Textura 43

(78)

Fun¸c˜oes de textura

Replace e Modulate

W. Celes Imagem e Textura 44

(79)

Textura 1D

Exemplos de aplica¸c˜ao

I

Mapas de propriedades

I

Escala de cores na textura

I

Propriedade mapeada para coordenada s

I Matriz de textura normaliza valores

I

N´evoa vertical

I

Intensidade da n´evoa mapeada na textura

I

Valor de s proporcional a altura

W. Celes Imagem e Textura 48

(80)

Textura 3D

Exemplos de aplica¸c˜oes

I

Aplica¸c˜ao de propriedades 3D

I

Material volum´etrico

I

Mapa 3D de ilumina¸c˜ao

I

Visualiza¸c˜ao volum´etrica

I

Area m´edica ´

I

Area cient´ıfica ´

W. Celes Imagem e Textura 49

Referências

Documentos relacionados

CADASTRO DE NÃO SÓCIO , preencha todos os dados solicitados. Após a confirmação dos dados você receberá uma senha por e-mail para efetivar a sua inscrição. g) O Formulário

A Tabela 5 mostra uma projeção da quantidade de resíduos que são encaminhados desnecessariamente para tratamento e disposição final, a partir de um balanço que utiliza à

(2004), para testar o uso de bioestimulantes a base de citocinina, giberilina e ácido indolcanóico na cultura do milho, realizaram uma pesquisa na qual os resultados

Neste contexto, os impactos ocasionados pelo uso e manejo na estrutura física do solo, vêm sendo quantificado através de diferentes propriedades físicas do solo, tais como

É possível argumentar que havia uma tendência conservadora dos governos ditatoriais que vigoraram na América Latina na segunda metade do século XX. Pregavam a

[r]