woensdag 26 november 2008

Bug Fix

Op aanraden van Ares heb ik een beetje tijd gespendeerd aan mijn "gaten in de meshes" bug zodat ik verder kan werken met een ray tracer waarvan ik 100% weet dat hij correct werkt.

Na een halve dag intensief zoeken heb ik de bug gevonden op een plaats waar ik het totaal niet verwachtte (zoals met alle bugs het geval is) in de code voor het bouwen van een bounding box van een driehoek:

min(a.z, b.z, b.z), max(a.z, b.z, c.z) // fout door stomme tikfout
min(a.z, b.z, c.z), max(a.z, b.z, c.z)) // correct

Het gevolg hiervan was dat een (klein) aantal bounding boxes fout werd berekend en daarom werden sommige driehoeken niet getest wat leidde tot gaten in de meshes. Gelukkig is dit probleem nu van de baan zoals volgende renders aantonen.
Image and video hosting by TinyPic
Een schokkerige versie van Achmed the dead terrorist :)
Image and video hosting by TinyPic
En de classroom scene met een perfecte muur achteraan

Verder waren niet al mijn berekende statistieken even nuttig, zoals bijvoorbeeld het aantal driehoek / straal intersecties per straal. Beter is om het aantal driehoek/straal intersecties te verdelen over stralen die iets geraakt hebben.

























































































BVH STATS WITH FTB TRAVERSAL AND CULLING







scene

#triangles

#tris/hit

#box/hit

build (s)

render (s)







ulm box

492

2.54

32.16

0

2







classroom

9K

3.9

118

0

9







office

34K

5.39

71.5

0

6







cabin

219K

7.75

155

0

12







armadillo

345K

3.27

87.5

2

2







atrium2

559K

8.54

142.9

2

12







conference

987K

4.17

145.8

6

11







cruiser

3.64M

12.6

137.5

23

10







dragon

7.22M

3.65

114

38

1





De bugfix heeft het aantal straal/driehoek intersecties iets verminderd, het belangrijkste is dat ik nu zeker weet dat alles correct werkt, nu kan ik mij focussen op rauwe performantie.

Geen opmerkingen: