Your comments

Can you bold the changes in the fixed version to easily point the changes?

Can you show us the modification? I don't know how to apply the code from that post. The shader generated by shaderforge is too different from what I can read in GlassStainedBumpDistort.shader
Regards.

Edit:
Made this one, which is working well in single stereo without using that code. This is so confusing :)

Maybe they modified UNITY_PROJ_COORD or ComputeScreenPos to do the job by default?


Shader "Shader Forge/refract stereo single pass test" {
Properties {
_Color ("Color", Color) = (0.07843138,0.3921569,0.7843137,1)
_node_9734 ("node_9734", 2D) = "bump" {}
_node_8661 ("node_8661", Range(0, 1)) = 0
[HideInInspector]_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
}
SubShader {
Tags {
"IgnoreProjector"="True"
"Queue"="Transparent"
"RenderType"="Transparent"
}
GrabPass{ }
Pass {
Name "FORWARD"
Tags {
"LightMode"="ForwardBase"
}
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off

CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#define UNITY_PASS_FORWARDBASE
#include "UnityCG.cginc"
#pragma multi_compile_fwdbase
#pragma only_renderers d3d9 d3d11 glcore gles gles3 metal
#pragma target 3.0
uniform sampler2D _GrabTexture;
uniform float4 _Color;
uniform sampler2D _node_9734; uniform float4 _node_9734_ST;
uniform float _node_8661;
struct VertexInput {
float4 vertex : POSITION;
float2 texcoord0 : TEXCOORD0;
};
struct VertexOutput {
float4 pos : SV_POSITION;
float2 uv0 : TEXCOORD0;
float4 screenPos : TEXCOORD1;
};
VertexOutput vert (VertexInput v) {
VertexOutput o = (VertexOutput)0;
o.uv0 = v.texcoord0;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex );
o.screenPos = ComputeScreenPos(o.pos);
return o;
}
float4 frag(VertexOutput i) : COLOR {
#if UNITY_UV_STARTS_AT_TOP
float grabSign = -_ProjectionParams.x;
#else
float grabSign = _ProjectionParams.x;
#endif



float3 _node_9734_var = UnpackNormal(tex2D(_node_9734,TRANSFORM_TEX(i.uv0, _node_9734)));
float2 dist =(_node_9734_var.rgb.rg*_node_8661);
i.screenPos.xy += dist;
float4 sceneColor = tex2Dproj(_GrabTexture, UNITY_PROJ_COORD(i.screenPos));
////// Lighting:
////// Emissive:
float3 emissive = _Color.rgb;
float3 finalColor = emissive;
return fixed4(lerp(sceneColor.rgb, finalColor,_Color.a),1);
}
ENDCG
}
}
FallBack "Diffuse"

}

Same here. In extreme situations the shader may be deleted too :/

I really need this for the renderwithshader thing.

Oh, yes, you are right. Or when using tex2Dlod. So I can plug a 0 into a MIP input and we have a workaround here ^^
I have made some tests with a very simple one, without any custom code, switching between forward, deferred... but #pragma glsl never appears