[HN Gopher] Voxel Displacement Renderer - Modernizing the Retro ...
       ___________________________________________________________________
        
       Voxel Displacement Renderer - Modernizing the Retro 3D Aesthetic
        
       Author : huhtenberg
       Score  : 242 points
       Date   : 2024-05-24 09:54 UTC (13 hours ago)
        
 (HTM) web link (blog.danielschroeder.me)
 (TXT) w3m dump (blog.danielschroeder.me)
        
       | 7bit wrote:
       | Impressive.
        
       | zevv wrote:
       | https://web.archive.org/web/20240524065427/https://blog.dani...
       | 
       | https://www.youtube.com/watch?v=1xFEbXWstCM
        
       | rspoerri wrote:
       | Looks nice, but without shadows it's missing an important (and
       | often very complex) feature.
        
         | JKCalhoun wrote:
         | Yeah, thinking it may need a second pass to produce shadows.
         | It's not clear to me that you could "bake them in" since
         | textures are reused.
         | 
         | Stretch goal, dynamic lighting -- like someone carrying a torch
         | ahead of you in a tunnel and illuminating as they went.
         | 
         | To be sure though, the retro vibe is 100% nailed as is.
        
           | ImHereToVote wrote:
           | Just use a second uv for the lighting.
        
         | pcdoodle wrote:
         | Sometimes the lack of something shifts our focus elsewhere.
         | Could be a feature.
        
           | septune wrote:
           | The benefits of having less is underrated.
        
       | phendrenad2 wrote:
       | This is inspiring. Makes me want to try to duplicate the results
       | using old-fashioned bump mapping.
        
       | zellyn wrote:
       | That's a very appealing aesthetic (possibly because I'm old
       | enough to remember downloading games over a 2400 baud modem!).
       | Very nice work!
       | 
       | That video looked great, and (at least for me) felt very
       | evocative. In the section where the roof was too low, I started
       | feeling claustrophobic and cramped.
       | 
       | Those rock and sandy-floored caverns, and the cavern with
       | boulders (which are gorgeous!) made me think I'd love playing a
       | Myst or LucasArts-style adventure game using this as the
       | renderer. Spelunking through caves, or archeological digs, etc.
       | 
       | Can't wait to see where you take this!
        
         | Varriount wrote:
         | I agree. To me this is _very_ evocative of the pixel-art /retro
         | look, even moreso than the low-poly Doom/Wolfenstein look.
        
           | prox wrote:
           | If the author realizes it, he could make the next Valheim
           | hit.
        
           | anthk wrote:
           | No polygons in Doom/Wolf3D.
           | 
           | The example from Back To Saturn X2 can be played on a
           | software rendered engine with no concept of polygons at all.
        
         | gsliepen wrote:
         | Imagine a 3D version of Noita with this aesthetic, and perhaps
         | using smoothed particle hydrodynamics to make the falling sand
         | engine scale to 3D.
        
         | abluecloud wrote:
         | completely agree with the aesthetics!
         | 
         | my issue with it that it looked so good, but the architecture
         | felt wrong. in the part with the low ceiling, it felt like
         | those blocks hanging from the roof were defying physics
        
       | hatenberg wrote:
       | I love love love it. Ultima Underworld comes to mind.
        
       | nikolay wrote:
       | I wish this was open-sourced! I wish!
        
       | omoikane wrote:
       | 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)
        
         | jayd16 wrote:
         | Its 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 wrote:
         | Basically 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 wrote:
           | I'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 wrote:
             | Parallax 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 wrote:
             | Err, 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 wrote:
         | Iirc 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
        
           | low_tech_love wrote:
           | Sorry for being pedantic, but it's ray "casting" not tracing.
           | It's similar in some ways but very different in others.
        
         | torginus wrote:
         | My 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..
        
       | tcsenpai wrote:
       | Sorry if I am dumb but...I was wondering if this in practice
       | would theoretically be able to convert or render directly old
       | games and graphics (provided the starting point is compatible) in
       | such a "remastered" way.
       | 
       | In any case I am at the third read and I think I understood
       | enough to say "wow, looks and feels great. Would play TES Arena
       | like that."
        
       | vsuperpower2020 wrote:
       | This is really cool, but with all homemade voxel engines I have
       | to ask the same thing. Where is the game?
        
         | scheeseman486 wrote:
         | It's not a real voxel engine, the world geometry itself isn't
         | much different from Quake.
        
       | hgs3 wrote:
       | This is neat, but I'm wondering how well the authors approach
       | will map to animated 3D models. I'm guessing, at best, it might
       | look something like the "Voxel Doom" mod for Doom [1] [2].
       | 
       | [1]
       | https://media.moddb.com/cache/images/mods/1/55/54112/thumb_6...
       | 
       | [2]
       | https://media.moddb.com/cache/images/mods/1/55/54112/thumb_6...
        
         | cma wrote:
         | The article has a footnote about Voxel Doom, but more about
         | Voxel Doom's environment approach and not monsters:
         | 
         | > Now that I've laid out all this context, I want to give a
         | shout out to the Voxel Doom mod for classic Doom. The mod's
         | author replaced the game's monsters and other sprites with
         | voxel meshes to give them more depth, some very impressive
         | work. Then, in late 2022, he began experimenting with using
         | parallax mapping to add voxel details to the level geometry.
         | This part of the mod didn't look as good, in my opinion -- not
         | because of the author's artwork, but because of the fundamental
         | limitations that come from using parallax mapping to render it.
         | This mod wasn't the inspiration for my project -- I was already
         | working on it -- but seeing the positive response the mod
         | received online was very encouraging as I continued my own
         | efforts. -
         | 
         | It does say though that the approach supports animated doors
         | and stuff so combined with mesh and texture flipbook I think it
         | could be used for original doom looking monsters too, but sharp
         | curvature areas I think have the most artifacts with shell
         | mapping and he mentions limitations to the meshing of levels so
         | maybe not.
        
       | Animats wrote:
       | There's another approach - Deep Bump.[1] Addresses the same
       | problem, but in a totally different way.
       | 
       | Deep Bump is a machine-learning tool which takes texture images
       | and creates plausible normal maps from them. It's really good at
       | stone and brick textures like the ones this voxel displacement
       | renderer is using. It's OK at clothing textures - it seems to be
       | able to recognize creases, pockets, and collars, and gives them
       | normals that indicate depth. It's sort of OK on bark textures,
       | and not very good on plants. This probably reflects the training
       | set.
       | 
       | So if you're upgrading games of the Doom/Wolfenstein genre,
       | there's a good open source tool available.
       | 
       | [1] https://github.com/HugoTini/DeepBump
        
         | zellyn wrote:
         | If I read that blog post correctly, it's a model to infer
         | normal maps from textures, not a new way to render geometry.
         | 
         | The article in this thread is more about a small-voxel-based
         | representation of displacement maps. A tool like Deep Bump
         | could conceivably be used to aid in the creation of texture
         | assets for the system discussed in this thread.
        
           | Animats wrote:
           | Yes, it's a model to infer normal maps from textures. Then
           | you can use a modern PBR renderer on old content and have a
           | better illusion of depth. It doesn't introduce the blockiness
           | of voxels.
        
             | ricardobeat wrote:
             | It seems the blockiness of voxels is the whole point.
             | Applying normal maps to low-res textures doesn't look good
             | and completely changes the look. Generating high-res
             | textures from the originals makes it even worse.
             | 
             | This voxel approach preserves the aesthetics of the old
             | pixelated (now voxelated) graphics in a much more pleasing
             | way.
        
       | SuperHeavy256 wrote:
       | This should be the future of modernizing retro 3D games. God,
       | this is beautiful.
        
       ___________________________________________________________________
       (page generated 2024-05-24 23:00 UTC)