funkce deckles

Transkript

funkce deckles
Zobrazovací řetězec a obrazová
paměť, operace s fragmenty
Petr Felkel
Katedra počítačové grafiky a interakce, ČVUT FEL
místnost KN:E-413 na Karlově náměstí
E-mail: [email protected]
S použitím materiálů Bohuslava Hudce, Jaroslava Sloupa a
úprav Vlastimila Havrana
Poslední změna: 16.2.2015
Zobrazovací řetězec – tok dat (data flow)
Obrázek převzat od Davida Ambrože
PGR
2
Od vrcholu k fragmentu
Obrázek převzat od Davida Ambrože
PGR
3
Od vrcholu k fragmentu
 Po průchodu vertex shaderem vstupují vrcholy do fixní
části zobrazovacího řetězce
•
•
•
•
•
sestavení primitiva (primitive assembly)
ořezání do pohledového jehlanu (clipping)
převod z homogenních souřadnic (Divide-by-W)
umístění na obrazovku (Viewport)
Rasterizace a interpolace (Rasterizer)
 Pak následuje fragment shader
•
•
PGR
V něm se spočítá výsledná barva fragmentu
Fragment jsou všechna data adresovaná souřadnicemi
jednoho konkrétního pixelu, viz dále.
5
Od vrcholu k fragmentu
[Gortler]
PGR
6
Ořezání (clipping)
 Ořezání odstraní geometrii mimo
pohledový jehlan (viewing frustrum)
- top, bottom, left, right, near, far
 Šetří se tím rasterizace a výpočty
(nepočítá se to, co není vidět)
 Vznikají nové vrcholy
[www.willamette.edu]
 Odstraní se části primitiv za kamerou
PGR
[http://techpubs.sgi.com]
7
Odstranění části primitiv za kamerou
Trojúhelník z boku
Vrchol za kamerou
chybně
správně
Vykreslujeme totiž fragmenty
mezi průměty koncových bodů
• Dělení
překlopí oba vrcholy
do stejné průmětny
správně po ořezání
PGR
8
Ve kterých souřadnicích ořezávat?
 V souřadnicích kamery?
=> Ne, ještě neproběhla projekce.
 V normalizovaných souřadnicích?
=> Ne, již došlo k překlopení (proběhlo dělení
)
 V ořezových souřadnicích (clip-space)
=> ANO – ještě nedošlo k dělení , trojúhelník je ve 4D
Pozice i atributy nových vrcholů se počítají v ořezových
souřadnicích – a lineárně interpolují z původních vrcholuů
PGR
9
Eliminace odvrácených (Backface culling)
 U uzavřených těles (watertight)
nikdy nevidíme odvrácenou
stěnu
 Vrcholy zadáváme proti směru
hodinových ručiček (ccw)
 Pak stačí vyřadit plošky s
odvrácenou normálou
[flylib.com]
back face = if( .
front
PGR
)
back
10
Viewport
 Matice transformace záběru (pracoviště) …viz předn. 05
2
1
0
0
0
0
0
2
0
0
0
1
2
0
1
2
1
Normalizované souřadnice
zařízení [xd yd zd ]t
2 2 1
Souřadnice formátu na obrazovce
[xw yw zw ]t
1
w
1
-1
-1
PGR
-1
1
o
viewport
y
x y
screen
1
h
0
11
Pixel coordinates
levý dolní
roh okna
y–ová souřadnice okna
3.0
Souřadnice pixelu = souřadnice
jeho levého dolního rohu
- pixel (x, y) pokrývá plochu mezi
x,y a x+1, y+1
2.0
region occupied
by a pixel (2, 1)
1.0
0.0
0.0
1.0
2.0
3.0
X-ová souřadnice okna
PGR
12
Rasterizace
PGR
13
Zobrazovací řetězec – tok dat (data flow)
Obrázek převzat od Davida Ambrože
PGR
14
Obrazová paměť – framebuffer dříve ≤ 3.3
Součásti (vrstvy, roviny) obrazové paměti
akumulační (accum.)
šablona (stencil)
hloubka (depth)
barva (AUXi)
barva (BACK-LEFT)
barva (FRONT-LEFT)
minimum
barva (BACK-RIGHT)
barva (FRONT-RIGHT)
Pixel v různých rovinách obrazové paměti
PGR
15
Obrazová paměť – framebuffer nyní ≥ 4.0
Součásti (vrstvy, roviny) obrazové paměti
minimum
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)
barva (FRONT-LEFT)
barva (BACK-RIGHT)
barva (FRONT-RIGHT)
Pixel v různých rovinách obrazové paměti
PGR
16
Paměť barvy - color buffer (1)
Barva
 RGB(A)
 Kreslí se do ní
