Personal record: 18 trillion triangles back

(L) [2007/10/18] [capisce] [Personal record: 18 trillion triangles] Wayback!

Scene containing 18 trillion triangles (640000 instances of 28 million poly lucy model):


[IMG #1 ]


Took 10 minutes to render [SMILEY Smile]
_________________
~capisce
[IMG #1]:Not scraped: https://web.archive.org/web/20071026162517im_/http://srodal.net/ray/terrain_lucy2.png
(L) [2007/10/18] [GaRRiLL] [Personal record: 18 trillion triangles] Wayback!

How many days your computer was on, while building 2 accelerating structures?  [SMILEY Smile]

A lot of space is sky [SMILEY Wink]
(L) [2007/10/19] [capisce] [Personal record: 18 trillion triangles] Wayback!

Here's another from a different viewpoint:


[IMG #1 ]


I let this one render for ~10 minutes as well. A single pass (one primary ray and one sun/shadow ray per pixel) takes ~24 seconds. Loading lucy.ply takes 36 seconds. Building a BIH for the Lucy statue takes 46 seconds for a BIH of 90 MB. The terrain is a 16385x16385 height map with a 4096x4096 texture. Loading the terrain and building a kd tree of 384 MB takes 38.5 seconds. The height map and texture use respectively 512 MB and 64 MB. The BIH containing the 640000 model instances consumes 10 MB and takes 5 seconds to build. In total the raytracer consumes 2.7 gigs when rendering this scene, and total start-up time is roughly two minutes. The biggest chunk of memory is the vertex and triangle data for the Lucy statue. Both the model and the terrain acceleration structures are cut off at a pretty low depth to decrease the memory requirements, so rendering would have been faster with a higher depth. Each leaf node of the terrain contains 32 triangles at the moment, which isn't terribly efficient [SMILEY Smile]


Oh, and zooming up to a point where the whole terrain is visible directly below isn't a problem, but then the statues become too small to be visible [SMILEY Smile]
_________________
~capisce
[IMG #1]:Not scraped: https://web.archive.org/web/20071026162517im_/http://srodal.net/ray/terrain_lucy3.png
(L) [2007/10/19] [greenhybrid] [Personal record: 18 trillion triangles] Wayback!

hi capisce,


I already saw your new post on your blog due google-alert. Looks like you're targetting a full implementation of multi level instancing, not? Good work so far!


I have some questions: IMHO 64MB for the 18MTris-Lucy sounds a bit too low to me, even for 32bit floats.


* Do your render tri-lists, strips or something else?

* Was the 64MB for the BIH-structure only, or including Lucy? How big is the Lucy-geom itself?

* Lucy Tris-per-Leaf?
_________________
[LINK http://greenhybrid.net/ greenhybrid.net]

Real Men code Software Graphics.
(L) [2007/10/19] [capisce] [Personal record: 18 trillion triangles] Wayback!

Indeed, the BIH is 90 MB, the Lucy model itself consumes 1.5 gigs of memory, which is quite far from optimal. I currently store 4 floats per vector for padding, and also my Triangle struct is a bit too general, storing separate indices for vertex positions, vertex normals, and texture coordinates.


I'm considering making my Model class template-based and using a StoragePolicy for specifying whether to optimize for size or for flexibility.


The BIH has on average 7.2 triangles per leaf at the current max depth, but in the scene above the terrain seems to be the bottleneck with its 32 triangles per leaf.
_________________
~capisce
(L) [2007/10/20] [capisce] [Personal record: 18 trillion triangles] Wayback!

Well, I decided to see how far I could push it, so here's a scene with slightly more than one quadrillion triangles (36 million instances):


[IMG #1 ]


The secondary hierarchy (the hierarchy of instances) is 400 MB. I managed to squeeze the memory requirements for Lucy down to 535 MB for the model and 200 MB for the BIH (I said 90 MB earlier, but that was just the tree and not the triangle indices).
_________________
~capisce
[IMG #1]:Not scraped: https://web.archive.org/web/20071026162517im_/http://srodal.net/ray/terrain_lucy4.png
(L) [2007/10/20] [Phantom] [Personal record: 18 trillion triangles] Wayback!

That's pretty awesome. [SMILEY Smile]
_________________
--------------------------------------------------------------

Whatever
(L) [2007/10/20] [toxie] [Personal record: 18 trillion triangles] Wayback!

not bad indeed! (remember, some guys were writing "scientific" papers about such massive amounts of geometry until recently)
_________________
Eat plutonium death you disgusting alien weirdos!
(L) [2007/10/20] [lycium] [Personal record: 18 trillion triangles] Wayback!

hehe, instancing can be fun like that :)


you could make a "lucy of lucies", i.e. just replace all triangles in the lucy model with instances of the lucy model ;) you'll need more memory for the 3x3 matrix + offset than just the offset vector, but i think that would be pretty funny...
(L) [2007/10/20] [toxie] [Personal record: 18 trillion triangles] Wayback!

cool idea.. you could get away with the increased mem by using lucy as "normal" top level hierarchy and calculating the transformation of the low level lucys on the fly using the triangle normal of the top level lucy triangles.
_________________
Eat plutonium death you disgusting alien weirdos!
(L) [2007/10/20] [lycium] [Personal record: 18 trillion triangles] Wayback!

hey that's a pretty good memory saving idea!


i suppose one can nest this a number of times, to make a "lucy fractal"... then you render it at a stupidly high res (e.g. 24k pixels tall), and marvel at the silly things modern technology allows us to do ;)
(L) [2007/10/20] [madd] [Personal record: 18 trillion triangles] Wayback!

Pretty cool.


Reminded me of Figure 13 in [LINK http://www.cs.cornell.edu/~srm/publications/EGSR07-vol.html]


You could also try something like that [SMILEY Smile]
(L) [2007/10/21] [capisce] [Personal record: 18 trillion triangles] Wayback!

In case you don't read my [LINK http://srodal.blogspot.com/ blog], I rendered a movie as well: [LINK http://srodal.net/ray/lucy_terrain.avi]
_________________
~capisce
(L) [2007/10/21] [toxie] [Personal record: 18 trillion triangles] Wayback!

so is this the actual world record (number of primtives per frame) in visualizing massive geometry or what??  :)
_________________
Eat plutonium death you disgusting alien weirdos!
(L) [2007/10/22] [lycium] [Personal record: 18 trillion triangles] Wayback!

hmm, such records are kinda pointless because you can just use an implicit regular grid to instance as many N-million meshes as you like, which in turn instance themselves, etc... in the end, all the fuss is about a screenful of incoherent noise! ;)
(L) [2007/10/22] [capisce] [Personal record: 18 trillion triangles] Wayback!

Indeed, to break one of these records just add another hierarchy level [SMILEY Smile]
_________________
~capisce
(L) [2007/10/22] [fpsunflower] [Personal record: 18 trillion triangles] Wayback!

Another trick is to allow for cycles in your scenegraph. Then you get an infinite amount of objects!
(L) [2007/10/22] [greenhybrid] [Personal record: 18 trillion triangles] Wayback!

for world records there should then be rules like "N non-instanciated objects" and then the option quanitzed/unquantized and so on I think, or "N objects per pixel per unit time or so", yay [SMILEY Razz]
_________________
[LINK http://greenhybrid.net/ greenhybrid.net]

Real Men code Software Graphics.

back