7 comments

  • ANighRaisin43 days ago
    Binary Space partitioning (<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Binary_space_partitioning" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Binary_space_partitioning</a>) is an elegant algorithm that solves this issue. This has fallen out of popularity due to the invention of the depth buffer and the power of modern GPUs, but it was used in DOOM and Quake.<p>This technique, due to the unique limitation of the children&#x27;s drag-and-drop coding platform, Scratch, has made it proliferate in the 3D community. <a href="https:&#x2F;&#x2F;scratch.mit.edu&#x2F;projects&#x2F;1203675921" rel="nofollow">https:&#x2F;&#x2F;scratch.mit.edu&#x2F;projects&#x2F;1203675921</a> is an example of such a project.
    • CamperBob243 days ago
      They seem to point out some examples in section 4 that can&#x27;t be handled with space partioning. I&#x27;ll confess I don&#x27;t follow the reasoning. Figure 4.2 is <i>the</i> go-to example of a sorting problem that is handled with BSP trees.
      • douira42 days ago
        Hi, it’s me, the author. In this thesis the focus was on techniques that don’t involve splitting the geometry into pieces, and the objects in Figure 4.2 can’t be partitioned without splitting. In later iterations of the implementation I have added splitting and I’ve detailed this in a talk I gave at Blanketcon 2025 (<a href="https:&#x2F;&#x2F;douira.dev&#x2F;assets&#x2F;document&#x2F;presentation-blanketcon25.pdf" rel="nofollow">https:&#x2F;&#x2F;douira.dev&#x2F;assets&#x2F;document&#x2F;presentation-blanketcon25...</a>), but the algorithm still attempts to avoid it as much as possible since it can explode the amount of quads in the worst case.
      • user____name43 days ago
        It works, it may just degenerate into a worst case scenario, and this particular scenario is pretty common in minecraft.<p>I think this is particular to auto-partitioning BSPs where the splitting planes are aligned with scene geometry.
        • taneq42 days ago
          For rendering voxel data like in a minecraft world I’d think an octree would be the go-to data structure.
    • ANighRaisin43 days ago
      A prettier demo: <a href="https:&#x2F;&#x2F;turbowarp.org&#x2F;984959784&#x2F;fullscreen?stuck&amp;hqpen&amp;fps=60" rel="nofollow">https:&#x2F;&#x2F;turbowarp.org&#x2F;984959784&#x2F;fullscreen?stuck&amp;hqpen&amp;fps=6...</a>
      • SiempreViernes42 days ago
        Man Dust in 1.6! At first instantly familiar but then things didn&#x27;t make sense and I realise I was in an alien land.
        • seg_lol42 days ago
          Within 2 seconds I knew exactly where this was and I haven&#x27;t played in 20 years. Dust is forever.
    • djmips43 days ago
      BSP was not used in Doom and Quake for rendering translucency.
      • taneq42 days ago
        Okay. BSP trees were the basis of the Doom WAD format and were used for visible surface determination and depth sorting, though. Seems relevant.
  • rendaw43 days ago
    Only slightly related, but since Minecraft seems to have a lot of community graphics programming associated with it I thought I&#x27;d ask here...<p>Does anyone know how those Minecraft realistic rendering mods work? I&#x27;m guessing today there&#x27;s a lot of RTX, but e.g. in 2018 there was still fairly impressive global illumination in SEUS Renewed. Minecraft is the definition of a world with dynamic geometry, and I&#x27;m not aware of any decent realtime GI algorithms for 3d. The lighting in base Minecraft is a super basic and ugly hack. I&#x27;ve seen Unity&#x27;s dynamic GI features and those are nowhere near as good either.
    • HeliumHydride43 days ago
      I don&#x27;t know much about lighting, but looking at the source code of the shaders might give a clue. <a href="https:&#x2F;&#x2F;modrinth.com&#x2F;discover&#x2F;shaders" rel="nofollow">https:&#x2F;&#x2F;modrinth.com&#x2F;discover&#x2F;shaders</a> has a lot of shaders that change the lighting. In other parts of the rendering pipeline, there are some very impressive mods utilizing GPU magic. One of them is Voxy (<a href="https:&#x2F;&#x2F;modrinth.com&#x2F;mod&#x2F;voxy" rel="nofollow">https:&#x2F;&#x2F;modrinth.com&#x2F;mod&#x2F;voxy</a>), one that massively increases render distance with mesh shaders and level-of-detail based rendering.
      • rendaw42 days ago
        Ah yeah, I was mostly interested in lighting, but that&#x27;s really interesting too.<p>Voxy&#x27;s LOD thing... so like, I guess what they do is when you&#x27;re in an area so that area&#x27;s high LOD assets are loaded, it computes the lower LOD and saves it, and then as you move around you get a library of more and more lower LODs? And since modifications to geometry only happen when you&#x27;re nearby the LODs are static? I&#x27;d love to see a writeup of that too...
    • amlib43 days ago
      A lot of non raytracing GI solutions uses voxel grids on top of the world geometry, SVOGI is one of the fancy ones used in cry engine games. I imagine since minecraft essentially gives a voxel grid to you for &quot;free&quot; most of minecraft GI solutions also uses a similar technique.
  • NotGMan43 days ago
    There was an old AMD&#x2F;Ati demo where they did per-pixel sorting, basicaly a per pixel linked list of fragments.<p>In general: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Order-independent_transparency" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Order-independent_transparency</a>
  • jacobp10043 days ago
    I had a blog post on something similar (but less sophisticated)<p><a href="https:&#x2F;&#x2F;jacobdoescode.com&#x2F;2025&#x2F;05&#x2F;18&#x2F;precomputing-transparency-order-in-3d" rel="nofollow">https:&#x2F;&#x2F;jacobdoescode.com&#x2F;2025&#x2F;05&#x2F;18&#x2F;precomputing-transparen...</a>
    • Sharlin43 days ago
      This is… essentially a BSP tree traversal without splitting polys that straddle a partition plane, right?
  • Lucasoato42 days ago
    If you’re marveled by these articles, I suggest you to read this blog: <a href="https:&#x2F;&#x2F;0fps.net&#x2F;" rel="nofollow">https:&#x2F;&#x2F;0fps.net&#x2F;</a><p>It inspired me so much back when I was graduating in mathematics, the author is a genius.
  • gatane43 days ago
    This looks interesting! Thanks for sharing it, wonder if anyone else has related content.
    • zoenolan43 days ago
      - Stencil Routed A-buffer [1]<p>- Multi-Fragment Effects on the GPU using the k-Buffer [2]<p>- Production Volume Rendering [3]<p>- Translucent Shadow Maps [4]<p>[1] <a href="https:&#x2F;&#x2F;developer.download.nvidia.com&#x2F;presentations&#x2F;2007&#x2F;siggraph&#x2F;stencil_routed_a-Buffer_sigg07.ppt" rel="nofollow">https:&#x2F;&#x2F;developer.download.nvidia.com&#x2F;presentations&#x2F;2007&#x2F;sig...</a><p>[2] <a href="https:&#x2F;&#x2F;www.sci.utah.edu&#x2F;~stevec&#x2F;papers&#x2F;kbuffer.pdf" rel="nofollow">https:&#x2F;&#x2F;www.sci.utah.edu&#x2F;~stevec&#x2F;papers&#x2F;kbuffer.pdf</a><p>[3] <a href="https:&#x2F;&#x2F;graphics.pixar.com&#x2F;library&#x2F;ProductionVolumeRendering&#x2F;paper.pdf" rel="nofollow">https:&#x2F;&#x2F;graphics.pixar.com&#x2F;library&#x2F;ProductionVolumeRendering...</a><p>[4] <a href="https:&#x2F;&#x2F;www.scribd.com&#x2F;document&#x2F;657069029&#x2F;Translucent-Shadow-Maps" rel="nofollow">https:&#x2F;&#x2F;www.scribd.com&#x2F;document&#x2F;657069029&#x2F;Translucent-Shadow...</a>
    • user____name43 days ago
      Emil Persson&#x27;s GPU BSP traversal demo (2017) <a href="https:&#x2F;&#x2F;www.humus.name&#x2F;index.php?page=3D&amp;ID=92" rel="nofollow">https:&#x2F;&#x2F;www.humus.name&#x2F;index.php?page=3D&amp;ID=92</a>
  • jjoe42 days ago
    Three-pass method analysis of the paper: <a href="https:&#x2F;&#x2F;papersplain.com&#x2F;sample&#x2F;19d93721d4de21982ca5d81ec63969919f1e8e9cc48ccc33f7630614d6a8e374" rel="nofollow">https:&#x2F;&#x2F;papersplain.com&#x2F;sample&#x2F;19d93721d4de21982ca5d81ec6396...</a>