neviditelné
viditelné
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)
barva (FRONT-LEFT)
barva (BACK-RIGHT)
barva (FRONT-RIGHT)
Pixel v různých rovinách obrazové paměti
PGR
17
Paměť barvy - color buffer (2)

Minimální konfigurace OpenGL - FRONT_LEFT
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)

Stereo, double buffer - podporován?
barva (FRONT-LEFT)
barva (BACK-RIGHT)
barva (FRONT-RIGHT)
glGetBooleanv( GL_STEREO, &b );
glGetBooleanv( GL_DOUBLEBUFFER, &b );

Výběr, kam se kreslí barva fragmentů
glDrawBuffer( GLenum mode );
// … jedna paměť
• GL_NONE,
… „nekreslí se“ nic
• GL_FRONT_LEFT, GL_FRONT_RIGHT,
GL_BACK_LEFT, GL_BACK_RIGHT,
… jedna paměť
glDrawBuffers(GLsizei n, const GLenum * bufs);
// n – pamětí – multiple rendering targets
• GL_COLOR_ATTACHMENTn
… pro FBO
(framebuffer object)
PGR
18
Paměť barvy - color buffer (3)
Barva v BACK bufferu
•
•
•

barva (BACK-RIGHT)
barva (FRONT-RIGHT)
Kreslí se do ní na pozadí (není vidět)
Přepíná se s FRONT bufferem
– glutSwapBuffers ()
Mono:
glDrawBuffer(GL_BACK_LEFT); // GL_BACK
Stereo: glDrawBuffer(GL_BACK_LEFT); cameraL();draw();
glDrawBuffer(GL_BACK_RIGHT);cameraR();draw();
Výběr zdroje pro čtení glCopyPixels()
•
PGR
barva (FRONT-LEFT)
Výběr roviny na kreslení
•
•

RGB(A),
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)
glReadBuffer(GL_BACK_LEFT);
19
Paměť hloubky – depth buffer (1)
akumulační(accum.)
Hloubka (depth-, Z-buffer)
•
•
vzdálenost oko-pixel
typické použití: viditelnost
šablona (stencil)
hloubka (depth)
barva (AUXi)
barva (BACK-LEFT)
barva (FRONT-LEFT)
(vzdálenější pixel je přepsán bližším)
Blízká tělesa zakrývají vzdálená tělesa

Bližší fragmenty překreslí ty vzdálenější

Fragmenty, které jsou dále se zahodí
(stejně by nebyly vidět)
Lze řešit viditelnost bez paměti hloubky?
[ from Wikipedia ]
PGR
20
Paměť hloubky – depth buffer (2)
Hloubka (depth)
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)
barva (FRONT-LEFT)
barva (BACK-RIGHT)
barva (FRONT-RIGHT)
 Nastavení v programu při výběru kontextu
glutInitDisplayMode(… | GLUT_DEPTH | …);
glEnable( GL_DEPTH_TEST ); // zapnutí hloubkového testu
glDepthMask( GL_TRUE );
// povolení aktualizace
 Použití – viz dále
