Ú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).
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.
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.
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.
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.
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.
Odevzdat do: 30. 6. 2019.
Základ: 28 bodů, další body za věrnost imitace.
Visual Studio projekt: 048rtmontecarlo-script nebo 048rtmontecarlo
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)