woensdag 3 december 2008

Andere kleine nieuwigheden

Nu we scenes zoals de bunny scene gebruiken om te testen, hadden we nood aan een betere versnellingsstructuur. We hebben de grid accelerator vervangen door een kd-tree (implementatie overgenomen van luxrender en aangepast aan onze raytracer). De bunny scene rendert nu ongeveer een factor 3 sneller.

Een tweede aanpassing is het aanpassen van de BSDF sampling. Een BSDF bestaat uit een lijst van verschillende componenten (BRDF's en BTDF's). Bij het samplen van een BSDF werd vroeger uniform één van de componenten gekozen. Dit is suboptimaal. Het is beter om ook hier importance sampling op toe te passen. Nu krijgt elke component van de BSDF een gewicht mee, afhankelijk van de hoeveelheid licht dat wordt gereflecteerd door de component en de vector waarlangs het licht invalt. Aan de hand van deze gewichten kan een pdf worden geconstrueerd, en gebruik makende van deze pdf wordt een component geselecteerd.

Dit levert vooral voordelen op bij bijvoorbeeld een glazen bol, waar de verhouding tussen de reflectie en de transmissie sterk varieert over het oppervlak (afhankelijk van de fresnel distributie). Het effect is wel moeilijker te illustreren om dat de verschillen redelijk klein zijn in de meeste gevallen, en een geoefend oog nodig hebben om herkend te worden.

Geen opmerkingen: