The scenario:
I built a custom shader to do a special render pass in order to cause a permanent effect on my scene by walking through it, a la The Unfinished Swan. Since my current project is kind of artsy, we have high-poly meshes, so I did all my mathy calculations in the vertex shader, and defined an output float for the change factor and made the pixel shader a simple passthrough.
When it came to testing, though, I had no output from my shader, so through some debugging, I found that a literal value as the output color caused the change I expected, albeit without the fidelity of my calculations, but the change factor passed from the vertex shader defaulted to 0, no matter what I had set it to previously.
The fix:
In my vertex shader, I had defined the output in the following way:
…out float4 clipPos : SV_POSITION,
out float transitionFactor : ARBITRARY_SEMANTIC)
When I changed the order to:
…out float transitionFactor : ARBITRARY_SEMANTIC,
out float4 clipPos : SV_POSITION)
The transitionFactor was magically passed through unharmed. No external changes.
I can only assume this is an unknown hlsl compiler bug, so please, look into this, Epic.