glClear( ….| GL_DEPTH_BUFFER_BIT | … ); // smazání
DrawObjectsInTheScene();
…
PGR
21
Pamět hloubky – depth buffer (3)
void glDepthFunc( GLenum func )
func – funkce pro porovnávání (novéZ fragmentu s uloženouZ pixelu)
GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL, GL_GREATER,
GL_NOTEQUAL, GL_GEQUAL, a GL_ALWAYS
void glEnable( GL_DEPTH_TEST );
// zapnutí hloubkového testu
void glDepthMask( GLboolean flag )
flag - význam
// povolení aktualizace paměti
// hloubky
GL_FALSE – zápis zakázán
GL_TRUE – zápis povolen
void glDepthRange( GLclampd zNear, GLclampd zFar )
transformace do z-ových souřadnic okna
normalizované souřadnice z -1, 1 => zokna 0, 1 - rozsah jako barva
zNear => 0, zFar => 1 !!!
PGR
22
Šablona - stencil
Se šablonou
bez šablony
[Sulaco]
[O Reilly]
PGR
23
Šablona - stencil
Šablona (stencil)
•
•
•
•
•
lze označit pixely, kam se smí / nesmí kreslit
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)
barva (FRONT-LEFT)
barva (BACK-RIGH
barva (FRONT-RIGHT
jedna či více bitových rovin (bitplane)
pomocí masky se zvolí bitová rovina
přímo se nekreslí (dle paměti barvy)
používá se ve víceprůchodových algoritmech pro speciální
efekty:
 obtisky (decals),
 získání obrysu (outlining),
 odrazy (v zrcadle, ve vodě),
 a zobrazování CSG modelů (constructive solid
geometry).
PGR
24
Zobrazovací řetězec – tok dat (data flow)
Obrázek převzat od Davida Ambrože
PGR
25
Počet bitových rovin - bitplanes
Color buffer:
[r,g,b,a] = [8, 8, 8, 8] bits
Depth buffer:
depth = 24 bits
Stencil buffer:
8 bits
Auxiliary color buffers: 4
Double buffer:
supported
Stereo:
not supported
Inicializace v GLUTu
glutInitDisplayMode(
|
|
|
);
PGR
GLUT_RGB
GLUT_DEPTH
GLUT_STENCIL
GLUT_DOUBLE
//
//
//
//
only RGB, no alpha
depth buffer
stencil buffer
double buffer(front + back)
26
Mazání pamětí (buffers) pro vykreslování
Smazání vybraných pamětí
void glClear( GLbitfield mask );
mask – které paměti smazat
•
•
•
PGR
GL_COLOR_BUFFER_BIT,
GL_DEPTH_BUFFER_BIT,
GL_STENCIL_BUFFER_BIT,
27
Mazání pamětí
Nastavení „mazací“ hodnoty pro jednotlivé roviny
void glClearColor( GLclampf red,
GLclampf green,
GLclampf blue,
GLclampf alpha );
void glClearDepth( GLclampd h );
void glClearStencil( GLint s );
Hloubka h je z intervalu <0,1>. Implicitní hodnota h = 1.0 ~ zFar
Ostatní parametry mají implicitní hodnotu 0, resp 0.0f.
PGR
28
Maskování zápisu do obrazové paměti
Do paměti se zapíše, jen pokud je to povoleno maskou
Nastavení masky
(true zapisuje, false ne)
void glColorMask( GLboolean
GLboolean
GLboolean
GLboolean
red,
green,
blue,
alpha );
void glDepthMask( GLboolean flag );
void glStencilMask( GLuint mask );
Implicitně všechny na GL_TRUE a GLuint na samé jedničky
PGR
29
Zobrazovací řetězec – tok dat (data flow)
Obrázek převzat od Davida Ambrože
PGR
30
Testování fragmentů
Po rasterizaci víme, které fragmenty vznikly, jakou mají barvu,
hloubku, případně i další informace - normálu, vektor ke světlu,…
(fragmenty = možné budoucí pixely s hloubkou, barvou,…)
Fragment musí projít ještě řadu testů a operací
…. na konci je obrazová paměť (color, depth, stencil)
Test
– povolí či zakáže daný fragment
– může změnit hodnotu příslušné paměti
test hloubky = aktualizuje hloubku pixelu
test šablony = změní hodnotu v šabloně
PGR
31
Testování fragmentů a operace s fragmenty
Enable/Disable
Scissor test
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)
barva (FRONT-LEFT)
PGR
barva (BACK-RIGHT)
barva (FRONT-RIGHT)
32
Testování fragmentů a operace s fragmenty
1. Výstřižek (Scissor test)
2. Test šablony (Stencil test)
3 testy
3. Test hloubky (Depth test)
4. Míchání (Blending)
5. Logické operace
PGR
2 operace
33
1. test: Výstřižek (scissor test)
(1)
Enable/Disable
Scissor test
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)
barva (FRONT-LEFT)
PGR
barva (BACK-RIGHT)
barva (FRONT-RIGHT)
34
1. test: Výstřižek (scissor test)
(2)
Kreslení pouze do obdélníkové oblasti okna

rychlá verze šablony (stencil)

