„SzgGrafVizsga20120613” változatai közötti eltérés

Gabesz852 (vitalap | szerkesztései)
Nagy Marcell (vitalap | szerkesztései)
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 feledő téglalapot rajzol.
Í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)                     //x irányú nyújtás<br/>
if (position.x == 0.0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//x irányú nyújtás<br/>
position.x = -1.0;<br/>
position.x = -1.0;<br/>
<br/>
<br/>
if (position.y == 0.0)                     //y irányú nyújtás<br/>
if (position.y == 0.0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//y irányú nyújtás<br/>
position.y = -1.0;<br/>
position.y = -1.0;<br/>
<br/>
<br/>
oPosition = position;                       //végső pozíció kiadása (erre rajzol majd)<br/>
oPosition = position;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//végső pozíció kiadása (erre rajzol majd)<br/>
posTexcoord = oPosition;                   //pozíció a fragmens shadernak<br/>
posTexcoord = oPosition;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//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/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out float4 oColor : COLOR)<br/>
{<br/>
{<br/>
float P = position.x * position.x + position.y * position.y;       //x<sup>2</sup> + y<sup>2</sup><br/>
float P = position.x * position.x + position.y * position.y;&nbsp;&nbsp;&nbsp;&nbsp;//x<sup>2</sup> + y<sup>2</sup><br/>
float innerR = 0.7 * 0.7;                                         //r<sup>2</sup><br/>
float innerR = 0.7 * 0.7;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//r<sup>2</sup><br/>
float outerR = 0.9 * 0.9;                                         //R<sup>2</sup><br/>
float outerR = 0.9 * 0.9;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//R<sup>2</sup><br/>
<br/>
<br/>
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/>
if (P >= innerR && P <= outerR)&nbsp;&nbsp;&nbsp;//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/>
[[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 Go folytonos interpoláló görbét, ami teljesíti a konvex burok tulajdonságait is!
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]]
A lap eredeti címe: „https://vik.wiki/SzgGrafVizsga20120613