Overall I have this problem where I look at GPUs and systems like OpenGL or Vulcan and my fingers itch to just jump in and mess with them and wheedle out the strangest, coolest things they can produce! Find different ways to connect the blocks they have given us together.

But
Most of the systems like Unity or Unreal don't give you full proper access to that. They connected the blocks together for you and gave you a system that gives you nice realistic shadows and tonemapping and such.

But you can't rearrange the blocks.
They'll give you some little trapdoors. They'll let you do "shaders". It always feels too limiting to me! I don't want to just select the colors on the surface of the model. I want to do some weird stochastic process and generate triangles from it and then shade those.
So I go back to basics. I write my own renderer in C, or use an engine like http://lovr.org  where the rendering choices are largely farmed to the user. And it's great! I make the weird little graphics demos I want.

But
But then I have a new problem. I can make my weird graphics demos. But if I want, for some reason, to display a scene with a model and some shadows and realistic lighting…suddenly I'm at the bottom of a mountain I don't think I can scale. I'm re-implementing all of Unreal myself
Maybe I've got some really cool stylized postprocessing effect. But that stylized postprocessing effect would be most effective if it were postprocessing a realistically rendered scene. I want, like, HALF of Unreal's fancy realistic renderer, and then branch off into my own thing
But if you start to learn how "pro" renderers like Unreal work, you realize that's barely even viable. The nice things Unreal and Unity do are possible because they've imposed a certain structure on the scene. Blast off your own triangles & they won't be, say, in the shadow map.
Then layer on that things like Unity/Unreal are abstractions designed to work on multiple GPUs and APIs and you start to realize they *can't* give me the kind of control I want. They can at best build trapdoors at certain junctures.

I've yet to feel satisfied with the trapdoors.
(Postscript: The trapdoors in UE4 actually seem quite good; they've built a C++ API that allows you to directly call the primitives of their graphics abstraction layer.

Problem: Last I tried it, they didn't…document this trapdoor API. At best they had a doxygen style reference)
Someday, someday I'm gonna find a block of Vulcan/WebGPU example code that I actually clearly understand how to go about extending, and y'all will all be doomed. Gonna hack y'all's visual cortexes and collapse western civilization or something
You can follow @mcclure111.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: