Thanks!
So I’ve spent quite some time trying to get this work, with no luck so far 
I tried doing it in 3 different ways.
Adding #pragma target 3.0 and removing the uv’s for the normal map didn’t seem to free enough interpolators. I still couldn’t compile the shader.
The shader inputs looks like this:
sampler2D _MainTex;
sampler2D _MatCap;
sampler2D _BumpMap;
samplerCUBE _Cube;
half4 _ReflectColor; // Used to modulate reflection colors, could be optimized away but doesn't really seem to help.
struct Input {
float2 uv_MainTex;
//float2 uv_NormalMap; // Optimized away for now.
// Values needed for the lit sphere sampling.
float3 tangentX;
float3 tangentY;
float3 worldRefl;
INTERNAL_DATA
};
And I do compute the view related tangents using the tangent space rotation in the custom vertex program, as shown in the help example.
So I tried using the reflective pass from the built-in reflective shader:
SubShader {
UsePass "Reflective/Bumped Unlit/BASE"
CGPROGRAM
.... surface shader code ....
ENDCG
}
This compiles, but reflections are not seen. Doesn’t matter if I put the UsePass before or after my surface shader code.
Then I tried putting 2 surface shaders together in one sub shader:
SubShader {
UsePass "Reflective/Bumped Unlit/BASE"
CGPROGRAM
.... surface shader code ....
ENDCG
CGPROGRAM
....reflections shader code written as surface shader....
ENDCG
}
This compiles but it looks like the last CGPROGRAM on the list just overrides the previous one.
How can it be made additive as it seemed to be the case in 2.6?
So that the output from reflections shader would be added to the output of the first shader?
I tried using Pass { } directive to put the two shaders into their own passes, but couldn’t get the syntax to compile.
SubShader {
Pass {
Name "Blah"
CGPROGRAM
.... surface shader code ....
ENDCG
}
}
Pass {
Name "Blah2"
CGPROGRAM
.... reflections shader code ....
ENDCG
}
}
}
Thanks again,
Gennadiy