Hacker News new | past | comments | ask | show | jobs | submit login

What makes voxels better or worse than polygons for this kind of game and art style?



With polygons, you must explicitly pass in every vertex and corresponding data (unless you use a geometry shader). This gets huge fast - with just usually around 12 32 bit floats per vertex (position, normal, material and tex coords). That is 48 bytes per vertex. Not only that, but each vertex must be processed (transformed) and the resulting polygon clipped, which is usually a more or less order-dependent operation and thus not well designed for multithreading on GPUs (they do use tiling though to address this I think, but usually this means redundant calculations).

With voxels, positions are inherently stored, and guaranteed to have some cache locality if they are uncompressed. Thus, GPUs are really good a chugging through large amounts of bitmaps, which is what I am doing (only rendering to bitmaps). With teraflops of compute power now, you can do trillions of flops every second, and in my case I can render about 1-2 billion voxels per second.

Additionally, doing procedural generation with polygonal surfaces is much more complex (I've done it, I know). Implementing stuff like voronoi patterns (used for the rocks) is trivial with voxels. Not the case with polygons, unless you are just wrapping voxelized data. Its the difference between evaluating a graph at every point, and calculating the graph at only the needed points. Voxels are implicit, polygons are explicit.

Really, you can think of VQ like a really fancy graphing calculator (in fact, all of the structures are just an extension of superellipsoids) (http://en.wikipedia.org/wiki/Superellipsoid)


Any books / resources I can read ?


I actually never read any technical book beyond a few pages, and tend to avoid papers which are typically too academic for my needs (I really just look at raw source, if anything).

My best recommendation - dive in and start coding. You are your own best teacher. :)




Applications are open for YC Summer 2020

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: