You are on page 1of 64

Raunalna grafika

Raunalna grafika
Grafiki cjevovod
Osnovni algoritmi rasterske grafike

Raunalna grafika

Grafiki sustav

Skup izlaznih potprograma koji odgovaraju razliitim


primitivnim oblicima, atributima i drugim elementima.

Potprogrami tvore biblioteku grafikih potprograma ili


grafiki paket

Mogu se pozivati iz programskih jezika visoke razine (C,


C++, C#, Pascal, LISP,).

Potprogrami pokreu prikazne ureaje i na taj nain


generiraju slikovni prikaz geometrijskih primitivnih oblika i
atributa specificiranih aplikacijskim programom.
2014/2015

Predavanje 3

Raunalna grafika

Grafiki sustavi rasterske grafike


-

GKS, SRGP, PHIGS, OpenGL,...

Aproksimiraju matematike (idealne) primitive opisanih


vrhovima u Kartezijevu koordinatnom sustavu, pomou
skupova piksela odgovarajue razine svjetloe i/ili boje.

Pikseli su pohranjeni kao bitovna matrica (bitmap) ili


matrica slikovnih elemenata (pixmap) u memoriju
centralnog procesora ili u meuspremnik okvira (frame
buffer).

2014/2015

Predavanje 3

Raunalna grafika

Grafiki sustavi rasterske grafike

Grafiki sustav kao posrednik izmeu aplikacijskog


programa i sklopovlja za prikaz slike

2014/2015

Predavanje 3

Raunalna grafika

Grafiki sustavi rasterske grafike


-

Procedure grafikog sustava koje se odnose na generiranje


primitiva specificiraju to treba generirati

Atributske procedure specificiraju kako e se generirati


primitivi

copyPixel procedura specificira kako e se slike


modificirati

Pocedure upravljanja canvasom specificiraju gdje e se


generirati slike.

2014/2015

Predavanje 3

Raunalna grafika

Grafiki sustavi rasterske grafike


-

Canvasi su bitmape ili pixmape koje se pohranjuju u


prikaznu memoriju.

Ekran - takoer canvas koji je poseban samo po tome to


je jedini canvas koji se prikazuje.

Da bi se slika pohranjena u canvasu prikazala, potrebno je


da aplikacija taj canvas kopira u ekranski canvas.

U nekom trenutku, samo jedan canvas moe biti aktivan.

To je canvas u koji se crtaju novi primitivi i na kojem se


primjenjuju promjene atributa.

2014/2015

Predavanje 3

Raunalna grafika

2014/2015

Predavanje 3

Grafiki sustav koji


pogoni dva tipa
prikaznih sustava:

a) Prikazno sklopovlje
s prikaznim
procesorom i
meuspremnikom
okvira;

b) Bez prikaznog
procesora,
meuspremnik okvira
je dio memorije
8

Raunalna grafika

Prikazni sustavi s meuspremnicima okvira i prikaznim


procesorima
Rastereenje:

prikazni procesor obavlja rasterizaciju (scan conversion)

prikazni procesor izravno obrauje primitive i atribute koje je


proslijedio grafiki sustav.

Grafiki sustav samo vri konverziju u njegovu internu


reprezentaciju primitiva, atributa i naina zapisa u formatima
u koje prihvaa prikazna periferija koja iscrtava primitive.
2014/2015

Predavanje 3

Raunalna grafika

Prikazni sustavi bez prikaznog procesora

grafiki sustav sam vri rasterizaciju u meuspremnik okvira i


neekranski canvas.

dijelovi memorije pripadaju meuspremniku okvira i


pohranjuju canvase kojima upravlja grafiki sustav.

ostatak memorije koriste ostali programi ukljuujui i sam


grafiki sustav.

2014/2015

Predavanje 3

10

Raunalna grafika

Grafiki protoni sustav (cjevovod)


Grafiki cjevovod : slijed koraka koji se primjenjuju kako bi se
realna ili virtualna 3D scena i objekti u njoj iscrtali na prikaznom
ureaju.
Obavljanje grafikih operacija po fiksnom redoslijedu.
Slika: pojednostavljeni grafiki protoni sustav.

2014/2015

Predavanje 3

11

