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))
'프로그래밍 > 셰이더' 카테고리의 다른 글
curve world (0) | 2019.05.16 |
---|---|
셰이더 디버깅 (0) | 2019.04.04 |
OcclusionFx shader (0) | 2019.03.20 |
셰이더 강좌 (0) | 2019.03.06 |
대마왕님 블로그 (0) | 2019.02.22 |