Bonsai: A Voxel Engine, from scratch

(github.com)

143 points | by jesse__ 9 hours ago

7 comments

  • another_twist 6 hours ago
    The author mentions simplicity in their Readme. I would be very interested to read their journey and some of the decisions they made where they preferred simplicity. More of this please !
  • xyzsparetimexyz 4 hours ago
    It's really not that hard to ray trace the voxels instead of using rasterization and allows for way higher voxel counts.

    https://dubiousconst282.github.io/2024/10/03/voxel-ray-traci...

    • qoez 1 hour ago
      It's way more performant though and looks fine so I see the reasoning why you would do rasterization instead
      • rendaw 56 minutes ago
        Can you add more details? This seems to directly contradict GP. GP said ray tracing can do higher voxel counts = ray tracing is more performant (than rasterization).
    • ghc 3 hours ago
      I've always wondered why voxel engines tend to produce output that looks so blocky. I didn't realize it was a performance issue.

      Still, games like "C&C: Red Alert" used voxels, but with a normal mapping that resulted in a much less blocky appearance. Are normal maps also a performance bottleneck?

      • codeflo 2 hours ago
        Before Minecraft, basically all voxel engines used some form of non-axis-aligned normals to hide the sharp blocks. Those engines did this either through explicit normal mapping, or at the very least, by deriving intermediate angles from the Marching Cubes algorithm. Nowadays, the blocky look has become stylish, and I don't think it really even occurs to people that they could try to make the voxels smooth.
        • reactordev 2 hours ago
          Voxels have been around since the 1980s. The smoothness came from that beautiful CRT and its inability to display crisp images. Normals weren’t really used until early 90s and used heavily by games like Comanche by NovaLogic.

          The reason why Minecraft voxels are blocks is because Notch (Markus Persson) famously said he was “Not good at art”. He didn’t implement the triangulation and kept them unit blocks. Games that had voxels AND were triangulated that came before Minecraft were Red Faction, Delta Force, Outcast just to name a few.

          The point is, voxels aren’t anything special, no more than a texel, or a vertex, or a splat, a normal, or a uv. It’s just a representation of 3D space (occupied/not occupied) and can just as easily be used for culling as it can for rendering. The Minecraft style because popular because it reminds people of pixels, it reminded people of legos, and Minecraft was so popular

          • squigz 1 hour ago
            > it reminded people of legos,

            I don't think this should be understated. LEGO are easy and fun to build with and don't require a lot of artistic talent. The same goes for block-based games like Minecraft.

        • wongarsu 2 hours ago
          I think marching cubes is still decently popular in games with modifiable terrain, we just stopped referring to it as voxels
  • tyleo 3 hours ago
    I’ve been using Voxel Max for the last couple weeks to draw voxel art for a game and it’s incredible.

    I’ll have to try some of my assets out in this engine.

  • wiz21c 7 hours ago
  • Joel_Mckay 6 hours ago
    Nice project, this tutorial was also helpful for a hobby volumetric data display routine. Cheers =3

    "I Optimised My Game Engine Up To 12000 FPS" ( https://www.youtube.com/watch?v=40JzyaOYJeY )

    https://github.com/vercidium-patreon/meshing

  • javantanna 6 hours ago
    btw the license is nuts
    • nonoesp 6 hours ago
      WTFPL (Do What The F*k You Want To Public License) https://en.wikipedia.org/wiki/WTFPL
      • andersa 3 hours ago
        This seems like a bad idea. Surely the warranty and liability disclaimer found in licenses like MIT exists for a reason.
        • gorgoiler 2 hours ago
          Off the top of my head the CAPITALIZED WARRANTY DISCLAIMER is specific to a subset of states in the US. If you’re outside those jurisdictions (or any other where it is required) then for aesthetic or principled reasons I can see why you wouldn’t kowtow to the legalese spiral.
        • swiftcoder 2 hours ago
          > Surely the warranty and liability disclaimer found in licenses like MIT exists for a reason

          Obviously IANAL, but I entirely don't see how the WTFPL (which does not ask the consumer to accept any restrictions) would create an implied contract (which would seem to be a necessary precondition for a warranty obligation)?

          • codeflo 2 hours ago
            IANAL either, so my own legal theories are as creative as yours, but I'd like to offer the following data point: All unrestricted open-source licenses that were written by actual lawyers, from MIT to CC0, have found it necessary to include such a liability clause.
            • Zambyte 2 hours ago
              In what sense is the MIT license "unrestricted"?
              • codeflo 1 hour ago
                In the sense that when people want to use a piece of MIT-licensed software in another piece of software, they don't in practice find themselves restricted from doing so by the conditions of the license. "Permissive" might be a word I should rather have used.
                • swiftcoder 50 minutes ago
                  The MIT license does place one specific license restriction on its users. Specifically: "subject to the following conditions: the above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software"
                  • Zambyte 37 minutes ago
                    This is what I was getting at. The MIT license has restrictions, so calling it "unrestricted" doesn't make sense.
    • Zambyte 5 hours ago
      To be fair, most are.
    • nurettin 3 hours ago
      Better than LGPL which prevents you from static linking even if you give attribution.