1
- Shader "Post Processing/Custom Motion Vector Texture"
1
+ Shader "Post Processing/Custom Motion Vector Texture"
2
2
{
3
3
Properties
4
4
{
25
25
float4 _MotionTex_ST;
26
26
float _MotionAmount;
27
27
28
- struct appdata
29
- {
30
- float4 vertex : POSITION ;
31
- float2 uv : TEXCOORD0 ;
32
- float3 normal : NORMAL ;
33
- float4 tangent : TANGENT ;
28
+ struct appdata
29
+ {
30
+ float4 vertex : POSITION ;
31
+ float2 uv : TEXCOORD0 ;
32
+ float3 normal : NORMAL ;
33
+ float4 tangent : TANGENT ;
34
+ };
34
35
35
- };
36
+ struct v2f
37
+ {
38
+ float2 uv : TEXCOORD0 ;
39
+ float4 vertex : SV_POSITION ;
40
+ float3 normal : NORMAL ;
41
+ float4 tangent : TANGENT ;
42
+ float4 transposedTangent : TEXCOORD1 ;
43
+ };
36
44
37
- struct v2f
38
- {
39
- float2 uv : TEXCOORD0 ;
40
- float4 vertex : SV_POSITION ;
41
- float3 normal : NORMAL ;
42
- float4 tangent : TANGENT ;
43
- float4 transposedTangent : TEXCOORD1 ;
44
- };
45
-
46
- v2f vert (appdata v)
47
- {
48
- v2f o;
49
- o.vertex = UnityObjectToClipPos (v.vertex);
50
- o.uv = TRANSFORM_TEX (v.uv, _MotionTex);
51
- o.normal = mul ((float3x3 )UNITY_MATRIX_MVP , v.normal);
52
- o.normal = o.normal*0.5 +0.5 ;
53
- o.tangent = mul (UNITY_MATRIX_MV , v.tangent);
54
- o.transposedTangent = (mul (UNITY_MATRIX_IT_MV , v.tangent))*0.5 +0.5 ;
55
- return o;
56
- }
45
+ v2f vert (appdata v)
46
+ {
47
+ v2f o;
48
+ o.vertex = UnityObjectToClipPos (v.vertex);
49
+ o.uv = TRANSFORM_TEX (v.uv, _MotionTex);
50
+ o.normal = mul ((float3x3 )UNITY_MATRIX_MVP , v.normal);
51
+ o.normal = o.normal * 0.5 + 0.5 ;
52
+ o.tangent = mul (UNITY_MATRIX_MV , v.tangent);
53
+ o.transposedTangent = (mul (UNITY_MATRIX_IT_MV , v.tangent)) * 0.5 + 0.5 ;
54
+ return o;
55
+ }
57
56
58
57
float4 FragMotionVectors (v2f i) : SV_Target
59
58
{
60
- half4 c = tex2D (_MotionTex, i.uv);
61
- c.rg = (c.rg * 2 - 1 ) * _MotionAmount; //Using color texture so need to make 0.5 neutral
62
- half4 t1 = i.tangent * 0.005 ; //sides of tire
63
- half4 t2 = c * float4 (i.transposedTangent.r* 2 , i.transposedTangent.g* 2 , 0 , 1 ); //front of tire
64
- half4 t3 = lerp (t2, t1, c.b); //Lerp between front and side of tire
59
+ half4 c = tex2D (_MotionTex, i.uv);
60
+ c.rg = (c.rg * 2.0 - 1.0 ) * _MotionAmount; // Using color texture so need to make 0.5 neutral
61
+ half4 t1 = i.tangent * 0.005 ; // Sides of tire
62
+ half4 t2 = c * float4 (i.transposedTangent.r * 2.0 , i.transposedTangent.g * 2.0 , 0.0 , 1.0 ); // Front of tire
63
+ half4 t3 = lerp (t2, t1, c.b); // Lerp between front and side of tire
65
64
return t3 * _MotionAmount;
66
65
}
67
66
68
67
ENDCG
69
68
}
70
69
}
71
- }
70
+ }
0 commit comments