Raunalna grafika

Grafiki protoni sustav (cjevovod)


Grafike aplikacije rade na
apstraktnom nivou i barataju
objektima
Podatci iz aplikacije predstavljaju
ulaz u grafiki cjevovod.
Podatci o objektima scene su
podatci o osnovnim geometrijskim
elementima i/ili krivuljama od kojih
se sastoje (vrhovi, veze meu
vrhovima, poloaj, boja, tekstura...).
2014/2015

Predavanje 3

Primjer koda: zadana 3


vrha trokuta (OpenGL)

12

Raunalna grafika

Grafiki protoni sustav (cjevovod)


Ulaz u grafiki cjevovod ine koordinate vrhova i ostali
parametri koji se postavljaju u grafikoj aplikaciji.
Svi ti parametri transformiraju se nizom matrica radi pravilnog
smjetanja u scenu, prorauna osvjetljenja i projekcije scene.
To je geometrijska faza

2014/2015

Predavanje 3

13

Raunalna grafika

Grafiki protoni sustav (cjevovod)


Rasterska faza:
1) Podfaza sakupljanja primitiva
Iz pojedinih vrhova slau se geometrijski
elementi .

Rezultat: razliiti elementi kao to su toke,


linije, trokuti i poligoni

2014/2015

Predavanje 3

14

Raunalna grafika

Grafiki protoni sustav (cjevovod)


Rasterska faza:
1) Podfaza sakupljanja primitiva
Elementi ili dijelovi elemenata moda e
biti odbaeni ako se ne nalaze u vidljivu
dijelu 3D prostora ili na osnovi toga je li im
lice, tj. ona strana poligona iz koje ide
normala vidljivo ili ne.

2014/2015

Predavanje 3

15

Raunalna grafika

Grafiki protoni sustav (cjevovod)


Rasterska faza:
2) Potfaza: rasterizacija - odreivanje prekrivenosti
geometrijskih elemenata slikovnim elementima
pikselima
Neki poligon - sitan da ne zauzima niti jedan jedini
piksel / velik pa zauzima velik broj piksela (moe i
itav zaslon).

2014/2015

Predavanje 3

16

Raunalna grafika

Grafiki protoni sustav (cjevovod)


Rasterska faza:
2) Potfaza: rasterizacija
Jo se ne radi o pikselima jer jo nije sigurno da e
se pojedini slikovni element i zapisati u
meuspremnik okvira.
Potencijalni slikovni elementi - fragmenti.

2014/2015

Predavanje 3

17

Raunalna grafika

Grafiki protoni sustav (cjevovod)


Rasterska faza:
3) Potfaza: preslikavanje tekstura na fragmente i
bojenje
Fragmentima se odreuje se boja na osnovi
tekstura i razliitih matematikih transformacija.

2014/2015

Predavanje 3

18

Raunalna grafika

Grafiki protoni sustav (cjevovod)


Rasterska faza:
4) Podfaza : rasterske operacije i testovi
razni testovi koje prolazi fragment da bi se utvrdilo da li e se
zapisati u memoriju.
test kara - odbacivanje fragmenata izvan eljenog pravokutnog dijela zaslona;

2014/2015

Predavanje 3

19

Raunalna grafika

Grafiki protoni sustav (cjevovod)


Rasterska faza:
4) Podfaza : rasterske operacije i testovi
test dubine - odbacivanje nevidljivih fragmenata;
alfa test odbacivanje/prihvaanje fragmenata temeljem alfa komponente
boje...)
razliite operacije vezane uz smjetanje fragmenata u spremnik okvira (npr.
odreivanje i mijeanje boje).

2014/2015

Predavanje 3

20

Raunalna grafika

Grafiki protoni sustav (cjevovod)


Rasterska faza:
4) Podfaza : rasterske operacije i testovi
Ako se fragment zapie u memoriju, tonije memorijski
spremnik okvira, on e postati slikovni element koji se prikazuje
na zaslonu.

2014/2015

Predavanje 3

21

Raunalna grafika

Grafiki cjevovod programirljivog sklopovlja


Grafiko sklopovlje poinje se prvo koristiti za ubrzavanje
dijelova grafike protone strukture odnosno grafikog
cjevovoda.
Grafiki cjevovod u potpunosti prelazi na grafiku procesorsku
jedinicu (GPU)

