33
33
struct v2f
34
34
{
35
35
float2 uv : TEXCOORD0 ;
36
- float2 triuv : TEXCOORD1 ;
36
+ float3 color : TEXCOORD1 ;
37
37
float4 vertex : SV_POSITION ;
38
38
};
39
39
72
72
float aspectRatio = - UNITY_MATRIX_P [0 ][0 ] / UNITY_MATRIX_P [1 ][1 ];
73
73
74
74
float2 uv = float2 ((floor (v.vertex.z / texWidth) + 0.5 ) / texWidth, (fmod (v.vertex.z, texWidth) + 0.5 ) / texWidth);
75
- o.uv = uv;
76
75
77
76
float3 p = unpack (uv).xzy;
78
77
float4 vp1 = UnityObjectToClipPos (float4 (p, 1 ));
79
78
79
+ float3 c = tex2Dlod (_Col, float4 (uv,0 ,0 )).xyz;
80
+ o.color = c;
81
+
80
82
float sz = unpack_int (uv) * _Mag_param + _Mag_min;
81
83
float3x2 triVert = float3x2 (
82
84
float2 (0 , 1 ),
83
85
float2 (0.9 , -0.5 ),
84
86
float2 (-0.9 , -0.5 ));
85
- o.triuv = triVert[round (v.vertex.y)];
87
+ o.uv = triVert[round (v.vertex.y)];
88
+
89
+ if (length (c) < 0.1 && length (p) < 0.1 ) sz = 0 ;
86
90
if (abs (UNITY_MATRIX_P [0 ][2 ]) < 0.0001 ) sz *= 2 ;
87
91
sz *= pow (determinant ((float3x3 )UNITY_MATRIX_M ),1 /3.0 );
88
- o.vertex = vp1+float4 (o.triuv *sz*float2 (aspectRatio,1 ),0 ,0 );
92
+ o.vertex = vp1+float4 (o.uv *sz*float2 (aspectRatio,1 ),0 ,0 );
89
93
return o;
90
94
}
91
95
92
96
fixed4 frag (v2f i) : SV_Target
93
97
{
94
- float l = length (i.triuv);
95
- float3 c = tex2D (_Col, i.uv).xyz;
96
- if (length (c) < 0.001 && length (tex2D (_Pos, i.uv).xyz) < 0.1 ) clip (-1 );
98
+ float l = length (i.uv);
97
99
clip (0.5 -l);
98
- return float4 (c , 1.0 - pow (max (0.0 , abs (l) * 2.2 - 0.1 ), 0.2 ));
100
+ return float4 (i.color , 1.0 - pow (max (0.0 , abs (l) * 2.2 - 0.1 ), 0.2 ));
99
101
}
100
102
ENDCG
101
103
}
102
104
}
103
- }
105
+ }
0 commit comments