Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
courses:a4m39apg:raytracer_algoritmy [2009/11/29 14:11] keymaster |
courses:a4m39apg:raytracer_algoritmy [2025/01/03 18:29] (aktuální) |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== Fragmenty kódu pro raytracer ====== | ====== Fragmenty kódu pro raytracer ====== | ||
+ | |||
+ | **Disclaimer: nepoužívejte čemu nerozumíte, použití na vlastní nebezpečí, nemusí být správné, optimální, blablabla... ;)** | ||
+ | |||
Z tohohle předmětu už je pomalu taky fraška, tak proč to dělat složitě... tady jsou hotový kusy kódu co se budou hodit. Vybral jsem to ze svojeho funkčního rendereru, takže by to mělo být korektní, ale za nic neručím ;). Nejasnosti a dotazy do diskuse prosím. | Z tohohle předmětu už je pomalu taky fraška, tak proč to dělat složitě... tady jsou hotový kusy kódu co se budou hodit. Vybral jsem to ze svojeho funkčního rendereru, takže by to mělo být korektní, ale za nic neručím ;). Nejasnosti a dotazy do diskuse prosím. | ||
* Můj vektor se jmenuje Vector3d | * Můj vektor se jmenuje Vector3d | ||
Řádek 137: | Řádek 140: | ||
</code> | </code> | ||
Možná to není úplně to co oni chcou, nemachruju tam s tou BRDF funkcí, ale je to rychlý a kompaktní, tak snad se nehraje na city ;) | Možná to není úplně to co oni chcou, nemachruju tam s tou BRDF funkcí, ale je to rychlý a kompaktní, tak snad se nehraje na city ;) | ||
+ | |||
+ | --- Nejsem si jistý, ale tohle podle mě je BRDF, ne? --- //[[[email protected]|Roman Polášek]] 2009/12/04 18:01// | ||
==== Area Lights ==== | ==== Area Lights ==== | ||
- | Je potřeba zvolit pokaždý jinej náhodnej sample na světle a udělat na něj klasickej shadowray. IMplementovaný zatím mám jen triangle světla. Docela lahůdka je ale s intenzitama, sám v tom mám bordel, možná je tam chyba: | + | Je potřeba zvolit pokaždý jinej náhodnej sample na světle a udělat na něj klasickej shadowray. IMplementovaný zatím mám jen triangle světla. Docela lahůdka je ale s intenzitama, sám v tom mám bordel, možná je tam chyba. |
+ | |||
+ | Možná budete chtít si ten kód upravit pro ty obdélníkový světla, mohlo by to taky být docela podezřelý. Úprava spočívá pouze ve změně generováním randomPoint na nějaký triviální point + random1*direction1 + random2*direction2 | ||
<code c++> | <code c++> | ||
RgbColor __forceinline getIrradianceSecondary(const Hit& hit, | RgbColor __forceinline getIrradianceSecondary(const Hit& hit, | ||
Řádek 169: | Řádek 177: | ||
//druhá důležitá věc: násobí se dvěma cosiny. Koukněte do shirleyho kdyžtak | //druhá důležitá věc: násobí se dvěma cosiny. Koukněte do shirleyho kdyžtak | ||
- | //jo a tohle světlo má kvadratickej útlum (dělení distance*distance | + | //jo a je tam útlum podle těch 3 koeficientů viz zadání |
- | return this->color * cosineSurface * cosineLight / (distance*distance); | + | return this->color * cosineSurface * cosineLight / (distance*distance * quadraticAtten + distance * linearAtten + constantAtten); |
} | } | ||
</code> | </code> |