Hi, I am trying to get the world position of the fragment into my fragment shader so I can shape the output based on a formula but Im not sure how to retrieve the world position of the fragment correctly
//
Shader "Unlit/SGD"
{
Properties
{
_HeadPos("HeadPos" ,Vector) = (0,0,0)
_eyeToTarget("eyeToTarget" ,Vector) = (0,0,0)
_Eccentricity("Eccentricity" ,Float) = 0.0
_Alpha("Alpha", Range(0,1)) = 0.095
_FlickerFreq("FlickerFreq", Range(0,120)) = 10
}
SubShader
{
Tags {
"RenderType" = "Transparent"
"Queue" = "Transparent"
}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float _Alpha;
float _FlickerFreq;
float3 _HeadPos;
float3 _eyeToTarget;
float _Eccentricity;
struct MeshData
{
float4 vertex : POSITION;
};
struct Interpolators
{
float4 vertex : SV_POSITION;
float3 worldPos : TEXCOORD0;
};
Interpolators vert(MeshData v)
{
Interpolators o;
o.worldPos = mul(unity_ObjectToWorld, v.vertex);
o.vertex = UnityObjectToClipPos(v.vertex);
return o;
}
float4 SquareWave(float In) {
return 1.0 - 2.0 * round(frac(In));
}
float IntensityStim(float3 HeadPos, float3 eyeToTarget, float Eccentricity, float3 fragPos) {
return (acos(dot(eyeToTarget, (HeadPos - fragPos))) / ((0.0098 * radians(Eccentricity)) + radians(0.1009)));
}
float4 frag(Interpolators i) : SV_Target
{
float4 Col = SquareWave(_Time.y * _FlickerFreq);
Col.a = _Alpha * IntensityStim(_HeadPos,_eyeToTarget,_Eccentricity,i.worldPos);
return Col;
}
ENDCG
}
}
}