Zoals gisteren beloofd enkele nieuwe benchmarks, het bouwen van een versnellingsstructuur is sterk verbeterd en ook het renderen gaat weeral iets sneller.
Verder iets over mijn "renderbox" want ik lanceer al een heel semester rendertijden zonder te vermelden op welk type processor. In mijn computer zit een Intel E6600 Dual Core processor (2.4GHz kloksnelheid met 4Mb cache en 4Gb dual channel geheugen), hiervan gebruik ik slechts één core voor te renderen, de andere dient om
reddit/programming te lezen en naar
last.fm te luisteren terwijl ik wacht op mijn renders.
Ondertussen kan ik ook animaties renderen met de Cal3D library, hier een gehaaste Cally (opgebouwd uit 3342 driehoeken):
Elke frame (resolutie 1024 x 1024) neemt de volgende tijd in beslag:
- Het bouwen van de versnellingsstructuur: 0.01 a 0.02 seconden.
- Het ray tracen van het frame: ~0.25 seconden.
- Het saven van het frame naar png formaat: ~0.15 seconden.
Gemiddeld genomen geeft dit een framerate van 2.5 frames/seconde, als ik het converteren naar png buiten beschouwing laat dan bekomen we een framerate van 3.52 frames/seconde. Nog altijd redelijk amateuristisch maar in mijn implementatie is nog ongeloofelijk veel mogelijkheid tot optimalisatie :)
Gunther maakt in zijn paper gebruik van muli-level loose kd-trees met 4x4 ray packets en haalt een framerate van 10 seconden voor de Cally scene op een AMD Opteron 2.4GHz processor. De Cally animatie hier is wel niet helemaal gelijk aan de scene die Gunther gebruikt.
Ik maak hier niet gebruik van de specifieke anatomie maar herbouw de datastructuur voor elk frame zoals beschreven in de paper van Wald. Hoewel ik eigenlijk informatie "weggooi" heb ik het gevoel dat deze techniek er als beste zal uitkomen in vergelijking met de andere (nog niet geimplementeerde technieken). De redenen:
- De techniek is algemeen en kan alle soorten dynamiek in een scene aan van coherent (joggende Cally) tot incoherent (exploderende Cally).
- Het algoritme zoals gepresenteerd door Wald is bliksemsnel, terwijl de versnellingsstructuren van uitstekende kwaliteit zijn.
- Het algoritme schaalt zeer goed, één core kan bijvoorbeeld de versnellingsstructuur berekenen terwijl de andere core rendert.