I just want to post a link to the alpha version of my RLE voxelrenderer. It doesnt have any unique features yet (also its just 3DOF), but thanks to nowadays CPU horepower, it is surprisingly fast enough to render a 10.000 x 10.000 x 1.000 (!) voxel scene at interactive rates ( about 10-20 fps on a 3Ghz Pentium-D ).
I'm now continuing to improve it so that it gets faster also with improved render quality. I think especially culling algorithms are necessary first, as there is still lots of overdraw ..
Oh, and as for the method used in Voxlap - I am wondering if it its called Sheap-Warp-algorithm. http://graphics.stanford.edu/papers/shear/ Its a paper of Siggraph 1994
regards, Sven
http://www.p0werup.de
Edited by Spacerat at
apegomp at
Re: Simple RLE Voxel renderer
Are the colors supposed to look like this: http://i225.photobucket.com/albums/dd202/highwingx3/colors.jpg? The trees look scary in "overdraw mode" :(
Edited by apegomp at
Slang at
Finally found a man working on a CUDA-based voxel renderer, you Sven! ;D (I myself unfortunately have been away from voxel research this year...but I'm still deeply interested.) Keep up the good work and don't hesitate to share your future results, please!
You are doing THE RIGHT THING. I strongly believe that using Marching Cubes algorithm with GPU rasterization will NOT be practical enough for large voxel-volumes. (Sure, GPU rasterization is invincible for coherent primary rays, but the Marching Cubes has critical issues: LOD and HSR.)
Spacerat at
apegomp said at
Are the colors supposed to look like this? The trees look scary in "overdraw mode" :(
Yes, the colors are simply the normal-vector (r=x,g=y,b=z) - its important for lighting calculations lateron. I will add a post once a better ( more beautiful ) version is included.
Slang said at
Finally found a man working on a CUDA-based voxel renderer, you Sven! ;D (I myself unfortunately have been away from voxel research this year...but I'm still deeply interested.) Keep up the good work and don't hesitate to share your future results, please!
You are doing THE RIGHT THING. I strongly believe that using Marching Cubes algorithm with GPU rasterization will NOT be practical enough for large voxel-volumes. (Sure, GPU rasterization is invincible for coherent primary rays, but the Marching Cubes has critical issues: LOD and HSR.)
Thank you for the support 8) I will keep up work and hope to show new results soon. Actually I already wanted to start this project much earlier, but unfortunately there was always something inbetween. I have seen you raycaster and your engine already some time ago - it's really impressive work. As you are registered in Japan, is there any chance that you live in the Tokyo area ? I'm living in Yokohama.
Yes, marching cubes might not be a good solution for the complete landscape, as its hard to combine with LOD. However, a combination of Marching cubes (MC) or Splatting and Raycasting together might be the best. Voxel+LOD for far and Marching Cubes or Splatting for near . The border where to switch might be at a voxel size of 1-3 pixels probably... The only difficulty for MC is, that it would require extra preprocessing, where the MC-elements need to be stored in an RLE kind of array as the RLE structure is not suited well for accessing neighbouring voxels while rendering..
Slang at
Spacerat said
As you are registered in Japan, is there any chance that you live in the Tokyo area ? I'm living in Yokohama.
Yeah, I live in the Tokyo area (actually Urayasu, Chiba, where people brainwashed by a certain 'Mouse' visit repeatedly from all over the country, you know). ;) By the way, I heard that you were part-time working for 3D Inc (ddd.co.jp), right? How long do you live in Japan?
Spacerat said
However, a combination of Marching cubes (MC) or Splatting and Raycasting together might be the best. Voxel+LOD for far and Marching Cubes or Splatting for near . The border where to switch might be at a voxel size of 1-3 pixels probably...
The hybrid approach seems to be a pretty good idea. In that way, you would only need to extract level-0 mipmap (original voxel-volume) by MC, hence you can certainly ignore the MC's LOD issue and fully exploit the extreme coherency of GPU rasterization. And yes, the voxel-volume data structure would be the key.
Actually, I had been thinking a raycasting-based scheme using Clipmap (pdf link), where you dynamically load mipmaps via Toroidal Loading and Real-Time Texture Streaming & Decompression (pdf link). I believe this is the most promising, practical and robust way to handle large voxel-volumes (thus games).
But anyway, raycasting itself is the first-priority problem. (Voxlap source code is still too hard for me to understand...Ken is awesome!)
Edited by Slang at
Spacerat at
Wow, the world is really small ;D. Yes I work in 3D, thats right - I wonder where you know me from. I'm now here for about 4 years.
The way to combine clipmaps with dynamic uncompression seems promising. Its the same scheme of geometry clipmaps and also my old HVox engine has a similar structure. I'm only not yet sure which compression might be the best choice - it needs to be fast and lossless, like zLib or rar.
As for the hybrid approach, it is not that new; there was already a paper at Siggraph 2005 called Far Voxels. As I understood, its a pretty similar approach, except that it uses splatting rather than voxels for far geometries. http://www.crs4.it/vic/data/papers/sig2005-farvox.pdf
Slang at
Spacerat said
Yes I work in 3D, thats right - I wonder where you know me from.
Well, it's already 21st century. In the information age right now, there is no privacy for an individual. 8) (Just kidding, sorry! Truth is, the 3D Inc's CTO Kano-san once mentioned about you in his blog post. I don't have any real connection with him, though.)
Honestly, I'm not familiar with splatting and data compression so I can't say much about those technologies now. But anyway, I am really convinced that Clipmap and real-time streaming & decompression is the best voxel-volume data management scheme for today's/future's hardware. (Although I honestly don't think future is bright -- Moore's law is dead and while NVIDIA pushes CUDA on high-end GPUs and Intel pushes Nehalem/Larrabee, most people no longer want to buy those stuff. So market-wise, I guess it would be better to target current standard PCs; the world's potentially most largest gaming platform.)
P.S. As you might know, this paper is pretty interesting, especially for making a voxel editing tool.
Edited by Slang at
Spacerat at
Slang said at
The 3D Inc's CTO Kano-san once mentioned about you
Ah, I was already wondering ^^
Slang said at
Honestly, I'm not familiar with splatting and data compression so I can't say much about those technologies now. But anyway, I am really convinced that Clipmap and real-time streaming & decompression is the best voxel-volume data management scheme for today's/future's hardware. (Although I honestly don't think future is bright -- Moore's law is dead and while NVIDIA pushes CUDA on high-end GPUs and Intel pushes Nehalem/Larrabee, most people no longer want to buy those stuff. So market-wise, I guess it would be better to target current standard PCs; the world's potentially most largest gaming platform.)
P.S. As you might know, this paper is pretty interesting, especially for making a voxel editing tool.
Splatting is very simple - its basically rendering a scene by particles. As for compression, I found a recent paper overviewing the different algorithms for volume-compression. However, combining multiple compression schemes was not considered unfortunately ..
Today I finished converting my Voxel-renderer to CUDA - if you download the rar again http://www.xinix.org/sven/main/publications/VoxelLandscape.rar there are a couple of new tests included now. The speed it not that high yet - its not optimized for GPU, but its already 2x-3x as fast as CPU.
As for the CPU/GPU development, I think that sooner or later GPU's might disappear and be replaced by multicore-CPU's. Intel already plans an 80 core CPU. However, it will take time until its done. Since then, CUDA still remains interesting.
Will you be going to Asia-graph ? http://asiagraph.jp It might be a chance to meet.
Yes, the algorithm that automatically generates 3D-textures seems very promising - also its funny that it was done by the university in my hometown in Germany, Konstanz. But what is still missing is a tool like Photoshop for Voxels.. Z-Brush comes close, but its almost impossible to use at high polygon counts..
Btw - today, Kanou san mentioned the increased access on his blog due to this forum :)
Slang at
Thank you for the paper on data compressions. I'll try to find time to look into it. (Well, I know how splatting works but I've personally never seen a detailed comparison to rasterization in a specific usage.)
Spacerat said
Today I finished converting my Voxel-renderer to CUDA - if you download the rar again http://www.xinix.org/sven/main/publications/VoxelLandscape.rar there are a couple of new tests included now. The speed it not that high yet - its not optimized for GPU, but its already 2x-3x as fast as CPU.
Wow, you are quick! Very impressive. ;D Do you have any plan to release the source code, by the way? I would really LOVE to learn from your code. ;)
Anyway, I'm very curious about how fast an optimized 6DOF version of your CUDA-based voxel raycaster will be. G80 is essentially 346 GFlops (128 ALUs clocked at 1.35 GHz with MADD), so it can be 30x faster (theoretically, of course) than a single-core 3 GHz CPU with SSE. However, actual raycasting performance is unclear, since voxel raycasting is not about long-running floating-point calculations, it's rather about mixed integer operations and lots of memory accesses. (With dynamic voxel-volume modification and per-voxel collision detection, I guess it might be eventually very tough to do on the CUDA GPU, but who knows...)
Spacerat said
Will you be going to Asia-graph ? http://asiagraph.jp It might be a chance to meet.
No, I won't unfortunately. Actually, I'm quite busy until next year. Do you get back to Germany after getting Ph.D in Japan, perhaps?
Regarding voxel editing tools, I must ask you this question: How do you voxelize polygonal models? GPU-based techniques? Or your own custom software voxelizer?
P.S. This thread seems to be getting inner and inner between you and me, so maybe we should discuss via e-mails hereafter. Would you e-mail me at yoshiharus.1987@gmail.com, please?
Philomath at
Slang said at
P.S. This thread seems to be getting inner and inner between you and me, so maybe we should discuss via e-mails hereafter. Would you e-mail me at yoshiharus.1987@gmail.com, please?
I know this is a little late but don't stop the conversation just because it is only between the two of you. Some of us rarely get time to catch up on things and I can tell there's a lot to learn from you both. Not to mention the links that have been posted are priceless!
If a moderator (that'd be you Ken ;) disagrees, just delete this post.