Professional Documents
Culture Documents
Vicente Helano Feitosa Batista Sobrinho Faculdade Para do Cear so a Sistemas de Informao ca 1o. semestre de 2011
Renderizao ca
LCD
CRT
Renderizao ca
Tela de LCD com 49 22 metros, resoluo de 1.088 2.432 pixels. ca Estdio dos Cowboys, Texas. a
Renderizao ca
O contedo de uma tela raster dado por um arranjo u e bidimensional de pixels (picture elements)
Fonte: http://en.wikipedia.org/wiki/Lenna
Renderizao ca
O contedo de uma tela raster dado por um arranjo u e bidimensional de pixels (picture elements)
Fonte: http://en.wikipedia.org/wiki/Lenna
1 pixel
Renderizao ca
Renderizao ca E um processo de construo de uma imagem bidimensional ca a partir de uma cena denida por uma cmera ct a cia, objetos tridimensionais, modelo de iluminao, texturas, etc. ca
Renderizao ca
Renderizao ca
Aproxima-se da realidade
Renderizao ca
Renderizao ca
Renderizao ca
Renderizao ca
Renderizao ca
Recorte
Rasterizao ca
Operaes em co fragmentos
Framebuer
Modelo
Iluminao ca
Recorte
Rasterizao ca
Operaes em co fragmentos
Framebuer
O problema de rasterizao ca
Entrada: Primitivas 2D no espao de tela c Sa da Coleo de fragmentos de pixels a serem pintados junto ca com os atributos (cor, profundidade, etc.) interpolados para cada pixel
O problema de rasterizao ca
(0, 0)
x xi , yi R
O problema de rasterizao ca
O problema de rasterizao ca
(0, 0)
12
Exemplo de rasterizao ca
Exemplo de rasterizao ca
Exemplo de rasterizao ca
Dado um segmento de reta denido por suas extremidades (x0 , y0 ) e (x1 , y1 ), espera-se que:
Dado um segmento de reta denido por suas extremidades (x0 , y0 ) e (x1 , y1 ), espera-se que: Os pixels correspondentes `s extremidades do segmento a sejam sempre selecionados
Dado um segmento de reta denido por suas extremidades (x0 , y0 ) e (x1 , y1 ), espera-se que: Os pixels correspondentes `s extremidades do segmento a sejam sempre selecionados Brilho e espessura uniformes, independentes da orientao ca e comprimento do segmento
Dado um segmento de reta denido por suas extremidades (x0 , y0 ) e (x1 , y1 ), espera-se que: Os pixels correspondentes `s extremidades do segmento a sejam sempre selecionados Brilho e espessura uniformes, independentes da orientao ca e comprimento do segmento Aparncia linear e cont e nua
Dado um segmento de reta denido por suas extremidades (x0 , y0 ) e (x1 , y1 ), espera-se que: Os pixels correspondentes `s extremidades do segmento a sejam sempre selecionados Brilho e espessura uniformes, independentes da orientao ca e comprimento do segmento Aparncia linear e cont e nua Rapidez
Dado um segmento de reta denido por suas extremidades (x0 , y0 ) e (x1 , y1 ), espera-se que: Os pixels correspondentes `s extremidades do segmento a sejam sempre selecionados Brilho e espessura uniformes, independentes da orientao ca e comprimento do segmento Aparncia linear e cont e nua Rapidez Deciso de projeto: a Segmentos devem ser desenhados com espessura igual a 1 pixel
Observao. ca Segmentos horizontais, verticais e a 45 graus so trivialmente a rasterizados Isto , dada a equao da reta de suporte y = mx + b, e ca m = (y1 y0 )/(x1 x0 ), temos:
Observao. ca Segmentos horizontais, verticais e a 45 graus so trivialmente a rasterizados Isto , dada a equao da reta de suporte y = mx + b, e ca m = (y1 y0 )/(x1 x0 ), temos: m = 0 ou m = 1: trivial
Observao. ca Segmentos horizontais, verticais e a 45 graus so trivialmente a rasterizados Isto , dada a equao da reta de suporte y = mx + b, e ca m = (y1 y0 )/(x1 x0 ), temos: m = 0 ou m = 1: trivial Caso contrrio, temos 8 casos a
45
Observao. ca Segmentos horizontais, verticais e a 45 graus so trivialmente a rasterizados Isto , dada a equao da reta de suporte y = mx + b, e ca m = (y1 y0 )/(x1 x0 ), temos: m = 0 ou m = 1: trivial Caso contrrio, temos 8 casos a
45
Algoritmo ingnuo e
Algoritmo ingnuo e
Algoritmo ingnuo e
p x1
Algoritmo ingnuo e
p x1
Algoritmo ingnuo e
Ideia: Incrementar em x e utilizar a equao da reta de suporte ca para calcular o valor de y y y1 yp y0 x0 xp yp y0 y1 y0 = xp x0 x1 x0 y1 y0 yp = y0 + (xp x0 ) x1 x0 p x1
Algoritmo ingnuo e
Ideia: Incrementar em x e utilizar a equao da reta de suporte ca para calcular o valor de y y y1 yp y0 x0 xp yp y0 y1 y0 = xp x0 x1 x0 y1 y0 yp = y0 + (xp x0 ) x1 x0 = y0 + m(xp x0 ) x1 x
Algoritmo ingnuo e
Pseudocdigo o m := (y1 y0 )/(x1 x0 ) para x := x0 at x1 , faa: e c y := y0 + m (x x0 ) Pinte pixel (x, y + 0.5 ) m para
Algoritmo ingnuo e
Pseudocdigo o m := (y1 y0 )/(x1 x0 ) para x := x0 at x1 , faa: e c y := y0 + m (x x0 ) Pinte pixel (x, y + 0.5 ) m para Algoritmo simples, porm: e Utiliza aritmtica de ponto utuante (m precisa ser real) e
Algoritmo ingnuo e
Pseudocdigo o m := (y1 y0 )/(x1 x0 ) para x := x0 at x1 , faa: e c y := y0 + m (x x0 ) Pinte pixel (x, y + 0.5 ) m para Algoritmo simples, porm: e Utiliza aritmtica de ponto utuante (m precisa ser real) e Suscept a erros de arrendondamento vel
Algoritmo ingnuo e
Pseudocdigo o m := (y1 y0 )/(x1 x0 ) para x := x0 at x1 , faa: e c y := y0 + m (x x0 ) Pinte pixel (x, y + 0.5 ) m para Algoritmo simples, porm: e Utiliza aritmtica de ponto utuante (m precisa ser real) e Suscept a erros de arrendondamento vel Implementao lenta ca
Utiliza a ideia do Digital Dierential Analyzer (DDA) para reduzir emprego de aritmtica de ponto utuante e
Pseudocdigo o x := x0 y := y0 m := (y1 y0 )/(x1 x0 ) Pinte pixel (x, y + 0.5 ) enquanto x x1 , faa: c x := x + 1 y := y + m Pinte pixel (x, y + 0.5 ) m enquanto
Pseudocdigo o x := x0 y := y0 m := (y1 y0 )/(x1 x0 ) Pinte pixel (x, y + 0.5 ) enquanto x x1 , faa: c x := x + 1 y := y + m Pinte pixel (x, y + 0.5 ) m enquanto Evita a multiplicao com ponto utuante, mas continua com ca operaes de adio e arredondamento co ca
Algoritmo de Bresenham
Um dos algoritmos clssicos da computao grca a ca a Emprega apenas aritmtica inteira e Algoritmo padro implementado em hardwares e softwares a de rasterizao ca
Algoritmo de Bresenham
Idia bsica. e a Se um pixel (i, j) pintado, ento o prximo pixel a ser e a o pintado o E(i, j) ou o NE(i, j) e
Algoritmo de Bresenham
Idia bsica. e a Se um pixel (i, j) pintado, ento o prximo pixel a ser e a o pintado o E(i, j) ou o NE(i, j) e
NO N NE
O SO S
E SE
Algoritmo de Bresenham
Idia bsica. e a Se um pixel (i, j) pintado, ento o prximo pixel a ser e a o pintado o E(i, j) ou o NE(i, j) e
ponto mdio e j
(i + 1, j + 1 ) 2
Algoritmo de Bresenham
Idia bsica. e a Se um pixel (i, j) pintado, ento o prximo pixel a ser e a o pintado o E(i, j) ou o NE(i, j) e Se segmento passa acima do ponto mdio, pinte o pixel a NE. e Seno, pinte o pixel a E a
ponto mdio e
(i + 1, j + 1 ) 2
Algoritmo de Bresenham
Predicado de deciso. a A equao do hiperplano am gerado por um segmento de reta ca pode ser utilizada para decidir em qual regio do plano um a ponto p est localizado a
Algoritmo de Bresenham
Predicado de deciso. a A equao do hiperplano am gerado por um segmento de reta ca pode ser utilizada para decidir em qual regio do plano um a ponto p est localizado a
F (x, y) = ax + by + c (x1 , y1 )
(x0 , y0 )
Algoritmo de Bresenham
Predicado de deciso. a A equao do hiperplano am gerado por um segmento de reta ca pode ser utilizada para decidir em qual regio do plano um a ponto p est localizado a
F (x, y) = ax + by + c F (x, y) > 0 (x1 , y1 )
(x0 , y0 )
Algoritmo de Bresenham
Predicado de deciso. a A equao do hiperplano am gerado por um segmento de reta ca pode ser utilizada para decidir em qual regio do plano um a ponto p est localizado a
F (x, y) = ax + by + c (x1 , y1 )
(x0 , y0 )
F (x, y) < 0
Algoritmo de Bresenham
Predicado de deciso. a A equao do hiperplano am gerado por um segmento de reta ca pode ser utilizada para decidir em qual regio do plano um a ponto p est localizado a
F (x, y) = ax + by + c (x1 , y1 ) F (x, y) = 0 (x0 , y0 )
Algoritmo de Bresenham
Predicado de deciso. a A equao do hiperplano am gerado por um segmento de reta ca pode ser utilizada para decidir em qual regio do plano um a ponto p est localizado a
F (x, y) = ax + by + c
Os coecientes so (ir ao quadro): a a = y0 y1 b = x1 x0 c = x0 y 1 x1 y 0
(x1 , y1 ) F (x, y) = 0
(x0 , y0 )
Algoritmo de Bresenham
Algoritmo de Bresenham
A grande sacada. A funo F (x, y) pode ser calculada iterativamente ca Existem duas situaes: co
Algoritmo de Bresenham
A grande sacada. A funo F (x, y) pode ser calculada iterativamente ca Existem duas situaes: co
pi+1
Algoritmo de Bresenham
A grande sacada. A funo F (x, y) pode ser calculada iterativamente ca Existem duas situaes: co
1 F (pi) = F (x, y + 1 ) = ax + b y + 2 + c 2
pi+1
Algoritmo de Bresenham
A grande sacada. A funo F (x, y) pode ser calculada iterativamente ca Existem duas situaes: co
1 F (pi) = F (x, y + 1 ) = ax + b y + 2 + c 2
pi+1
Algoritmo de Bresenham
A grande sacada. A funo F (x, y) pode ser calculada iterativamente ca Existem duas situaes: co
1 F (pi) = F (x, y + 1 ) = ax + b y + 2 + c 2
pi+1
Algoritmo de Bresenham
Pseudocdigo o a := y0 y1 b := x1 x0 F := a + b/2 y := y0 para x := x0 at x1 , faa: e c Pinte pixel (x, y) se F < 0, ento: a F := F + a + b y := y + 1 seno: a F := F + a m se m para
Algoritmo de Bresenham
Pseudocdigo o a := y0 y1 b := x1 x0 F := a + b/2 y := y0 para x := x0 at x1 , faa: e c Pinte pixel (x, y) se F < 0, ento: a F := F + a + b y := y + 1 seno: a F := F + a m se m para
Algoritmo de Bresenham
Pseudocdigo evitando a diviso o a a := y0 y1 Nmeros inteiros u b := x1 x0 F := 2 a + b y := y0 para x := x0 at x1 , faa: e c Pinte pixel (x, y) se F < 0, ento: a F := F + 2 (a + b) y := y + 1 seno: a F := F + 2 a m se m para