Sign in to follow this  
nullbear

2.5D Dynamic LOD Voxel Renderer

Recommended Posts

So uhh, I suck at programming, art, etc. And yet im still overly ambitious, whatever. Heres what i want to be working on:

The art style of the game is "2d" pixel art, with Dungeon%20Master_5.png styled graphics.

At least, thats how its supposed to "look" and "feel" to the player. I don't really know how to explain this.

The world is 3d, the render engine is effectively 3d as well. The world may as well be made up of voxels at different levels of detail, similar to the way Zbrush does its thing. From very far away, a tree would look like a few green and brown pixels, but from closer, you would be able to see each knot in the bark, every detail in a leaf, etc. Potentially up to an infinite level of detail, but not necessarily.

 

How do i do this? 
 

As well, how beastly would a machine need to be that is dedicated to this render engine?

Lets assume that all the details of the render engine are handled by an external USB device or something fancy like that, since it would be rather impractical to presume that a pc would be able to process this on its own.

 

Any feedback/questions are welcome. Im sorry i cant really explain this very well...

Share this post


Link to post
Share on other sites

Oh, And to boot, Throw in physics-based lighting.

 

What you see is completely dependent on Light (probably best simulated as a color, position, and "energy" value.), Viewpoint (Mostly just simulated as a position, but might have some fancy stuff added like seeing colors differently, seeing things a bit lighter than others, etc.), and Material properties, which have yet to be determined. But, in essence, It should be possible to create a scene like the one above, using only a light source, a viewpoint, and an array of voxels with material properties that affect the way the light is reflected, refracted, lost, etc. But only in relation to the viewpoint. (This would be tricky, since a lot of this would rely on having light "bounce" off the stone, part of it returning to the viewpoint, part of it lighting other areas, and returning to the viewpoint with less "energy" etc.)

 

Oh yeah, and one more 'impossible' thing to add. Make it an MMO, or at least with a client-server style infrastructure. While it would be possible to just say that all the rendering is handled client-side, How would all those "infinitely detailed" voxels be dealt with? Constant file-streaming, perhaps? Would it be faster to just stream the rendered images to the client, rather than stream the world/area, and wait for the client to render it? I feel like the latter option would be less intensive on the client, making it possible for the "machine" to be cheaper for a consumer, at the cost of a much more expensive server.

Edited by nullie

Share this post


Link to post
Share on other sites


How do i do this? 

 

Years of programming expertise in computer graphics and in engineering tradeoffs. Despite the image you posted, your description kind of sounds like Minecraft, so perhaps you should research the techniques used to make that.

 


As well, how beastly would a machine need to be that is dedicated to this render engine?

 

That depends on the tradeoffs you make. Modelling worlds and rendering them nicely is all about trickery and "faking it" to get something that looks good enough and runs fast enough.

 


Lets assume that all the details of the render engine are handled by an external USB device or something fancy like that, since it would be rather impractical to presume that a pc would be able to process this on its own.

 

External USB device? Huh?

Share this post


Link to post
Share on other sites

Well on the consumer side, it would seem cheaper to just purchase a machine that communicates with your computer, Than to purchase a highly specialized "console" designed to run "games" and simulations using this engine.

 

But then again, I'm also considering beefing it up even more, without taking the consumer into consideration. And making it into a sort of next-gen arcade machine, where you pay to use it for a while, rather than owning your own.

 

And yes, I suppose its similar to minecraft, On steroids, or something. Since its intended to have maybe 10k Voxels for every 1m. (Or as few as 1 Voxel for 1km) and with a severely beefed up lighting system.

Edited by nullie

Share this post


Link to post
Share on other sites

Minecraft has no LevelOfDetail.

Dunno what this 2.5D means. 2.5D is only andvantagous for texture mapping on old hardware.

 

PC hardware today is fully capable to overburden a lot of brains in real time.