Nakon toga - programabilnost


Programabilnost - od potpuno fiksnog sustava prema potpuno
programabilnom grafikom procesoru s procesorskim
elementima.
2014/2015

Predavanje 3

23

Raunalna grafika

Grafiki cjevovod programirljivog sklopovlja


Osnovna razlika : na postojee sklopovlje dodaju se dva
procesora (1 za vrhove, 1 za fragmente).

2014/2015

Predavanje 3

24

Raunalna grafika

Grafiki cjevovod programirljivog sklopovlja


Procesor vrhova zamjenjuje transformacije vrhova izvedene
sklopovski ostvarenim funkcijama.

Sve transformacije se moraju izvesti na procesoru vrhova ili


sklopovski ostvarenim funkcijama.
Analogno vrijedi i za procesor fragmenata.

2014/2015

Predavanje 3

25

Raunalna grafika

Grafiki cjevovod programirljivog sklopovlja


Analogno vrijedi i za procesor fragmenata.
Transformacija vrhova odvojena faza od transformacije
fragmenata - one se mogu odvijati nezavisno (paralelno).

2014/2015

Predavanje 3

26

Raunalna grafika

Grafiki cjevovod programirljivog sklopovlja


Broj procesora za fragmente vei je od broja procesora za
vrhove.
Napomena: Dio grafikih operacija i dalje iskljuivo pomou sklopovski
ostvarenih funkcija (dio sakupljanja primitiva i rasterizacije, interpolacije te
dio rasterskih operacija).

2014/2015

Predavanje 3

27

Raunalna grafika

GPU cjevovod

Program/
API
Driver
CPU

Bus
GPU
GPU Front End

Geometrijska
faza

Sakupljanje
primitiva

Rasterizacija &
Interpolacija

Obrada
fragmenata
Rasterske
operacije
Meuspremnik
okvira

2014/2015

Predavanje 3

28

Program/
API

Raunalna grafika

GPU cjevovod
Program
Napisani program
API
Suelje za OpenGL ili DirectX

2014/2015

Predavanje 3

29

GPU Front End

Raunalna grafika

GPU cjevovod
GPU Front End
Prima naredbe i podatke od drivera

2014/2015

Predavanje 3

30

Geometrijska
faza

Raunalna grafika

Obrada vrhova (geometrijska faza)


Uobiajeno: transformacije
Programabilno
Podaci za rasterizaciju

vrhovi
POSITION,
NORMAL,
BINORMAL*,
TANGENT*,
TEXCOORD[0-7],
COLOR[0-1],
PSIZE

POSITION
PSIZE
Vertex
Processor
shader

FOG
TEXCOORD[0-7]
COLOR[0-1]
Podaci za interpolaciju

teksture
2014/2015

Predavanje 3

31

Rasterske
operacije

Raunalna grafika

GPU cjevovod
Ispitivanje dubine
Provjeri meuspremnik okvira: postoje li ve manje
dubine (Z-Buffer)
Ograniena programabilnost
Mijeanje (Blending)
Koristi alfa kanal za kombiniranje boja koje se ve
nalaze u meuspremniku okvira
Ograniena programabilnost

2014/2015

Predavanje 3

32

Raunalna grafika

Primjer

Program/
API

Dio koda
Driver
.

Bus

GPU Front End

Geometrijska
faza

glBegin(GL_TRIANGLES);
glTexCoord2f(1,0); glVertex3f(0,1,0);
glTexCoord2f(0,1); glVertex3f(-1,-1,0);
glTexCoord2f(0,0); glVertex3f(1,-1,0);
glEnd();

Sakupljanje
primitiva
Rasterizacija &
Interpolacija
2014/2015

Obrada
fragmenata

Rasterske
operacije
Predavanje 3

Meuspremnik
okvira*
33

Raunalna grafika

Primjer

Program/
API
Driver

GPU

Bus

01001001100.

GPU Front End

Geometrijska
faza
Sakupljanje
primitiva
Rasterizacija &
Interpolacija
2014/2015

Obrada
fragmenata

Rasterske
operacije
Predavanje 3

