Ú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 objektuIntersection.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()).

Pokud využijete možnosti definovat scénu scriptem, použijte projekt 048rtmontecarlo-script a popis scény vložte do nového .cs souboru (inspirace viz vestavěné scény z adresáře data/rtscenes/). I do skriptu je předán textový parametr Param: z formuláře.

Co odevzdat

Musíte poslat zdrojový soubor MonteCarloRT.cs. Pokud chcete, můžete připojit výsledný obrázek. Pokud budete používat scripty definující scénu, nezapomeňte je též přiložit.

Termín

Odevzdat do: 30. 6. 2019.

Body

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

Projekt

Visual Studio projekt: 048rtmontecarlo-script nebo 048rtmontecarlo

Zdrojový soubor

Modifikujte a odevzdejte soubor: MonteCarloRT.cs
Ve funkci InitializeScenes() zadejte své jméno!


Copyright (C) 2013-2019 J.Pelikán, last change: 2020-05-16 23:04:24 +0200 (Sat, 16 May 2020)