Update changed part of the screen only
void glScissor( GLint x, GLint y,
y
h
w
GLsizei w, GLsizei h )
x, y dolní levý roh
x
w, h šířka a výška
glEnable( GL_SCISSOR );
PGR
35
3. test – Hloubkový test (depth test)
(1)
Enable/Disable
Scissor test
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)
barva (FRONT-LEFT)
PGR
barva (BACK-RIGHT)
barva (FRONT-RIGHT)
36
3. test – Hloubkový test (depth test)
(2)
Pro každý pixel uložena vzdálenost k oku
if( depth_test_passes )
propusť pixel a nahraď hloubku novou hodnotou
Režimy paměti hloubky (zBuffer)

Test vypnut
glDisable( GL_DEPTH_TEST );

Test zapnut
glEnable( GL_DEPTH_TEST );
PGR
•
•
povolena aktualizace zBufferu glDepthMask( GL_TRUE );
zakázána aktualizace zBufferu glDepthMask( GL_FALSE );
37
3. test – Hloubkový test (depth test)
(3)
Pro každý pixel uložena vzdálenost k oku (ke kameře)
if( depth_test_passes ) {
// depth < stored_depth
propusť fragment
if( DEPTH_MASK true )
nahraď novou hodnotou z //update stored_depth=dep
}
else { // depth test failed
if( DEPTH_TEST enabled )
zadrž fragment
else
propusť fragment
neměň uloženou hodnotu Z
}
PGR
38
2. test: Šablona (stencil test)
(1)
Enable/Disable
Scissor test
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)
barva (FRONT-LEFT)
PGR
barva (BACK-RIGHT)
barva (FRONT-RIGHT)
39
2. test: Šablona (stencil test)
(2)
Stencil test
• Porovná referenční hodnotu ref s hodnotou pixelu v šabloně s
Podle výsledku porovnání (true / false)



•
propustí či nepropustí fragment - glStencilFunc()
a modifikuje obsah šablony
- glStencilOp()
porovnává jen bity které mají 1 v masce mask - glStencilMask()
Modifikace závisí i na testu hloubky (depth test)
Tři různé kombinace -> tři modifikující operace

fail
porovnání neuspělo

zfail
porovnání uspělo, neuspěl test hloubky (vzadu, zakryto)

zpass
porovnání uspělo, uspěl test hloubky (nebo je zakázán)
(vpředu)
•
glEnable(GL_STENCIL_TEST)

•
glStencilMask(GLuint mask)

PGR
Povolí test i modifikaci šablony
Maskování jen některých bitů
40
2. test: Šablona (stencil test)
(3)
 Funkcionalita nad fragmenty je následující:
fragment
Stencil test
sfail
Nastavena funkcí:
glStencilFunc(GLenum func,
GLint ref, GLuint mask)
Depth test (z-test)
zfail
zpass
Aktualizace stencil bufferu dána funkcí: glStencilOp(sfail, zfail, zpass)
PGR
41
2. test: Šablona (stencil test)
(4)
void glStencilFunc( GLenum func, GLint ref, GLuint mask )
Nastavuje porovnávání
•
porovnávací funkci func

•
•

GL_NEVER, GL_LESS, GL_LEQUAL, GL_GREATER,
GL_GEQUAL, GL_EQUAL, GL_NOTEQUAL a GL_ALWAYS
např.: GL_LESS => if( ref < pixelStencilValue ) then true
referenční hodnotu ref

(default 0) = konstanta
S ní se porovnává, nebo se zapíše do masky
masku mask



(samé 1)
dolních s bitů odpovídá s bitům šablony
bitový AND (&) určí bitové roviny k porovnání
např.: GL_LESS =>
if( ref & mask) < ( stencil & mask) then true
přesněji
Porovnávácí funkce GL_LESS, GL_GREATER atd.
PGR
42
2. test: Šablona (stencil test)
(5)
void glStencilOp( GLenum fail, GLenum zfail, GLenum zpass )
Nastavuje modifikující operace pro hodnoty ve stencil buffer
•
•
funkce modifikující data ve stencil bufferu

fail
porovnání neuspělo

zfail
porovnání uspělo, neuspěl test hloubky