My problem with LOD is that always BDRF comes to my mind. And then I want global illumination ... 
See how much RAM you have, assume an octree and then assuming your low res on screen the player has to move very close to anything to see your voxels..

Share this post


Link to post
Share on other sites


My problem with LOD is that always BDRF comes to my mind. And then I want global illumination ... 
See how much RAM you have, assume an octree and then assuming your low res on screen the player has to move very close to anything to see your voxels..

 

I don't understand this. What is BDRF? 

I expect that to fully realise this idea, it'll be required to have a "super-computer" built designed to specialize in running the engine (renderer, and other)

 


Modelling worlds and rendering them nicely is all about trickery and "faking it"

 

A lot of the world-modelling is hoped to be highly dependent on proc. gen., dealing with each independent brick, tree, leaf, etc.

 

Share this post


Link to post
Share on other sites

Well, I suppose that if Euclidean can figure out how to do a ridiculous amount of rendering on the computer using trillions of voxels, you shouldn't have too much to worry about. Check out their latest video of their tech.

 

Conclusion: The performance you will have depends mostly on the algorithms you choose.

Share this post


Link to post
Share on other sites

I've seen the euclidean thing, And as far as i can tell, It doesnt really support dynamic lighting.

I dont neccessarily need the engine to run in real-time, but closer to something like a beefed up blender "cycles"

As well, a huge part of this is expected to be working on the hardware side, as well as the soft side.

Share this post


Link to post
Share on other sites

I should be firm in using this abbreviation as cycles uses it.
I meant bidirectional reflectivity distribution or so.
A smooth surface is well investigated, and can be modeled by simple equations.

In the low res CPU render  ages  I liked voxels. Today? 4k displays, special hardware. Bruteforce polygon soup just looks too good today!

Share this post


Link to post
Share on other sites


Lets assume that all the details of the render engine are handled by an external USB device or something fancy like that, since it would be rather impractical to presume that a pc would be able to process this on its own.

 

If you think that this sentence makes any sense, you do not have the sufficient knowledge or understanding to even start doing what you describe. How do you think a render engine can be handled on an external USB device?

 

Start with something simpler and work your way up.

Share this post


Link to post
Share on other sites

I've seen the euclidean thing, And as far as i can tell, It doesnt really support dynamic lighting.

I dont neccessarily need the engine to run in real-time, but closer to something like a beefed up blender "cycles"

As well, a huge part of this is expected to be working on the hardware side, as well as the soft side.

Based on what I can gather from your stated requirements, you'd get the most bang for your buck by just writing HLSL shaders and taking advantage of instancing.

You don't *need* an external USB device and you don't want one either! Problems:
-How fast is the communication link between a USB 3.0 device and the CPU? Very slow (relatively speaking).
-If you use specialized hardware, you put that hardware requirement on your end users. That's going to add a big barrier for entry for people who want to play your game. This brings up a question you need to answer for yourself: is this a hobby project or do you want to release this commercially? If its a hobby project to "learn", then what's the value in learning something you won't be able to use in the industry? If its a hobby project to just have fun and play around, you can do whatever you want.

-A GPU IS a super computer which does things in parallel very well. All you have to do is send it the data you want it to do operations on, send the instructions, and let 'er rip. Rendering millions of voxels with dynamic lighting would be childs play for most modern GPU's. Who needs an external USB device?! Harness the power of that GPU, it's begging you to take advantage of all of its raw processing power.

Share this post


Link to post
Share on other sites

Check out Delver. It's a game that is pretty much the way you described it, with 3D graphics and lighting. Every pixel in the game isn't a voxel, but rendered more similar to Minecraft, which is to say a bunch of textured cubes.

 

I suppose you can use even smaller cubes for finer 3D detail for a truer voxel-like look, given that the game generally has a claustrophobic close-quarters feel and you can limit your view distance greatly. But as Phil_t has implied, the biggest obstacle is getting the programming experience needed to do something like this.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this