mirror of
https://github.com/ConjureETS/ProjectClubCore.git
synced 2026-03-24 09:30:58 +00:00
Création d'un menu principal de base. Ce menu contient un bouton pour démarrer le jeu, un qui montre la liste des jeux, un qui montre les options et un dernier qui quitte l'application. Certaines de ces interfaces sont incomplête, mais elle seront complétés plus tard.
102 lines
3.5 KiB
HLSL
102 lines
3.5 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.texcoord1.y, 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.texcoord1.y) * _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; //
|
|
|
|
v.texcoord1.xy = UnpackUV(v.texcoord1.x);
|
|
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;
|
|
}
|