You are on page 1of 67

Computao Grca ca a

Aula 24: Rasterizao ca

Vicente Helano Feitosa Batista Sobrinho Faculdade Para do Cear so a Sistemas de Informao ca 1o. semestre de 2011

Renderizao ca

Dispositivos raster predominam no mercado

LCD

CRT

Renderizao ca

Dispositivos raster predominam no mercado


Fonte: http://en.wikipedia.orgwiki/Cowboys_Stadium

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

Mtodos clssicos de renderizao e a ca Traado de raios (ray tracing ) c Rasterizao (rasterization) ca

Renderizao ca

Mtodos clssicos de renderizao e a ca


Traado de raios c Rasterizao ca

Elevado grau de realismo

Aproxima-se da realidade

Renderizao ca

Mtodos clssicos de renderizao e a ca


Traado de raios c Rasterizao ca

Elevado grau de realismo Custo elevado

Aproxima-se da realidade Rpido a

Renderizao ca

Mtodos clssicos de renderizao e a ca


Traado de raios c Rasterizao ca

Elevado grau de realismo Custo elevado Aplicaes co no-interativas a

Aproxima-se da realidade Rpido a Ambientes interativos

Renderizao ca

Mtodos clssicos de renderizao e a ca


Traado de raios c Rasterizao ca

Elevado grau de realismo Custo elevado Aplicaes co no-interativas a Pixel-a-pixel

Aproxima-se da realidade Rpido a Ambientes interativos Objeto-a-objeto

Renderizao ca

Mtodos clssicos de renderizao e a ca


Traado de raios c

Abordado neste curso


Rasterizao ca

Elevado grau de realismo Custo elevado Aplicaes co no-interativas a Pixel-a-pixel

Aproxima-se da realidade Rpido a Ambientes interativos Objeto-a-objeto

Renderizao ca

Pipeline grco (bsico) de renderizao por varredura a a ca


Modelo Iluminao ca Projeo Ortogrca ca a ou Perspectiva

Recorte

Rasterizao ca

Operaes em co fragmentos

Framebuer

O que veremos hoje?

Modelo

Iluminao ca

Projeo Ortogrca ca a ou Perspectiva

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

Coordenadas da tela (w, h)

(0, 0)

x xi , yi R

O problema de rasterizao ca

Reticulado de pixels subjacentes

O problema de rasterizao ca

Reticulado de pixels subjacentes (w, h)

(0, 0)

Um pixel dado por e um par de nmeros u inteiros

12

Exemplo de rasterizao ca

Exemplo de rasterizao ca

Exemplo de rasterizao ca

Rasterizao de segmentos de reta ca

Dado um segmento de reta denido por suas extremidades (x0 , y0 ) e (x1 , y1 ), espera-se que:

Rasterizao de segmentos de reta ca

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

Rasterizao de segmentos de reta ca

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

Rasterizao de segmentos de reta ca

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

Rasterizao de segmentos de reta ca

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

Rasterizao de segmentos de reta ca

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

Rasterizao de segmentos de reta ca

Observao. ca Segmentos horizontais, verticais e a 45 graus so trivialmente a rasterizados

Rasterizao de segmentos de reta ca

Observao. ca Segmentos horizontais, verticais e a 45 graus so trivialmente a rasterizados

Rasterizao de segmentos de reta ca

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:

Rasterizao de segmentos de reta ca

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

Rasterizao de segmentos de reta ca

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

Rasterizao de segmentos de reta ca

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

Basta considerar o 1o octante

Algoritmo ingnuo e

Ideia: Incrementar em x e utilizar a equao da reta de suporte ca para calcular o valor de y

Algoritmo ingnuo e

Ideia: Incrementar em x e utilizar a equao da reta de suporte ca para calcular o valor de y y y1 y0 x0 x1 x

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

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

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

Algoritmo incremental (DDA)

Utiliza a ideia do Digital Dierential Analyzer (DDA) para reduzir emprego de aritmtica de ponto utuante e

Algoritmo incremental (DDA)

Observao. ca Um incremento unitrio em x implica em um incremento de m a unidades em y

Algoritmo incremental (DDA)

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

Algoritmo incremental (DDA)

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

A grande sacada. A funo F (x, y) pode ser calculada iterativamente ca

Algoritmo de Bresenham

A grande sacada. A funo F (x, y) pode ser calculada iterativamente ca Existem duas situaes: co

Pixel selecionado anteriormente estava abaixo do ponto mdio e

y+1 pi y+1 2 y x x+1 x x+1 pi

Pixel selecionado anteriormente estava acima do ponto mdio e

Algoritmo de Bresenham

A grande sacada. A funo F (x, y) pode ser calculada iterativamente ca Existem duas situaes: co
pi+1

Pixel selecionado anteriormente estava abaixo do ponto mdio e

y+1 pi pi+1 y+1 2 y x x+1 x x+1 pi

Pixel selecionado anteriormente estava acima do ponto mdio e

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

Pixel selecionado anteriormente estava abaixo do ponto mdio e

y+1 pi pi+1 y+1 2 y x x+1 x x+1 pi

Pixel selecionado anteriormente estava acima do ponto mdio e

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

Pixel selecionado anteriormente estava abaixo do ponto mdio e

y+1 pi pi+1 y+1 2 y x x+1 x x+1 pi

Pixel selecionado anteriormente estava acima do ponto mdio e

1 F (pi+1) = F (x + 1, y + ) 2 = a(x + 1) + b y + = F (pi) + a 1 2 +c

1 F (pi+1) = F (x + 1, y + 1 + ) 2 = a(x + 1) + b y + 1 + = F (pi) + a + b 1 2 +c

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

Pixel selecionado anteriormente estava abaixo do ponto mdio e

y+1 pi pi+1 y+1 2 y x x+1 x x+1 pi

Pixel selecionado anteriormente estava acima do ponto mdio e

O algoritmo iniciar com: a 1 1 F (x0 + 1, y0 + ) = a(x0 + 1) + b y0 + 2 2 = a + b/2 +c

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