zpass
porovnání uspělo, uspěl test hloubky
(nebo je zakázán)
GL_KEEP (nemění šablonu)
GL_ZERO (nastaví na 0)
GL_REPLACE (nastaví na ref zadané glStencilFunc)
GL_INCR, GL_INCR_WRAP (inkrementace šablony )
GL_DECR, GL_DECR_WRAP (dekrementace šablony )
GL_INVERT (inverze bitů)
PGR
43
2. test: Šablona (stencil test)
(6)
Příklad kreslení vymezené trojúhelníkem
 Červený trojúhelník se nakreslí a přitom naplní šablonu 1
 Pak se kreslí zelený čtverec pouze tam, kde je v šabloně 1
(zbyde z něj jen zelená část bez rohů)
 Pak se kreslí modrý čtverec pouze tam, kde je v šabloně 0
(zbydou z něj jen modré rohy)
glStencilFunc(GL_ALWAYS, 1, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
drawRedTriangle();
glStencilFunc(GL_EQUAL, 1, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
drawGreenPolygon();
glStencilFunc(GL_NOTEQUAL, 1, 1);
drawBluePolygon();
PGR
44
2. test: Šablona (stencil test)
Příklad – kreslení kosočtverce do a mimo něj
1. inicializovat
(7)
hodnota 1 pro replace
rovina č. 1 (maska)
glClearStencil(0x0);
glEnable(GL_STENCIL_TEST);
2. naplnit šablonu jedničkami (kosočtverec na obrázku)
•
•
vynulovat
glClear(GL_STENCIL_BUFFER_BIT);
nastavit
glStencilFunc (GL_ALWAYS, 0x1, 0x1)
glStencilOp(…,GL_REPLACE,GL_REPLACE);
•
nakreslit tvar
3. Kreslit scénu
drawStencil(); // kosočtverec, tvar šablony
glStencilOp(GL_KEEP, GL_KEEP,GL_KEEP);
glStencilFunc(GL_EQUAL, 0x1, 0x1); // 1
drawBlueSphere() // uvnitř šablony
glStencilFunc(GL_NOTEQUAL, 0x1, 0x1); // 0
drawToriScene(); // mimo šablonu
PGR
PGR
glStencilOp( GLenum fail, GLenum zfail, GLenum zpass )
45
2. test: Šablona (stencil test)
(8)
Vyplnění děr v uzavřených tělesech po oříznutí rovinou
(„uzavření tělesa“, aby nebylo vidět dovnitř)

musí mít sudý počet přivrácených a odvrácených stěn -> XOR
•
vynulovat šablonu glClearStencil(0x0);
glClear(GL_STENCIL_BUFFER_BIT);
•
povolit update, invertovat (jednou 1, 2x bude 0,…)
glEnable(GL_STENCIL_TEST);
glStencilFunc (GL_ALWAYS, …, 0x1);
glStencilOp (…, GL_INVERT, GL_INVERT);
•
dokreslit „čepice“ (všechny najednou)
glStencilFunc (GL_NOTEQUAL, 0x0, 0x1);
glStencilOp( GL_KEEP, GL_KEEP,GL_KEEP);
drawLargeRectangleCap();
PGR
glStencilOp( GLenum fail, GLenum zfail, GLenum zpass )
46
4. operace: Míchání barev (blending)
(1)
Enable/Disable
Scissor test
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)
barva (FRONT-LEFT)
PGR
barva (BACK-RIGHT)
barva (FRONT-RIGHT)
47
4. operace: Míchání barev (blending)
(2)

míchání nové barvy s barvou v obrazové paměti

v režimu RGBA

viz následující přednáška
PGR
48
5. Logické operace
(1)
Enable/Disable
Scissor test
šablona (stencil)
hloubka (depth)
barva (BACK-LEFT)
barva (FRONT-LEFT)
PGR
barva (BACK-RIGHT)
barva (FRONT-RIGHT)
49
5. Logické operace
Logické operace
(2)
Zdroj
S
f (S,D)
D
 Zdroj S - bit fragmentu
 Cíl
D - bit pixelu barevné paměti (color buffer)
Hodnoty cíle a zdroje 0 a 1
Cíl
 f(z,d) má 16 možných kombinací
 16 módů zápisu
 Výběr logické operace (módu zápisu)
void glLogicOp(GLenum mód)
 Povolení / zákaz aplikace logické operace
glEnable(GL_LOGIC_OP)
glDisable(GL_LOGIC_OP);
PGR
50
5. Logické operace
(3)

Logické operace mezi barvou RGBA fragmentu a
barvou uloženou v barevné paměti (colorBuferu)

16 operací (módů)
S = source, D = destination
0
1
2
3
4
5
6
7
PGR
operationCode
GL_CLEAR
GL_COPY
GL_NOOP
GL_SET
GL_COPY_INVERT
GL_INVERT
GL_AND_REVERSE
GL_OR_REVERSE
meaning
0
S
D
1
S
D
SD
SD
8
9
10
11
12
13
14
15
operationCode
meaning
Gl_AND
SD
GL_OR
SD
GL_NAND
 (S  D)
GL_NOR
 (S  D)
GL_XOR
S xor D
GL_EQUIV
 ( S xor D)
GL_AND_INNVERTED
SD
GL_OR_INVERTED
SD
51
Shrnutí

Zobrazovací řetězec
•

Součásti obrazové paměti
•
•

na co se používají
jak se mažou a jak se do nich zapisuje
Testy a operace s fragmenty
•
•
•
PGR
Část od sestavení primitiv po rasterizaci
provádí se po výpočtu pozice a barvy fragmentu
určí, jestli se fragment dostane na obrazovku
šablona, test hloubky, …
52
Zobrazovací řetězec – dnes probrané části
Obrázek převzat od Davida Ambrože
PGR
53

Podobné dokumenty

Třinec - HC Motor

Třinec - HC Motor Třinec v pouhých pěti zápasech stvrdil svou suverenitu v ročníku, který se do dějin mimo třineckého triumfu zapíše i eskapádami s chybnými registracemi hráčů ve třech ze čtrnácti klubů nejvyšší sou...

Více

Vstupní operace, identifikace a výběr zobrazovaných objektů

Vstupní operace, identifikace a výběr zobrazovaných objektů Vstupní operace, identifikace a výběr zobrazovaných objektů Petr Felkel Katedra počítačové grafiky a interakce, ČVUT FEL místnost KN:E-413 na Karlově náměstí E-mail: [email protected] S použitím m...

Více

3.0 MB - NeHe OpenGL Tutoriály

3.0 MB - NeHe OpenGL Tutoriály Na podobný tutoriál jste už jistě netrpělivě čekali. Naučíte se základy o detekcích kolizí, jak na ně reagovat a na fyzice založené modelovací efekty (nárazy, působení gravitace ap.). Tutoriál se v...

Více

Bakalářská práce

Bakalářská práce Vizuálním doprovodem k hudbě je myšlen obraz měnící se v čase, který je promítán na plátno na vystoupeních kapel a dýdžejů. Může být promítán i na stěny či objekty zavěšené ve vzduchu. Doplňuje se ...

Více

vysoke´ucˇenítechnicke´v brneˇ

vysoke´ucˇenítechnicke´v brneˇ Pro realistické kreslení scény se postupem času vyvinulo množství metod a postupů, řešících různé aspekty problému. Liší se požadavky na reprezentaci prostorových dat, možnostmi a samozřejmě kvalit...

Více

Měřič výkonnostních charakteristik OpenGL - merlin

Měřič výkonnostních charakteristik OpenGL - merlin Evaluátor (Evaluator) má na starosti aproximaci křivek a povrchů ze vstupních parametrických dat. Na výstupu tohoto bloku se objevují informace o jednotlivých vrcholech. Jednotka pro operaci s vrch...

Více

Referát k OpenGL

Referát k OpenGL implementace v souladu s jeho specifikací. Tuto roli převzalo konsorcium ARB (Architecture Review Board), do kterého patří firmy Digital Equipment Corporation (DEC), Hewlett-Packard, IBM, Intel, In...

Více

Algoritmy pro zobrazov´anı stın˚u ve sc´enˇe

Algoritmy pro zobrazov´anı stın˚u ve sc´enˇe polohu a vlastnosti světelného zdroje. Proto v počı́tačové grafice, která se snažı́ zobrazovat naši realitu co nejvěrněji, patřı́ technikám vytvářejı́cı́ stı́ny důležité mı́sto. Vy...

Více

Technická univerzita v Liberci

Technická univerzita v Liberci programovacího prostředí pomocí Add References. Hlavní část programu, která vytvoří OpenGL okno pomocí výše uvedené knihovny jsem vyhledal na internetu a je pro všechny OpenGL aplikaci s touto knih...

Více