Jump to content
  • Advertisement
Sign in to follow this  
MrJoshL

Voxel Software Rendering Feasibility

This topic is 2380 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

If a program renders volumetric data, for example of the quality of Atomontage, could this be implemented with software rendering techniques as opposed to hardware acceleration? I have recently seen a software renderer (polygons) of the following quality: [media]
[/media] . Would it be possible to implement something like this in software rendering using volumetric data? Would there be additional graphics API's required such as the Windows GDI in the Windows API?

Share this post


Link to post
Share on other sites
Advertisement
Voxel rendering's bottleneck isn't the rendering per se, it's the voxel storage. If you have all your voxel data in low-latency memory, arranged in a nice acceleration structure, you can render it in software quite efficiently. Problems start when your voxel data gets bigger than your available memory and starts to spill onto the hard drive and you have to fetch it while hiding latency as best as possible.

So, yes, software voxel rendering is feasible. What library/API you choose to implement it with is, of course, up to you.

Share this post


Link to post
Share on other sites
This also depends on the quality you want to render with and the screen resolution.

For low quality look into raycasting methods. They often rely on single sampling and are extrmely fast with the right algorithms, but their quality with a single sample per pixel is often low. If you want to go that route look into 3DDDA and octree traversal algorithms. They are rather easy to thread. Look at Laine's papers on SVO traversal. Note with some tweaks this method looks very nice.

For medium quality look into cone tracing.

For higher quality (or "perfect" rendering) look into beam tracing.

For naive rendering look into polygon rasterization. In any case read the Larrabee article as it comes up sometimes for things like octree frustum culling. (Similar algorithm).

For handling the framebuffer look into pixeltoaster. Also this goes without saying, but work on your algorithms from a high level and optimize down. When you think you have things right start switching over to SIMD instructions.

Also if you render volumes front to back don't use source alpha minus one blending. It doesn't model volumes. This algorithm does.

Share this post


Link to post
Share on other sites
beside OpenCL and Cuda version, I've also a CPU version of my voxel tracer. The problems that you get are similar to those of a raytracer, the higher the resolution, the slower it gets.
With some smart memory management, it actually scales better on CPU than on GPU, as your GPU is just dependent on raw memory bandwidth, and having a lot of diverging ray paths, results in cache trashing between rays in the same warp/wavefront. On cpu, you can organize rays to travel coherent through memory, to maximize the cache usage.

Atm my GPU version is usually faster (quadcore intel Penryn vs NVidia GTX460), but with more complex models and some compression, the GPU version is faster (in smaller resolutions).


you can check out some voxel renderings in my gallery: http://twitpic.com/photos/michael_hpp , sometimes I state which version I've used, I think the bottom most picture with the animated imp was CPU. Edited by Krypt0n

Share this post


Link to post
Share on other sites
you can check out some voxel renderings in my gallery: http://twitpic.com/photos/michael_hpp , sometimes I state which version I've used, I think the bottom most picture with the animated imp was CPU.


Nice pictures! Kind of off topic but where is this scene from: http://twitpic.com/8iohd5/full Is it a freely available test scene or something you aquired privately?

Share this post


Link to post
Share on other sites
Ah, I recognise it now :-) Because of the cars I though it was a museum or something. They must have been added seperatly.

Share this post


Link to post
Share on other sites

Ah, I recognise it now :-) Because of the cars I though it was a museum or something. They must have been added seperatly.

Wait a second. I spoke too soon since I just took a quick glance. That doesn't look like that model at all. I've never seen that model he linked with the cars. Now I'm curious also.

Share this post


Link to post
Share on other sites

you can check out some voxel renderings in my gallery: http://twitpic.com/photos/michael_hpp , sometimes I state which version I've used, I think the bottom most picture with the animated imp was CPU.


Wow, those are IMPRESSIVE. Are any of those done in real time with software rendering? How big are those voxel models in file size?

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!