SzgGrafVizsga20090611

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 21., 22:17-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|SzgGrafVizsga20090611}} ==1. feladat == Mit rajzol ki az alábbi OpenGL program (3 pont) + csúcspont és pixel árnyaló, ha a "volume" egy …”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


1. feladat

Mit rajzol ki az alábbi OpenGL program (3 pont) + csúcspont és pixel árnyaló, ha a "volume" egy 128^3 felbontású 3D textúra, amelyben az u,v,w című texel a vörös csatornán 1-(u-0.5)^2-(v-0.5)^2-(w-0.5)^2 értékű (3 pont). Alakítsa át a programot, úgy hogy a megjelenített felület diffúz kék legyen, amelyet a 1,1,-1 irányban lévő fehér irányfényforrás világít meg (7 pont)

void Display(){
	 glBegin(GL_QUADS);
		  glTexCoord2f(0,0); glVertex3f(-1,-1,0);
		  glTexCoord2f(0,1); glVertex3f(-1,1,0);
		  glTexCoord2f(1,1); glVertex3f(1,1,0);
		  glTexCoord2f(1,0); glVertex3f(1,-1,0);
	 glEnd();
}

void VertexShader(in float3 position	 : POSITION,
			 in float2 uv		  : TEXCOORD0,
			 out float4 hPosition	 : POSITION,
			 out float2 ouv	 : TEXCOORD0){
	 hPosition = position;
	 ouv = uv;
}

float4 FragmentShader(in float3 uv : TEXTCOORD0,
				  uniform sampler 3D volume):COLOR{
	 float3 eye = float3(0.5,0.5,0.5);
	 float3 entry = float3(uv.x, uv.y, 0);
	 bool found = false;
	 float3 q=entry;
	 for(float t = 0; t<2; t += 1.0/STEPS){
		  if (!found && q.x>0 && q.x<1 && q.y>0 && q.y<1 &&q.z<1){
				q = entry + (entry - eye) * t;
				if (tex3D(volume,q).r>0.9) found = true;
		  }
	 }
	 float3 color = float3(0,0,0);
	 if (found) color = float3(1,1,1);
	 return float4(color,1);
}

2. feladat

A végtelen tengert sugárkövetéssel jeleníti meg. A tenger hullámai az xy síkban parabolaívek. A tenger az xz sík, a hullámok az x tengelyre merőlegesek, magasságuk 1. A sugár kezdőpontja (3,3,3) az iránya (-4,-2,-2). A tenger végtelenül mély és ezért sötét. Az égbolt felhős, az onnan érkező sugársűrűség (1,1,10) W/m^2/st minden irányban. Milyen sugársűrűséggel tér vissza a program ha csak egyszeres ideális törést, illetve visszaverődést számol (10 pont) Segítség F(O') = Ft + (1-Ft)(1-cos (O'))^5 , Ft= ((v-1)^2 + K^2) / ((v+1)^2 + K^2) Ha netalántán nem tudná a képletben lévő konstansok érékét a vízre (középiskolás fizika), akkor tippelje meg.

		1 ^ y
\_ _/\_|_/\_ _/
 --------|---------->x
	-2-1 0 1  2  3

		 ^ z
		 |
--|--|--|--|--|-->x
		 |

3. feladat

Catmull-Rom spline. Elv :(3 pont).A görbeszegmens egyenletei: (2 pont). Egy pontjának kiszámítása a paraméterből (5 pont)

-- Tommy21 - 2009.06.11. via Józsi at grafikalista