1.distance函数
距离=distance(顶点,相机位置)
2.获取顶点位置
o.WordPos = mul(unity_ObjectToWorld, v.vertex).xyz;
3.获取相机位置
unityShader内置:_WorldSpaceCameraPos.xyz
4.获取物体顶点到相机距离
float DistanceRamp = distance(i.WordPos,_WorldSpaceCameraPos.xyz);
5.完整代码
Shader "Test"
{
Properties
{
}
SubShader
{
Tags {"RenderType" = "Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
//定义顶点世界变量
float3 WordPos:TEXCOORD1;
};
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
顶点坐标 物体转世界
o.WordPos = mul(unity_ObjectToWorld, v.vertex).xyz;
return o;
}
fixed4 frag(v2f i) : SV_Target
{
获得物体顶点到摄像机距离
float DistanceRamp = distance(i.WordPos,_WorldSpaceCameraPos.xyz);
return DistanceRamp*0.1;
}
ENDCG
}
}
}