As mentioned multipass rendering would be a good topic. It took me a while to get the configuration right. Also maybe tricks to avoid CPU bottleneck with huge numbers of objects. You have already written about instancing but my Mac Pro CPU is at max while GPUs are sleeping.
-
-
-
I’m very interested in workload balancing. And I’m very curious about your use case: do you know if the CPU time is mostly spent on command buffer encoding or something else? Have you tried parallel command encoding, or are you effectively single-threaded?
-
The use case was vegetation rendering of rather large 3D models. I can’t remember what the CPU spent most time on and I wrote the code in 2016 so it would take some time to get it up and running again. I tried parallel command encoding but didn’t help much as far as I remember
-
Thinking about it it could be that I copied the 3D data each frame for each instancing-object. But I could be wrong. If you‘re interested I could dig out my thesis and have a look if I find the problems that I could not solve.
-
Makes sense. I’ve found calculating instance data, as well as computing matrices for skinned animation, to take up the bulk of CPU time in some cases, dominating encoding. At that point, you want some strategy (like a job system) for multithreading, which I haven’t written about.
End of conversation
New conversation -
-
-
I enjoyed the bits about scene graphs and app organization from the Modern Metal 2 post. I'd vote for more details on factoring the renderer into reusable parts and abstractions that would lead to minimal game engine. Love the posts!

-
There are some interesting avenues here: reusing constant buffers to scale the scene, pipeline caching for multiple material types, “externalizing” the scene representation, and so many things to add w/r/t scaling in general (parallel encoding), animation. It feels infinite.
End of conversation
New conversation -
-
-
HDR and wide color
-
I’m generally really bad at color spaces/math/management, but I’m seeing a lot of requests for HDR/multipass, so I may go in that direction.
End of conversation
New conversation -
-
-
Using spritekit’s skrenderer to do full scene shaders
-
Interesting. What particular effect(s) are you looking to achieve?
-
Stuff that takes a few passes like a bloom/glow or sun shafts
End of conversation
New conversation -
-
-
FXAA and others ported to Metal :)
-
Is FXAA still in common use? If so, I’d think it’d be trivial to port, given broad availability of DX/GL sample code. Which “others,” among the enormous zoo of AA techniques? I can’t keep track of all the acronyms

-
Sure thing it’s trivial. The idea is to do it cleanly and think whether there might be some Metal specific improvements. As for AA. Well SMAA f.ex.
End of conversation
New conversation -
-
-
Computation?
-
GPGPU is a broad category. Any specific examples?
-
It will be great to read something related to ML. Some ops or general post/pre processing or memory optimizations.
End of conversation
New conversation -
-
-
Best practices. App architecture for high performance but flexible rendering architecture. Dos and donts, tips and tricks. Life hacks. 10 easy metal hacks you wouldn’t believe!!! (Im sorry)
Thanks. Twitter will use this to make your timeline better. UndoUndo
-
-
-
Shadows and multipass rendering.
Thanks. Twitter will use this to make your timeline better. UndoUndo
-
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.