@sjb3d TBH though - if you don't need to support a ton of shaders and a ton of drawcalls (codegen, shader specialization) then life is easy... you can even write some reflection and dynamic binding system as perf won't kill you. That's how EA's "Ignite" (aka RNA) worked (sport games). I imagine that Dreams was mostly a few shaders that hammered the GPU 100% without having to deal with pesky drawcalls etc. The hard problem is to get great iteration times when you have 100k shaders per "level"