Unreal Shader Compiler Bug: Order of Variables Affects Data Passed

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.

Hey Dolphiniac,

Thanks for the report but given the limited amount of information given about what your shader is doing and its relation to the hlsl compiler, we do not believe this is a bug with the Unreal Engine. If you want to post more information in order for us to replicate the issue you are having, please do.

Thanks.