4 ms·
I wonder how this approach compares to Unreal Engine 5 nanites, or maybe Unreal Engine is actually doing something similar? I remember one motivation for using
by omoikane 2y ago
I wonder how this approach compares to Unreal Engine 5 nanites, or maybe Unreal Engine is actually doing something similar?
I remember one motivation for using voxels in older games (like Comanche[1]) is that you can get seemly more complex terrains that, when modelled using triangle meshes, would have been more expensive on similar hardware. The author mentions 110FPS on a RX 5700 XT, I am not sure how that compares to other approaches.
[1] https://en.wikipedia.org/wiki/Comanche_(video_game_series) https://en.wikipedia.org/wiki/Comanche_(video_game_series)
- jayd16 2y agoIts hard to say exactly because the OP doesn't go into the runtime mesh used but my guess is its quite different form Nanite. Nanite assumes high poly authoring of objects and works to stream in simplified chunks such that the rendered triangles are not less than a pixel wide. Displacement maps are a bit redundant because geometry can be naturally very detailed, there's no reason to use a texture map for it. (There is a case for Landscapes but that's a unique case) This seems to be using a displacement and a low poly mesh to generate high poly but 'voxelized' geo on load.
- Scaevolus 2y agoBasically unrelated. He's using geometry shaders to generate voxel mesh details-- perhaps with some LOD optimizations, while Nanite is a GPU-driven rendering technology that adapts triangle density to aim for a given fidelity target. Nanite can use displacement maps and perform tessellation, but it uses an alternate pathway that's not necessarily more efficient than feeding it a high-poly asset to render.
- nicebyte 2y agoI'd be very surprised if they were actually using geometry shaders (at least this conclusion can't be drawn from their post). Geom shaders are basically dead weight, a holdover from a bygone time, and are better avoided for modern renderers. The techniques they're drawing on mentioned in the post - parallax mapping, shell mapping - do not generate explicit geometry, rather they rely on raymarching through heightfields in the frag shader. It's more likely that they're doing something like that.
- scheeseman486 2y agoParallax mapping breaks on the edges of polygons though, while this technique seems to actually add geometry since the edges of surfaces are appropriately detailed and bumpy.
- Scaevolus 2y agoErr, right, they're doing the transformations CPU-side. The blog hints that it's related to shell maps, so maybe the new mesh geometry is densest on the sharp edges?
- fho 2y agoIirc Comanche used a ray tracing approach to render the terrain [1]. No Voxels there, just a 2D height map that is sampled. (They called it "VoxelSpace" ... so some confusion is warranted) [1] https://github.com/s-macke/VoxelSpace https://github.com/s-macke/VoxelSpace
- low_tech_love 2y agoSorry for being pedantic, but it’s ray “casting” not tracing. It’s similar in some ways but very different in others.
- usrusr 2y agoMy mind parses any mention of "voxel" that isn't accompanied by a screenshot from one of the original Comanche levels as a lie. The reality is that Comanche was more like a displacement-map twist on the Doom "2.5D" than something that really deserves the term "voxel". But it was so magic, did anything else ever come close?
- torginus 2y agoMy guess its the exact same technique used in the Comanche games - or at least the same results can be achieved with it. Contrary to popular belief, those games didn't use true 3D voxels - they used a heightmap that stored a color and height value in the terrain texture which they raymarched into. You could recreate the same look with raymarching into the texture in a shader which I suspect would look very similar to what the blog post achieved..
- anthk 2y agoThere's a libre game which does that but in 3D and OpenGL, Trigger Rally.