Though I was confident this was just a metaphor, I did try cracking a walnut using this method. I submerged three walnuts in a jar with some tap water, and let them sit for three years before trying to open them.
It was a let-down: they were easier to open, but certainly not by hand, I still had to use a nutcracker. They smelled bad, too. I did not try eating them.
> The environment, too, is unusually protected. The cave is hard to reach and is filled with foul-smelling hydrogen sulfide gas, in concentrations too great for most animals to live there.
But then game/engine devs want to use the vertex shader producing a uv coordinate and a normal together with a pixel shader that only reads the uv coordinate (or neither for shadow mapping) and don't want to pay for the bandwidth of the unused vertex outputs (or the cost of calculating them).
Or they want to be able to randomly enable any other pipeline stage like tessellation or geometry and the same shader should just work without any performance overhead.
A preprocessor step mostly solves this one. No one said that the shader source has to go into the GPU API 1:1.
Basically do what most engines do - have preprocessor constants and use different paths based on what attributes you need.
I also don't see how separated pipeline stages are against this - you already have this functionality in existing APIs where you can swap different stages individually. Some changes might need a fixup from the driver side, but nothing which can't be added in this proposed API's `gpuSetPipeline` implementation...
reply