xcessive
Epic Poster
.[M:5000]
Posts: 526
|
Post by xcessive on Aug 19, 2011 0:30:08 GMT
The power of datastructures: www.youtube.com/watch?v=Mi-mNGz0YMkIf you aren't excited about this heres why you should be: - Using voxels in an octree with the optimizations in the above video means you can render things at an unlimited distance, zoom in slowly, and see every hair and pore on someones skin. The only limit is the artist, there isn't a polygon count anymore, since its all ray-traced based on volume. - You can scan objects in from the real world and have them used directly in a game. Not just geometry but their textures too. - Applying Newtonian physics to objects in the game becomes hilariously easy and accurate. You could do it for every grain of matter if you had enough computation power trivially. - Truely dynamically destructible/constructable environments. - Real collisions, not just bounding sphere, or estimations. - Full real time lighting for ANY sized world. - Ridiculously cool looking terrain, since its is all volumetric and thus the "overhang" problem from polygon rendering is gone: www.youtube.com/watch?v=tnboAnQjMKE&feature=related- DETAIL. - MORE DETAIL. - MORE DETAIL THAN YOU CAN IMAGINE. And before anyone tells me voxels suck because you can't do animation, its just matrix transformations, and its been done: www.youtube.com/watch?v=tkn6ubbp1SESo why aren't we using them? Well they use up a lot of memory, even with octrees. And they are slow, with the latest and greatest hardware you can get about ~20fps at full screen resolutions. In a few years time though...
|
|
prads
Elite Poster
[M:0]
It's a shame that PI isn't an integer :(
Posts: 361
|
Post by prads on Aug 20, 2011 5:07:03 GMT
Unless we have a huge memory to store large amount of voxel data and faster secondary storage devices, this method will be slow. Currently streaming isn't always an option cause streaming is slow. But this method looks promising.
|
|
xcessive
Epic Poster
.[M:5000]
Posts: 526
|
Post by xcessive on Aug 20, 2011 5:41:53 GMT
Unless we have a huge memory to store large amount of voxel data and faster secondary storage devices, this method will be slow. Currently streaming isn't always an option cause streaming is slow. But this method looks promising. Incorrect. Thats the whole point of a sparsely populated voxel octree. It cuts storage down to the point where it can be handled in main memory with sizes comparable to a polygon frame buffer. You only need to stream as much as you would using a normal polygon based renderer.
|
|
prads
Elite Poster
[M:0]
It's a shame that PI isn't an integer :(
Posts: 361
|
Post by prads on Aug 20, 2011 7:05:29 GMT
This is true, but the problem is you can't expect the same field of view in every frame. More voxels has to be streamed faster to main memory if field of view changes too quickly.
Streaming from hard disk is slow.
|
|
xcessive
Epic Poster
.[M:5000]
Posts: 526
|
Post by xcessive on Aug 20, 2011 11:19:32 GMT
This is true, but the problem is you can't expect the same field of view in every frame. More voxels has to be streamed faster to main memory if field of view changes too quickly. Streaming from hard disk is slow. You don't seem to be realizing that a polygon system has to stream an equal amount. Thats the whole point of this data structure....
|
|
prads
Elite Poster
[M:0]
It's a shame that PI isn't an integer :(
Posts: 361
|
Post by prads on Aug 20, 2011 14:35:01 GMT
You don't seem to be realizing that a polygon system has to stream an equal amount. Seriously? Equal amount? Polygon system uses LESS memory than voxel. Here, I will quote the nvidia research team (who did those research on octree voxel): That proves what I was saying the whole time: Secondary Storage Devices I/O speed is the bottleneck and unless we can speed up Secondary Storage Device, voxel method will never be faster.
|
|
xcessive
Epic Poster
.[M:5000]
Posts: 526
|
Post by xcessive on Aug 21, 2011 0:58:04 GMT
Size is not always = to speed. The old problem with voxels is that they chewed through memory and performance. Now they just chew through memory. The reason for this is that they only need to stream very small amounts from disc due to this data structure. The whole octree without optimizations still needs to be stored on disc, however again its massively reduced. If you read my comments you you'll realize I never said Voxel based engines weren't slow, all I said was it not the streaming thats the bottleneck (although its pretty bad). Its the need for raytracing, as its an O(n^n) algorithm.
However in computer graphics its not about being the fastest, its about being fast enough, and standard hardware will soon be able to handle voxel engines. The top of the range cards already can. Hence this entire thread.
|
|
prads
Elite Poster
[M:0]
It's a shame that PI isn't an integer :(
Posts: 361
|
Post by prads on Aug 21, 2011 2:17:50 GMT
The top of the range cards already can. Hence this entire thread. Yeah sure they can, if you think 25 fps good enough. all I said was it not the streaming thats the bottleneck (although its pretty bad). Less than 100 MB per second is not just bad, it's worse.
|
|
xcessive
Epic Poster
.[M:5000]
Posts: 526
|
Post by xcessive on Aug 22, 2011 0:38:27 GMT
The top of the range cards already can. Hence this entire thread. Yeah sure they can, if you think 25 fps good enough. all I said was it not the streaming thats the bottleneck (although its pretty bad). Less than 100 MB per second is not just bad, it's worse. Most people can't tell the difference between 30, or 60. In fact anything too high makes it hard to watch since animation relies on ghosting of images. DVD run in 24, 25 or sometimes 30 FPS. Videos used to play in 24. The cinema typically uses 25 or 24 FPS. Once a game gets to about ~30 FPS I know I can't tell the difference between that and 60. Do some research - you are clearly taking shit out of your ass. Monitors work best at 25-35, or 55-65 frames per second since it matches their refresh rate, using vsync typically sets your game to either 30 (or 60) fps. If 24 FPS is good enough for the film industry, then I'm going to go ahead and stick to my claim that 25fps is "good enough" as a starting baseline benchmark to say something is playable. Did you even watch the videos I posed? Do they look extremely laggy to you? No, they look more or less playable. The de facto standard is 30-60 FPS for artifactless game play. 25 FPS is damn close, and in fact a lot of the videos I posted are running in excess of 30. In a few years time that will be bumped up to at least 35 FPS instead of 25FPS as a minimum. In terms of HDD speed: Considering you would only need to read at most one megabyte per second, and a HDD has a cache typically of 32mbs. That means you could theoretically get 0.001 second read times (pure cache reads), since the next read block is always in cache. In fact thats the beauty of an octree, its basically B-Tree mixed with a raytracing tree/grid, but culled for repeating voxel data. How do you think SQL databases can randomly access times much lower than 0.01/sec for huge amounts of data stored on disc? Its B-Trees my friend, allowing you to sequentially read optimized sizes of data from the cache, while the HDD caches ahead during reading. That the whole point of the octree, it now allows this, making it viable on current hardware. In fact thats the entire point of this thread. Because of this data structure you can now read it fast enough from disc, and store enough of it in RAM that you dont need to read huge amounts at once. In fact, to prove this to you. Go and play minecraft, that uses an efficient sparse voxel octree for its terrain/trees..etc. Notice how it streams from hard-disc during play? The bottleneck is the generation of new terrain dynamically, and RAYTRACING. Heres why, lets say worst case scenario during a render loop we need to read 2 mbs of data. That will take us (im going to be very generous with this) at least 0.01 seconds, given its in the cache, and you have a super slow HDD and have to wait for the bus because something else is using it. After this we need to raytrace. This is a nlog n algorithm. A very small amount of voxel data will make n about 10000. 10000*log 10000. Thats 40 000 iterations. And since each loop could potentially be n, as it has to cross check with each other voxel object that makes the big O n(nlog n) giving us 400 000 iterations for our worst case scenario. You do the math. This is definitely the bottleneck. Of course both these steps can be optimised. But I am no expert and I wouldn't be able to talk with any authority on that. I will grant you that loading a new scene is extremely slow, and massive open worlds without a pregenerated index would be completely useless in a voxel engine.
|
|
prads
Elite Poster
[M:0]
It's a shame that PI isn't an integer :(
Posts: 361
|
Post by prads on Aug 22, 2011 3:52:48 GMT
DVD run in 24, 25 or sometimes 30 FPS. Videos used to play in 24.Yes, because they use motion blur. But fast moving objects can still skip the scene. This isn't always good for games. The cinema typically uses 25 or 24 FPS.Read this to know why it works: en.wikipedia.org/wiki/Movie_projectorOnce a game gets to about ~30 FPS I know I can't tell the difference between that and 60.In most action and FPS games, 30 fps would be a disaster. In 60 fps, a player will get twice the amount of visual information than they would get in 30 fps, that would make it easy for them to make quick reaction. you are clearly taking shit out of your ass.You wish I was. Monitors work best at 25-35Anything below 60 Hz in CRT monitor will give flickers and nasty headache to its user. Some users can't use it below 90 Hz. Even though it's different for LCD since they don't have flickering issue, ideal refresh rate is 60 Hz. Did you even watch the videos I posed? Do they look extremely laggy to you? No, they look more or less playable.Yes, I did watch it. But not much is going on in that video, a camera is moved around the world and that's it. Games do more than that, so saying it's playable or not doesn't make any sense. It would be good if they showed some cars moving at different speed and some characters walking around. Go and play minecraft, that uses an efficient sparse voxel octree for its terrain/trees..etcMinecraft isn't so good example here 'cause I though we were talking about game will realistic looking graphics with details and what not. For achieving that Disk I/O speed has to be improved, there's no way of getting around that.
|
|
edenwax
VIP
v5 Beta Tester[M:5000]
Posts: 1,266
|
Post by edenwax on Aug 22, 2011 21:29:21 GMT
*braces for 13 paragraph response narrated by Morgan Freeman*
|
|
xcessive
Epic Poster
.[M:5000]
Posts: 526
|
Post by xcessive on Aug 23, 2011 1:03:23 GMT
I don't feel the need to do a big post, since prads has completely missed the point and started nit picking peripheral things. Instead I am going to repost what I have already said, and let prads read, because it seems so far hes just gone through and found things irrelevant to my argument to complain about, so I shall distill it for him.
"So why aren't we using them? Well they use up a lot of memory, even with octrees. And they are slow, with the latest and greatest hardware you can get about ~20fps at full screen resolutions. In a few years time though..."
" I'm going to go ahead and stick to my claim that 25fps is "good enough" as a starting baseline benchmark to say something is playable"
As you can see I never claimed it was good yet. Especially for anything more complex than Minecraft. My point is that the software is there, and in a few years time the hardware will be too. Which is why this is an exciting topic. Thus your entire post nitpicking about why 25fps isnt quite good enough for games is besides the point. In fact I said myself- "The de facto standard is 30-60 FPS for artifactless game play". Which I will now add depends on the game you are playing of course.
|
|
prads
Elite Poster
[M:0]
It's a shame that PI isn't an integer :(
Posts: 361
|
Post by prads on Aug 23, 2011 1:43:54 GMT
The only reason I started "nitpicking" about why anything less than 60 fps isn't good enough in my last post is because of you said this:
If that was true, there would be no need for higher refresh rate.
Finally.
|
|
xcessive
Epic Poster
.[M:5000]
Posts: 526
|
Post by xcessive on Aug 23, 2011 4:30:29 GMT
Ok it seems all you wanted then was clarification of terms.
Say you were playing a slow paced RTS, or even RPG, 30fps would be fine, hence my 30-60 comment. I agree that 60 (or even higher if possible) is better for a FPS or other fast paced games. But I never suggested we start making FPS games based on a voxel engine.
If a game only has a large new event happening at least every 0.5 of a second (again the RPG or RTS example) then you would barely notice a difference between 30 and 60 frames per second. Again, hence my comment.
If you don't consider 30fps playable for any sort of game, thats pretty silly. I would say its perfectly playable, but not optimal, and may hinder game play to an extent in games where its all about reaction time. Obviously I wasn't clear enough with my point that voxels engine are nearing being playable for some sorts of games, but are DEFINITELY not optimal for others.
Is my logic and terminology now well clarified enough for you?
|
|
prads
Elite Poster
[M:0]
It's a shame that PI isn't an integer :(
Posts: 361
|
Post by prads on Aug 23, 2011 5:24:17 GMT
Ok it seems all you wanted then was clarification of terms. Say you were playing a slow paced RTS, or even RPG, 30fps would be fine, hence my 30-60 comment. I agree that 60 (or even higher if possible) is better for a FPS or other fast paced games. But I never suggested we start making FPS games based on a voxel engine. If a game only has a large new event happening at least every 0.5 of a second (again the RPG or RTS example) then you would barely notice a difference between 30 and 60 frames per second. Again, hence my comment. If you don't consider 30fps playable for any sort of game, thats pretty silly. I would say its perfectly playable, but not optimal, and may hinder game play to an extent in games where its all about reaction time. Obviously I wasn't clear enough with my point that voxels engine are nearing being playable for some sorts of games, but are DEFINITELY not optimal for others. Is my logic and terminology now well clarified enough for you? Yes, I agree with everything you wrote there.
|
|