빌보드,거리에따른 스케일
void vert(inout appdata_full v, out Input o)
{
UNITY_INITIALIZE_OUTPUT(Input, o);
// apply object scale
v.vertex.xy *= float2(length(unity_ObjectToWorld._m00_m10_m20), length(unity_ObjectToWorld._m01_m11_m21)) * length(ObjSpaceViewDir(v.vertex))*_Scale;
// get the camera basis vectors
float3 forward = -normalize(UNITY_MATRIX_V._m20_m21_m22);
float3 up = normalize(UNITY_MATRIX_V._m10_m11_m12);
float3 right = normalize(UNITY_MATRIX_V._m00_m01_m02);
// rotate to face camera
float4x4 rotationMatrix = float4x4(right, 0,
up, 0,
forward, 0,
0, 0, 0, 1);
v.vertex = mul(v.vertex, rotationMatrix);
v.normal = mul(v.normal, rotationMatrix);
// undo object to world transform surface shader will apply
v.vertex.xyz = mul((float3x3)unity_WorldToObject, v.vertex.xyz);
v.normal = mul(v.normal, (float3x3)unity_ObjectToWorld);
}
//카메라 거리
length(ObjSpaceViewDir(v.vertex))