Számítógépes grafika és képfeldolgozás - Vizsga, 2013.06.19.
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)
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.
- Hatásmetszet (Talán, nem biztos.)
- CSG
- Z-fighting