Úloha 097: Pomerančová kůra

Úkolem je implementovat spojitou šumovou funkci a aplikovat ji v textuře imitující kůru pomeranče. To vše v prostředí paprskového zobrazovače (ray-tracing).

orange

Zdroje

Viz ústní vysvětlení na přednášce a cvičení, příklady šumových funkcí a 3D textur - stránka s ukázkami, PDF prezentace obsahující informace o šumových funkcích a texturách.

Interface ITexture

Metoda Apply() modifikuje data uložená v objektu Intersection (už po zkompletování údajů metodou Intersection.Complete()). Jakákoli data můžete přepsat, zde bude relevantní Normal, případně SurfaceColor (pozor, normálový vektor musíte po změně znormalizovat). Inspirace: již existující implementace textury CheckerTexture.

Determinismus

Pozor: z několika důvodů - kvůli animacím nebo protože se výpočty paralelizují - je potřeba udržet implementaci šumových funkcí a textur deterministickou. Tj. zdroje náhody odvozovat ze souřadnic v 2D/3D prostoru pomocí vhodných hashovacích funkcí, apod. (viz přednáška). Jako souřadný prostor (pro případ 3D textury) by se měl použít tzv. prostor souřadnic objektu - Intersection.CoordObject, pro korektnost případných animací..
Je možné použít známé šifrovací hash-funkce nebo jednoduché hashovací funkce obsažené ve třídě MathSupport.RandomStatic.

Co modifikovat

Do zdrojového souboru MonteCarloRT.cs přidejte implementace Vašich nových tříd (šumu a vlastní textury), dále modifikujte definici scény class TestScene, do které přidáte použití Vámi implementovanou texturu (3D nebo 2D). Pokud budete mít více ukázkových scén, nechte je všechny funkční a do listboxu přidejte další položky, aby se dalo vše pohodlně zkoušet bez nutnosti překládat program (viz inicializační funkci InitializeScenes()).

Co odevzdat

Musíte poslat zdrojový soubor MonteCarloRT.cs. Pokud chcete, můžete připojit výsledný obrázek.

Termín

Odevzdat do: 28. 5. 2017.

Body

Základ: 28 bodů, další body za věrnost imitace.

Projekt

Visual Studio projekt: 048rtmontecarlo

Zdrojový soubor

Modifikujte a odevzdejte soubor: MonteCarloRT.cs
Do komentáře na první řádce napište své jméno!


Copyright (C) 2013-2017 J.Pelikán, last change: 2017-04-24 12:10:01 +0200 (Mon, 24 Apr 2017)