Meuspremnik
okvira*
34

Raunalna grafika

Primjer

Program/
API
Driver
Bus

GPU Front End

Geometrijska
faza

Volumen pogleda

Sakupljanje
primitiva
Rasterizacija &
Interpolacija
2014/2015

Obrada
fragmenata

Rasterske
operacije
Predavanje 3

Meuspremnik
okvira*
35

Raunalna grafika

Primjer

Program/
API
Driver
Bus

GPU Front End

Geometrijska
faza
Prostor zaslona

Sakupljanje
primitiva
Rasterizacija &
Interpolacija
2014/2015

Obrada
fragmenata

Rasterske
operacije
Predavanje 3

Meuspremnik
okvira*
36

Raunalna grafika

Primjer

Program/
API
Driver
Bus

GPU Front End

Geometrijska
faza
Meuspremnik okvira

Sakupljanje
primitiva
Rasterization &
Interpolation
2014/2015

Obrada
fragmenata

Rasterske
operacije
Predavanje 3

Meuspremnik
okvira*
37

Raunalna grafika

Primjer

Program/
API
Driver
Bus

GPU Front End

Geometrijska
faza
Meuspremnik okvira

Sakupljanje
primitiva
Rasterization &
Interpolation
2014/2015

Obrada
fragmenata

Rasterske
operacije
Predavanje 3

Meuspremnik
okvira*
38

Raunalna grafika

Osnovni algoritmi rasterske grafike

2014/2015

Predavanje 3

39

Raunalna grafika

Rasterski prikaz
Osnovni problem:

crtanje kose ravne crte irine jednog piksela na


dvorazinskom rasterskom prikaznom ureaju.

2014/2015

Predavanje 3

40

Raunalna grafika

Rasterski prikaz ravnih crta


Algoritmi za rasterski prikaz ravnih crta proraunavaju
koordinate piksela na 2D rasteru koji su najblii idealnoj,
beskonano uskoj ravnoj crti.
Poeljne znaajke prikazane ravne crte ukljuuju:

jednolik intenzitet crte itavom duinom,

jednolik intenzitet crte neovisno o nagibu,

mogunost proizvoljnog odabira irine crte,

mogunost proizvoljnog oblikovanja krajeva,

2014/2015

Predavanje 3

41

Raunalna grafika

Rasterski prikaz ravnih crta


Osnovni inkrementalni algoritam

najjednostavniji pristup

proraun piksel po piksel na osnovi eksplicitnog oblika


jednadbe pravca.

2014/2015

Predavanje 3

42

Raunalna grafika

Rasterski prikaz ravnih crta


Osnovni inkrementalni algoritam

Algoritam:
1. proraun nagiba pravca (|m| < 1)

2. proraun nove vrijednosti xi poveanjem prethodne


vrijednosti za 1
3. proraun vrijednosti
4. isticanje piksela (xi, Round(yi)) gdje je Round(yi) = Floor
(0.5 + yi).
2014/2015

Predavanje 3

43

Raunalna grafika

Rasterski prikaz ravnih crta


Osnovni inkrementalni algoritam

odabire toke koje su najmanje udaljene od idealne crte

nije uinkovit jer se u svakoj iteraciji obavljaju operacije


mnoenja i zbrajanja s realnim ili (racionalnim) brojevima
kao i poziv funkcije Floor.

2014/2015

Predavanje 3

44

Raunalna grafika

Rasterski prikaz ravnih crta


Osnovni inkrementalni algoritam
Primjer:
Primjenom osnovnog
inkrementalnog algoritma odredite
niz piksela koji aproksimiraju
ravnu crtu povezuje toke (5,8) i
(10,11)

2014/2015

Predavanje 3

45

Raunalna grafika

Rasterski prikaz ravnih crta


Digitalni diferencijalni analizator (DDA)
izbjegava mnoenje realnih brojeva
izraz za proraun vrijednosti koordinate y :

yi 1 mxi 1 B m( xi x) B yi m x

x 1

y i 1 y i m

ako je |m| > 1 mijenjaju se uloge x i y koordinata u


algoritmu
2014/2015

Predavanje 3

46

Raunalna grafika

Rasterski prikaz ravnih crta


