Unity3D Shader :图标

Shader "Unlit/Test"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100


Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag

#include "UnityCG.cginc"
#define PI 3.14159
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};


struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};


sampler2D _MainTex;
float4 _MainTex_ST;

float JuLi(float4 s,float4 s2,v2f i)
{
float d =abs((s2.y-s.y)*i.vertex.x+(s.x-s2.x)*i.vertex.y+s2.x*s.y-s2.y*s.x)/sqrt(pow(s2.y-s.y,2)+pow(s.x-s2.x,2));
return d;
}


v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}

fixed4 frag (v2f i) : SV_Target
{
//角度和弧度之间转换
//角度=180*弧度/PI
//弧度=角度*PI/180
vector d1=vector(_ScreenParams.x/2,_ScreenParams.y/2+sqrt(19500),0,0);
vector d2=vector(_ScreenParams.x/2-sqrt(19500)*sin(72*PI/180),_ScreenParams.y/2+sqrt(19500)*cos(72*PI/180),0,0);
vector d3=vector(_ScreenParams.x/2+sqrt(19500)*sin(72*PI/180),_ScreenParams.y/2+sqrt(19500)*cos(72*PI/180),0,0);
vector d4=vector(_ScreenParams.x/2-sqrt(19500)*sin(36*PI/180),_ScreenParams.y/2-sqrt(19500)*cos(36*PI/180),0,0);
vector d5=vector(_ScreenParams.x/2+sqrt(19500)*sin(36*PI/180),_ScreenParams.y/2-sqrt(19500)*cos(36*PI/180),0,0);
vector d6=vector(_ScreenParams.x/2+tan(36*PI/180)*(sqrt(19500)*cos(72*PI/180)),_ScreenParams.y/2+sqrt(19500)*cos(72*PI/180),0,0);
Vector d7=vector(_ScreenParams.x/2,_ScreenParams.y/2-(sqrt(19500)*cos(72*PI/180))/cos(36*PI/180),0,0);
vector d8=vector(_ScreenParams.x/2-tan(36*PI/180)*(sqrt(19500)*cos(72*PI/180))*2*sin(18*PI/180),_ScreenParams.y/2-(sqrt(19500)*cos(72*PI/180))/cos(36*PI/180)-tan(36*PI/180)*(sqrt(19500)*cos(72*PI/180))*2*cos(18*PI/180),0,0);
vector d9=vector(_ScreenParams.x/2+(sqrt(19500)*cos(72*PI/180))/cos(36*PI/180)*sin(72*PI/180)+60,_ScreenParams.y/2-(sqrt(19500)*cos(72*PI/180))/cos(36*PI/180)*cos(72*PI/180),0,0);
vector d10=vector(_ScreenParams.x/2-(sqrt(19500)*cos(72*PI/180))/cos(36*PI/180)*sin(72*PI/180)-40,_ScreenParams.y/2-(sqrt(19500)*cos(72*PI/180))/cos(36*PI/180)*cos(72*PI/180),0,0);
if((JuLi(d1,d4,i)<1)&&i.vertex.x>min(d1.x,d4.x)&&i.vertex.x<max(d1.x,d4.x))
{
return fixed4(0,0,0,1);
}
if((JuLi(d1,d5,i)<1)&&i.vertex.x>min(d1.x,d5.x)&&i.vertex.x<max(d1.x,d5.x))
{
return fixed4(0,0,0,1);
}
if((JuLi(d5,d2,i)<1)&&i.vertex.x>min(d5.x,d2.x)&&i.vertex.x<max(d5.x,d2.x))
{
return fixed4(0,0,0,1);
}
if((JuLi(d2,d3,i)<1)&&i.vertex.x>min(d2.x,d3.x)&&i.vertex.x<max(d2.x,d3.x))
{
return fixed4(0,0,0,1);
}
if((JuLi(d3,d4,i)<1)&&i.vertex.x>min(d3.x,d4.x)&&i.vertex.x<max(d3.x,d4.x))
{
return fixed4(0,0,0,1);
}
if((JuLi(d6,d8,i)<1)&&i.vertex.x>min(d6.x,d8.x)&&i.vertex.x<max(d6.x,d8.x))
{
return fixed4(0,0,0,1);
}
if((JuLi(d9,d10,i)<1)&&i.vertex.x>min(d9.x,d10.x)&&i.vertex.x<max(d9.x,d10.x))
{
return fixed4(0,0,0,1);
}
if((JuLi(d9,d8,i)<1)&&i.vertex.x>min(d9.x,d8.x)&&i.vertex.x<max(d9.x,d8.x))
{
return fixed4(0,0,0,1);
}
//if((pow(i.vertex.x-d6.x,2)*-0.1+2*(i.vertex.x-d6.x)+d6.y>=i.vertex.y)&&(pow(i.vertex.x-d6.x,2)*-0.1+2*(i.vertex.x-d6.x)+d6.y<=i.vertex.y+9)&&(i.vertex.x<_ScreenParams.x))//&&(i.vertex.x>d6.x)&&(i.vertex.x<d6.x+20))
if(((pow(abs(i.vertex.x-d10.x+10),2)+pow(abs(i.vertex.y-d10.y),2))<100)&&((pow(abs(i.vertex.x-d10.x+10),2)+pow(abs(i.vertex.y-d10.y),2))>50))
{
return fixed4(0,0,0,1);
}
if(((pow(abs(i.vertex.x-_ScreenParams.x/2),2)+pow(abs(i.vertex.y-_ScreenParams.y/2),2))<20000)&&((pow(abs(i.vertex.x-_ScreenParams.x/2),2)+pow(abs(i.vertex.y-_ScreenParams.y/2),2))>19000))
{
return fixed4(0,0,0,1);
}
fixed4 col = tex2D(_MainTex, i.uv);

return col;
}
ENDCG
}
}

}



猜你喜欢

转载自blog.csdn.net/weixin_42452001/article/details/80737792