Import two UI audio packs (Casual Game Sounds U6 and Free UI Click Sound Effects Pack) including dozens of .wav files, metadata, license/artwork and documentation. Add TextMesh Pro resources and new fonts (KOMIKAX and LiberationSans) and associated materials. Update MainMenu UI (MainMenu.uxml), its controller (MainMenuController.cs), panel settings asset and refresh MainMenu and SampleScene unity scenes to use the new assets.
100 lines
3.4 KiB
HLSL
100 lines
3.4 KiB
HLSL
void VertShader(inout appdata_full v, out Input data)
|
|
{
|
|
v.vertex.x += _VertexOffsetX;
|
|
v.vertex.y += _VertexOffsetY;
|
|
|
|
UNITY_INITIALIZE_OUTPUT(Input, data);
|
|
|
|
float bold = step(v.texcoord.w, 0);
|
|
|
|
// Generate normal for backface
|
|
float3 view = ObjSpaceViewDir(v.vertex);
|
|
v.normal *= sign(dot(v.normal, view));
|
|
|
|
#if USE_DERIVATIVE
|
|
data.param.y = 1;
|
|
#else
|
|
float4 vert = v.vertex;
|
|
float4 vPosition = UnityObjectToClipPos(vert);
|
|
float2 pixelSize = vPosition.w;
|
|
|
|
pixelSize /= float2(_ScaleX, _ScaleY) * mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy);
|
|
float scale = rsqrt(dot(pixelSize, pixelSize));
|
|
scale *= abs(v.texcoord.w) * _GradientScale * (_Sharpness + 1);
|
|
scale = lerp(scale * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(v.normal.xyz), normalize(WorldSpaceViewDir(vert)))));
|
|
data.param.y = scale;
|
|
#endif
|
|
|
|
data.param.x = (lerp(_WeightNormal, _WeightBold, bold) / 4.0 + _FaceDilate) * _ScaleRatioA * 0.5; //
|
|
data.viewDirEnv = mul((float3x3)_EnvMatrix, WorldSpaceViewDir(v.vertex));
|
|
}
|
|
|
|
void PixShader(Input input, inout SurfaceOutput o)
|
|
{
|
|
|
|
#if USE_DERIVATIVE
|
|
float2 pixelSize = float2(ddx(input.uv_MainTex.y), ddy(input.uv_MainTex.y));
|
|
pixelSize *= _TextureWidth * .75;
|
|
float scale = rsqrt(dot(pixelSize, pixelSize)) * _GradientScale * (_Sharpness + 1);
|
|
#else
|
|
float scale = input.param.y;
|
|
#endif
|
|
|
|
// Signed distance
|
|
float c = tex2D(_MainTex, input.uv_MainTex).a;
|
|
float sd = (.5 - c - input.param.x) * scale + .5;
|
|
float outline = _OutlineWidth*_ScaleRatioA * scale;
|
|
float softness = _OutlineSoftness*_ScaleRatioA * scale;
|
|
|
|
// Color & Alpha
|
|
float4 faceColor = _FaceColor;
|
|
float4 outlineColor = _OutlineColor;
|
|
faceColor *= input.color;
|
|
outlineColor.a *= input.color.a;
|
|
faceColor *= tex2D(_FaceTex, float2(input.uv2_FaceTex.x + _FaceUVSpeedX * _Time.y, input.uv2_FaceTex.y + _FaceUVSpeedY * _Time.y));
|
|
outlineColor *= tex2D(_OutlineTex, float2(input.uv2_OutlineTex.x + _OutlineUVSpeedX * _Time.y, input.uv2_OutlineTex.y + _OutlineUVSpeedY * _Time.y));
|
|
faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
|
|
faceColor.rgb /= max(faceColor.a, 0.0001);
|
|
|
|
#if BEVEL_ON
|
|
float3 delta = float3(1.0 / _TextureWidth, 1.0 / _TextureHeight, 0.0);
|
|
|
|
float4 smp4x = {tex2D(_MainTex, input.uv_MainTex - delta.xz).a,
|
|
tex2D(_MainTex, input.uv_MainTex + delta.xz).a,
|
|
tex2D(_MainTex, input.uv_MainTex - delta.zy).a,
|
|
tex2D(_MainTex, input.uv_MainTex + delta.zy).a };
|
|
|
|
// Face Normal
|
|
float3 n = GetSurfaceNormal(smp4x, input.param.x);
|
|
|
|
// Bumpmap
|
|
float3 bump = UnpackNormal(tex2D(_BumpMap, input.uv2_FaceTex.xy)).xyz;
|
|
bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5));
|
|
bump = lerp(float3(0, 0, 1), bump, faceColor.a);
|
|
n = normalize(n - bump);
|
|
|
|
// Cubemap reflection
|
|
fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDirEnv, mul((float3x3)unity_ObjectToWorld, n)));
|
|
float3 emission = reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a;
|
|
#else
|
|
float3 n = float3(0, 0, -1);
|
|
float3 emission = float3(0, 0, 0);
|
|
#endif
|
|
|
|
#if GLOW_ON
|
|
float4 glowColor = GetGlowColor(sd, scale);
|
|
glowColor.a *= input.color.a;
|
|
emission += glowColor.rgb*glowColor.a;
|
|
faceColor = BlendARGB(glowColor, faceColor);
|
|
faceColor.rgb /= max(faceColor.a, 0.0001);
|
|
#endif
|
|
|
|
// Set Standard output structure
|
|
o.Albedo = faceColor.rgb;
|
|
o.Normal = -n;
|
|
o.Emission = emission;
|
|
o.Specular = lerp(_FaceShininess, _OutlineShininess, saturate(sd + outline * 0.5));
|
|
o.Gloss = 1;
|
|
o.Alpha = faceColor.a;
|
|
}
|