Table of Contents
Deel 2: Versnellingsstructuren
De 2 gebruikte algoritmes zijn een 'Compact Grid' als beschreven in Compact, fast and robust grids for ray tracing. Anderszijds werd een Bounding Volume Hierarchy geimplementeerd.
Implementatie
Hier zien we enerzijds de rendering zonder versnellingsstructuur, met een grid en met een BVH
1,000,000 spheres met de CompactGrid
Voor dezelfde scene en een scene met een groter aantal bollen krijgen we de volgende false color images (blauw → groen → rood = stijgend aantal intersectietesten)
Voor de CompactGrid:
Voor de BVH:
Parameters
De CompactGrid wordt opgesteld aan de hand van een 'GridDensity' parameter. Deze bepaald het gemiddeld (verwachtte) aantal objecten per grid cell. Op de grafiek zien we dat de buildtime linear stijgt met de griddensity, terwijl de rendertime nagenoeg constant blijft. Dit kunnen we verklaren doordat in een uniform gevulde ruimte de griddensity een goede benadering is voor de werkelijke density.
Vergelijking
We kunnen nu beide structuren vergelijken. We zien dat de build time bij de BVH dramatisch toeneemt bij stijgend aantal objecten, terwijl de stijging in mindere mate gebeurt bij het CompactGrid. Dit is te verwachten aangezien een BVH extra build time gebruikt om zo een specifiekere structuur te bouwen. We zien echter dat bij een groot aantal bollen de BVH ook een veel hogere render time heeft. Dit kunnen we verklaren doordat we gebruik maken van een uniforme verdeling van objecten, waardoor de grid een nagenoeg perfecte structuur is om deze scene voor te stellen. De hoge rendertime van de BVH wordt dan veroorzaakt doordat deze structuur complexer is als een grid en traversal dus duurder.