„SzgGrafVizsga20120613” változatai közötti eltérés
a autoedit v2: fájlhivatkozások egységesítése, az új közvetlenül az adott fájlra mutat |
|||
| (4 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva) | |||
| 2. sor: | 2. sor: | ||
==1. Feladat== | ==1. Feladat== | ||
Írjon Cg nyelven olyan csúcspont-árnyaló és képpont-árnyaló programokat, amelyekkel az alábbi [[OpenGL]] kód egy teljes képernyőt | Írjon Cg nyelven olyan csúcspont-árnyaló és képpont-árnyaló programokat, amelyekkel az alábbi [[OpenGL]] kód egy teljes képernyőt lefedő téglalapot rajzol. | ||
glBegin(GL_QUADS); | glBegin(GL_QUADS); | ||
| 22. sor: | 22. sor: | ||
Egy megoldás, amely közel jó eredményt ad:<br/> | Egy megoldás, amely közel jó eredményt ad:<br/> | ||
Csúcspont árnyaló:<br/> | '''Csúcspont árnyaló:'''<br/> | ||
void vertex(in float4 position : POSITION,<br/> | void vertex(in float4 position : POSITION,<br/> | ||
| 28. sor: | 28. sor: | ||
out float4 posTexcoord : TEXCOORD0)<br/> | out float4 posTexcoord : TEXCOORD0)<br/> | ||
{<br/> | {<br/> | ||
if (position.x == 0.0) | if (position.x == 0.0) //x irányú nyújtás<br/> | ||
position.x = -1.0;<br/> | position.x = -1.0;<br/> | ||
<br/> | <br/> | ||
if (position.y == 0.0) | if (position.y == 0.0) //y irányú nyújtás<br/> | ||
position.y = -1.0;<br/> | position.y = -1.0;<br/> | ||
<br/> | <br/> | ||
oPosition = position; | oPosition = position; //végső pozíció kiadása (erre rajzol majd)<br/> | ||
posTexcoord = oPosition; | posTexcoord = oPosition; //pozíció a fragmens shadernak<br/> | ||
}<br/> | }<br/> | ||
<br/> | <br/> | ||
Képpont árnyaló:<br/> | '''Képpont árnyaló:'''<br/> | ||
<br/> | <br/> | ||
void fragment(in float4 position : TEXCOORD0,<br/> | void fragment(in float4 position : TEXCOORD0,<br/> | ||
out float4 oColor : COLOR)<br/> | |||
{<br/> | {<br/> | ||
float P = position.x * position.x + position.y * position.y; | float P = position.x * position.x + position.y * position.y; //x<sup>2</sup> + y<sup>2</sup><br/> | ||
float innerR = 0.7 * 0.7; | float innerR = 0.7 * 0.7; //r<sup>2</sup><br/> | ||
float outerR = 0.9 * 0.9; | float outerR = 0.9 * 0.9; //R<sup>2</sup><br/> | ||
<br/> | <br/> | ||
if (P >= innerR && P <= outerR) | if (P >= innerR && P <= outerR) //a pontnak az r sugarú körön kívül és az R sugarú körön belül kell lennie<br/> | ||
oColor = float4(1, 1, 1, 1);<br/> | oColor = float4(1, 1, 1, 1);<br/> | ||
else<br/> | else<br/> | ||
| 56. sor: | 56. sor: | ||
Ezzel a két programmal, a megadott vertexekkel a következő képet kaptam:<br/> | Ezzel a két programmal, a megadott vertexekkel a következő képet kaptam:<br/> | ||
<br/> | <br/> | ||
[[ | [[File:grafika_vertex_shader_korgyuru.png]]<br/> | ||
<br/> | <br/> | ||
A hiba okát nem tudom, elvileg minden klappol. Javítás jöhet. | A hiba okát nem tudom, elvileg minden klappol. Javítás jöhet. | ||
| 67. sor: | 67. sor: | ||
==Bónusz kérdések (1 pont darabja)== | ==Bónusz kérdések (1 pont darabja)== | ||
a) Melyik a legtelítettebb szín és miért? | a) Melyik a legtelítettebb szín és miért?<br /> | ||
<br /> | |||
b) Nevezzen meg egy | A fehér, mert az minden színt tartalmaz. Ha prizmába belelövünk egy fehér fénynyalábot, a szivárvány színeire bontva jön ki a másik oldalon.<br /> | ||
<br /> | |||
c) Mi a környezet-leképezés (environment mapping)? | b) Nevezzen meg egy G<sub>0</sub> folytonos interpoláló görbét, ami teljesíti a konvex burok tulajdonságait is!<br /> | ||
<br /> | |||
d) Mi a különbség a teljes visszaverődés és az ideális visszaverődés között? | G<sub>0</sub> folytonosság: két görbeszakasz értéke intervallumhatáron megegyezik.<br /> | ||
Konvex burok tulajdonság: nem lép ki a kontrollpontok alkotta konvex sokszög határából.<br /> | |||
Interpoláló: érinti a kontrollpontokat.<br /> | |||
Idő: 60 perc | Ezeket a tulajdonságokat teljesíti pl. a törtvonal is (simán összekötöd a csomópontokat egyenes szakaszokkal).<br /> | ||
<br /> | |||
c) Mi a környezet-leképezés (environment mapping)?<br /> | |||
<br /> | |||
Ideális tükröket lehet így szimulálni. Külön leképzéssel meghatározzuk, hogy mi látszik a tükörirányban, majd a képet textúraként rátesszük a tükröző objektumra.<br /> | |||
<br /> | |||
d) Mi a különbség a teljes visszaverődés és az ideális visszaverődés között?<br /> | |||
<br /> | |||
Ideális visszaverődés: csak ideális tükörnél fordul elő; a beesési irány, a felületi normális és a kilépési irány egy síkban van, és a beesési szög megegyezik a kilépési szöggel.<br /> | |||
Teljes visszaverődés: az optikailag sűrűbb anyagból a fény nem tud kilépni a ritkább anyagba. Amikor sugárkövetésnél a fénytörési irányt számolod, és a gyökjel alatti tag (1-(1-cos<sup>2</sup>alfa)/(n<sup>2</sup>)) negatív, akkor áll fenn. A tört fény mennyisége is hozzáadódik a visszaverődéshez. Így működik az üvegszál.<br /> | |||
<br /> | |||
Idő: 60 perc<br /> | |||
<br /> | |||
<br /> | |||
-- Main.voros - 2012.06.13. | -- Main.voros - 2012.06.13. | ||
--[[Szerkesztő:Gabesz852|Gabesz852]] ([[Szerkesztővita:Gabesz852|vita]]) 2014. január 22., 15:40 (UTC) | |||
[[Category:Infoalap]] | [[Category:Infoalap]] | ||