Számítógépes grafika és képfeldolgozás - Vizsga, 2013.06.19.

A VIK Wikiből

1. feladat

Adott volt egy C++ kód, ami a visszaverődést, beletörést és a Fresnel függvényt valósította meg a Snellius-Descartes törvény alapján.

Módosítsa a kódot úgy, hogy a S-D helyett egy Donatellácska-Győzike törvényt használjon, ami annyiban tér el a S-D-től, hogy minden sin helyett cos áll. (15p)

Megjegyzés: Konkrét sinus egy se volt benne (így leírva), inkább azonosságok (is) kellettek, pl.: 1 - cosa*cosa, azaz 1 - cos négyzet, ami nem más mint a sin négyzet, a sin négyzet + cos négyzet = 1 átalakításból.

2. feladat

Vertex shaderes feladat. Adott egy kódrészlet, "meghibásodott az a memóriaterület", ami pont a három állapot (state.matrix.mvp, state.matrix.modelview, state.modelview.invtrans) értékét tárolja, alakítsuk át a kódot úgy, hogy az értékük nélkül is ugyan azt a képet kapjuk. (Adott volt a CPU program(glscale+gluLookAt+glvertex utasítások voltak főleg), meg a Vertex shader program, de csak az utóbbin változtathattunk. + Ismeretlen fragmens shader) (15pont)

void VertexShader (
in float4 position : POSITION,
in float3 normal : NORMAL,
in ... view : VIEW, //? Nem biztos
uniform float4x4 MVP : state.matrix.mvp,
uniform float4x4 MV : state.matrix.modelview,
uniform float4x4 MVIT : state.matrix.modelview.invtrans,
out float4 hposition : POSITION,
out ...,
out ...) {
hposition = mul(MVP, position);
view = mul(MV, position);
cnormal = mul(MVIT, normal).xyz; //Szerintem ez nem így volt, de nem emlékszem rá, hogy mi volt itt pontosan
}

Bónusz kérdések

Darabja 1 pontért a hőségre való tekintettel.

  1. Hatásmetszet (Talán, nem biztos.)
  2. CSG
  3. Z-fighting