Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us $3,400 per month for bandwidth bills alone, and since we don't believe in shoving popup ads to our registered users, we try to make the money back through forum registrations.
  • Post
  • Reply
DefiniteIntegral
Jul 13, 2001



Getting away from DirectX/OpenGL for a moment, does anyone have experience with Nvidia's Optix realtime raycasting?

I have used it to create simple tests and it seemed to perform OK at low resolution, eg 1024x768 on some average hardware (GTX 560 Ti & Intel i7 Bloomfield 2.9 Ghz).

But I wonder how it performs in real world applications? Youtube has dozens of tech demo's but almost nothing in the way of real applications using the library.

It would be nice to know I am not wasting my time before I invest heaps of it coding the CUDA programs and a scene graph and managing GPU paging and all the other related parts. All that is necessary as Optix is just a raycasting library only, it is not a complete scene management solution like Nvidia's SceniX which I do not wish to use for various reasons.

Any experiences people can share about Optix would be helpful.

Adbot
ADBOT LOVES YOU

DefiniteIntegral
Jul 13, 2001



Heh yeah, I always get them the wrong way around. I meant ray tracing.

DefiniteIntegral
Jul 13, 2001



Hubis posted:

It depends a lot on your ultimate use-case. How dynamic is your scene? What's your scene complexity? What light transport/shading technique are you using -- Primary + Shadow, or full path tracing? For a 560 Ti, I wouldn't expect to be ray-tracing Crysis or anything. Since performance depends a lot on acceleration structures (which have to be updated when the scene changes) which structures you use for which objects in the hierarchy and how often they need to change will end up impacting your performance a lot.

There's more information here, although it's obviously based on somewhat older hardware: http://graphics.cs.williams.edu/pap...rker10OptiX.pdf

I'd like to use static, semi-dynamic and full-dynamic geometry using Sbvh, Bvh and Lbvh accel structures respectively. I only plan to use simple Whitted raytracing, so just usual radiance + shadow casts and probably some limited use of reflection/refraction.

My plan is to divide the scene into sections which will contain a static hull and be connected via portals. So attached to the Optix root node would be a series of Selector nodes which only continue traversing if the section ID stored in the ray payload & selector node match. Portals would just alter the payload section ID and re-cast from root. I am hoping that keeping the scene divided into small sections will make calculating Bvh and Lbvh fast enough to be done in real-time, but haven't tested it yet. Also this should make paging fairly easy.

I am just worried that checking N selector nodes each time casting from a portal might lower the framerate, not to mention the recursive casting required for portals. If Optix 2.5 GPU-side calculation of Lbvh is fast enough, I am wondering if I would get a better framerate just using a single volume hierarchy for the entire scene instead of sections & portals. That is to say, 3 volume hierarchies, one for each geometry type. I guess it will depend a lot how many sections there are in the scene and positioning of the portals themselves.

I have only tested Optix using Bvh accel on a very small fully dynamic scene, so I am not certain how well portals would work.

DefiniteIntegral fucked around with this message at Apr 27, 2012 around 16:12

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply