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

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)