[HN Gopher] GPU-Driven Clustered Forward Renderer
       ___________________________________________________________________
        
       GPU-Driven Clustered Forward Renderer
        
       Author : logdahl
       Score  : 73 points
       Date   : 2025-05-20 15:57 UTC (7 hours ago)
        
 (HTM) web link (logdahl.net)
 (TXT) w3m dump (logdahl.net)
        
       | zeristor wrote:
       | Apostrophe as a number separator?
       | 
       | Where's that from?
        
         | dahart wrote:
         | Switzerland and Italy for two.
         | https://en.wikipedia.org/wiki/Decimal_separator#
         | 
         | Also note C++14 introduced the apostrophe in numeric literals!
         | https://en.cppreference.com/w/cpp/language/integer_literal
        
           | lacoolj wrote:
           | Learn somethin new every day.
           | 
           | And I would never have known this existed without hackernews
        
           | logdahl wrote:
           | Interesting that Sweden explicitly do NOT use it... Not sure
           | where i picked it up! :-)
        
           | qingcharles wrote:
           | I've started using the underscore in my code since that is
           | becoming the (non-localized) standard and trendy:
           | 
           | https://en.wikipedia.org/wiki/Integer_literal#Digit_separato.
           | ..
        
         | m-schuetz wrote:
         | Apostrophe are nice because they are not ambiguous. Started
         | using them myself after getting used to them from C++ and
         | learning that they are used in switzerland.
        
       | unclad5968 wrote:
       | This is awesome! At the end you mention the 27k dragons and 10k
       | lights just barely fits in 16ms. Do you see any paths to improve
       | performance? I've seen some demos on with tens/hundreds of
       | thousands of moving lights, but hard to tell if they're legit or
       | highly constrained. I'm not a graphics programmer by trade.
       | 
       | I need a renderer for a personal project and after some research
       | decided I'll implement a forward clustered renderer as well.
        
         | logdahl wrote:
         | Well, the core issue is still drawing. I took another look at
         | some profiles again and seems like its not the renderer
         | limiting this to 27k! I still had some stupid scene-graph
         | traversal... But clustering and culling is 53us and 33us
         | respectively, but the draw is 7ms. So a frame (on the GPU-side)
         | is like 7ms, and some 100-200 us on the CPU side.
         | 
         | Should really dive deeper and update the measurements for final
         | results...
        
         | gmueckl wrote:
         | This seems fairly well optimized. There's probably room to
         | squeeze out some more perf, but not dramatic improvements.
         | Maybe preventing overdraw of shaded pixels by doing a depth
         | prepass would help.
         | 
         | Without digging into the detailed breakdown, I would assume
         | that the sheer amount of teeny tiny triangles is the main
         | bottleneck in this benchmark scene. When triangles become
         | smaller than about 4x4 pixels, GPU utilization for raterization
         | starts to diminish. And with the scaled down dragons, there's a
         | lot of then in the frame.
        
           | spookie wrote:
           | This is by far the biggest culprit OP, look into this.
           | 
           | You can try to come up with imposters representing these far
           | away dragons, or simple LoD levels. Some games do use
           | particles to represent far away and repeated "meshes" (Ghost
           | of Tsushima does these for soldiers far away).
           | 
           | Lot's of techniques in this area ranging from simple to
           | bananas. LoD levels alone can get you pretty far! Of course,
           | this is at the cost of having more _different_ draw calls, so
           | it is a balancing game.
           | 
           | Think about the topology too, hope these old gems helps
           | getting a grasp on the cost of this:
           | 
           | https://www.humus.name/index.php?page=Comments&ID=228
           | 
           | https://www.g-truc.net/post-0662.html
        
             | logdahl wrote:
             | Yeah, I use LODs already but as you say, even my lowest lod
             | far away is too many vertices. Imposter rendering seems
             | very interesting but also completely bonkers (viewing
             | angle, lighting)!
        
         | zokier wrote:
         | Worth noting that the GTX 1070 is nearly 10 year old
         | "mainstream" GPU. I'd imagine a 5090 or something could push
         | the numbers fair bit more higher.
        
       | fabiensanglard wrote:
       | This website has a beautiful layout ;) !
        
         | logdahl wrote:
         | Fun to see you ;) Love your site!
        
       | rezmason wrote:
       | Ten thousand lights! Your utility bill must be enormous
        
         | Flex247A wrote:
         | Lights in games use real electricity :)
        
           | amelius wrote:
           | Even the stars use real electricity.
        
             | cluckindan wrote:
             | Not really, nuclear fusion doesn't run on electrons.
        
       ___________________________________________________________________
       (page generated 2025-05-20 23:00 UTC)