So, I realize there are much higher priorities right now, but I've been converting a lot of code from OO to Jobs lately on a contract project I'm on. What I'm finding is that while the job system is fast, the GPU is still a whole lot faster in many cases. As such, I end up moving systems between CPU and GPU code a lot, or having libraries of routines which need to be maintained across both. It seems like the natural evolution of this is to write everything in C# and just be able to cross compile it into a shader when needed. The semantics between writing compute and jobs are not that different, and I could imagine with a large and significant amount of work getting it down to some kind of target attribute at compile time. I could even imagine compiling both options like a shader variant and launching them based on some kind of system analysis or load balancing tech. Certainly there would be a large number of challenges with this, but it seems in the ballpark. Even just being able to write everything in C# such that common functions can be shared would be huge. Of course, you might break determinism if you start moving things to GPUs, but for most things that's not an issue.