Digitalni diferencijalni analizator (DDA)
Nedostatak:
zbog nepreciznosti prikaza realnih brojeva u digitalnim
procesorima dodavanje ne sasvim tone vrijednosti unosi
kumulativnu pogreku i otklon od stvarne vrijednosti
za kratke crte razina pogreke je prihvatljiva

2014/2015

Predavanje 3

47

Raunalna grafika

Rasterski prikaz ravnih crta


Digitalni diferencijalni analizator (DDA)
void Crta(
int x0, int y0,
int x1, int y1,
int value)
{
int x;

/* Pretpostavka: -1 m1, x0 < x1 */


/* Lijeva krajnja toka */
/* Desna krajnja toka */
/* Vrijednost koju poprimaju pikseli linije */
/* vrijednost x ide od x0 do x1 korak: +1 */

double dy = y1 y0;
double dx = x1 x0;
double m = dy / dx;
double y = y0;
for (x = x0; x <= x1; x++) {
WritePixel (x, Round (y), value);
y += m;
}
/* Crta */
2014/2015

/* Postavi piksel u vrijednost - value */


/* Poveaj y za nagib m */

Predavanje 3

48

Raunalna grafika

Rasterski prikaz ravnih crta


Digitalni diferencijalni analizator (DDA)

Round(y)

2.0

2.0

3.0

2.8

4.0

3.6

5.0

4.4

6.0

5.2

7.0

6.0

Rezultat izvravanja DDA algoritma: Crta(2,2,7,6,120)

2014/2015

Predavanje 3

49

Raunalna grafika

Rasterski prikaz ravnih crta


Algoritam sredinje toke

Pretpostavka: nagib pravca izmeu 0 i 1

Za pravce s nagibima izvan ovog intervala


primjenjuje se tehnika zrcaljenja oko koordinatnih
osi.
Pravac se preslikava u odgovarajui pravac s
nagibom unutar navedenog intervala

Samo inkrementiranje i cjelobrojno procesiranje


2014/2015

Predavanje 3

50

Raunalna grafika

Rasterski prikaz ravnih crta


Algoritam sredinje toke

P: posljednja odabrana toka


Izbor izmeu dviju moguih
toaka:D i GD
S : toka polovita duine koja
povezuje toke D i GD
1. S ispod idealnog pravca GD blia idealnom pravcu.
2. S iznad idealnog pravca - D
blia idealnom pravcu.
Primjene algoritma sredinje toke za crtanje ravne crte
2014/2015

Predavanje 3

51

Raunalna grafika

Rasterski prikaz ravnih crta

Algoritam sredinje toke


Koristimo implicitni oblik pravca:

axi byi c 0
axi byi c 0
axi byi c 0

xi , yi
xi , yi
xi , yi

Na pravcu
Iznad pravca
Ispod pravca

U svakoj iteraciji utvrdimo da li je sred.toka iznad ili ispod


pravca
1

a
x

b
y

i
c
Ispitaj vrijednost od:
i
i

di - varijabla odluke u i tom koraku

2014/2015

Predavanje 3

52

Raunalna grafika

Rasterski prikaz ravnih crta


Algoritam sredinje toke

void SredCrta(int x0, int y0, int x1, int y1, int value)
{
int dx = x1 x0;
int dy = y1 y0;
int d = 2 * dy dx;/* poetna vrijednost za d */
int incrD = 2 * dy;/* poveanje za pomak u D */
int incrGD = 2 * (dy dx);/* poveanje za pomak u GD */
int x = x0;
int y = y0;
2014/2015

Predavanje 3

53

Raunalna grafika

Algoritam sredinje toke


WritePixel (x, y, value);/* Poetni piksel */
while (x < x1) {

if (d <= 0) {/* Izaberi D */


d += incrD;
x++;
} else {/* Izaberi GD */
d += incrGD;

x++;
y++;
}
WritePixel (x, y, value);/* Izabrani piksel najblii liniji */
} /* while */
}/* SredCrta */
2014/2015

Predavanje 3

54

Raunalna grafika

Rasterski prikaz krunice

Osnovna jednadba krunice sa ishoditem koordinatnog


sustava smjetenom u njenom sreditu je:
x2 + y 2 = r2
Eksplicitno izrazimo y:
y r 2 x2

2014/2015

Predavanje 3

55

Raunalna grafika

Rasterski prikaz krunice


1. Nacrtamo etvrtinu
krunice
2. Poveavanjem
vrijednosti x-a od 0
do r u jedininim
koracima
izraunavamo
+y
rjeenje za svaki
korak.

2014/2015

Predavanje 3

56

Raunalna grafika

Rasterski prikaz krunice


Nedostatci:

raunski zahtjevna uzastupna izraunavanja kvadratnog


korijena
kako vrijednost x-a postaje blia krajnjoj vrijednosti
r,
toke na krunici e biti sve razmaknutije

2014/2015

Predavanje 3

57

Raunalna grafika

Rasterski prikaz krunice

Drugi pristup:

crtanjem toaka s koordinatama (rcos,


poveavanjem vrijednosti kuta od 0 do 90

Ovaj nain je takoer spor

2014/2015

Predavanje 3

rsin)

58

Raunalna grafika

Rasterski prikaz krunice


Osmosmjerna simetrija

2014/2015

Predavanje 3

59

Raunalna grafika

Rasterski prikaz krunice


Osmosmjerna simetrija
void TockeKruznice(int x, int y, int value)
{
WritePixel(x, y, value);
WritePixel(y, x, value);
WritePixel(y, -x, value);
WritePixel(x, -y, value);
WritePixel(-x, -y, value);
WritePixel(-y, -x, value);
WritePixel(-y, x, value);
WritePixel(-x, y, value);
} /* TockeKruznice */

2014/2015

Predavanje 3

60

Raunalna grafika

Rasterski prikaz krunice


Algoritam sredinje toke za krunice
Koristimo simetriju pa razmatramo samo segment od 45,
npr. drugi oktant
r/ 2

Kao i kod tehnike sredinje toke za rasterski prikaz ravne


crte, strategija se zasniva na odabiru koji je od dva piksela
blii krunici tako to se procijeni funkcija na sredini izmeu
ta dva piksela.

2014/2015

Predavanje 3

61

Raunalna grafika

Rasterski prikaz krunice


Algoritam sredinje toke za krunice
2

2
d i xi 1 yi r 2
2

r/ 2

Ako je di < 0 izabiremo piksel A, inae B


2014/2015

Predavanje 3

62

Raunalna grafika

Rasterski prikaz krunice


Algoritam sredinje toke za krunice

r/ 2

Ponovo, na osnovu izbora toke A ili B se moe koristiti za


izraun nove vrijednosti di+1
Ako je izabran A onda slijedea sredinja toka ima vrijednost
varijable odluke:
2

1
1

2
2

2
,
y

r
i

i
i 1
i
2
2

d i 2 xi 3

2014/2015

Predavanje 3

63

Raunalna grafika

Rasterski prikaz krunice


Algoritam sredinje toke za krunice
Inae, ako je bio izabran B varijabla odluke se izraunava iz:

r/ 2

3
3

2
2
xi 2, yi d i 1 xi 2 yi r
2
2

d i 2 xi 2 yi 5

2014/2015

Predavanje 3

64

Raunalna grafika

Rasterski prikaz krunice


Algoritam sredinje toke za krunice
Ako pretpostavimo da je radijus cjelobrojna vrijednost, prvi
nacrtani piksel e biti (0, r) a poetna vrijednost za varijablu
odluke je:

1
1 2

2
1, r d 0 1 r r r
2
4

5
r
4

2014/2015

Predavanje 3

65

Raunalna grafika

Algoritam sredinje toke za krunice


void SredTocKruznica (int radius, int value)
/* pretpostavljamo da je centar krunice u ishoditu koord.sustava */
{
int x = 0;
int y = radius;
double d = 5.0 / 4.0 radius;
CirclePoints (x, y, value);
while (y > x) {
if (d < 0)/* izaberi A */
d += 2.0 * x + 3.0;
else {/* izaberi B */
d += 2.0 * (x y) + 5.0;
y;
}
x++;
TockeKruznice(x, y, value);
}/* while */
}/* SredTocKruznica */
2014/2015

Predavanje 3

69

You might also like