mirror of
https://github.com/DCFApixels/Unity-DebugX.git
synced 2025-09-18 01:54:37 +08:00
48 lines
967 B
HLSL
48 lines
967 B
HLSL
|
|
|
|
|
|
float GetHandleSize(float3 objectPosition, float scaleM)
|
|
{
|
|
float3 viewDir = normalize(_WorldSpaceCameraPos - objectPosition);
|
|
|
|
float distance = length(_WorldSpaceCameraPos - objectPosition);
|
|
float isOrthographic = UNITY_MATRIX_P[3][3];
|
|
distance = lerp(distance, 1, isOrthographic);
|
|
|
|
float fov = radians(UNITY_MATRIX_P[1][1] * 2.0);
|
|
float scale = distance * (1 / fov) * 0.015;
|
|
|
|
return scale * scaleM;
|
|
}
|
|
|
|
float4x4 GetHandleSizeMatrix(float3 objectPosition, float scaleM)
|
|
{
|
|
float4x4 M = UNITY_MATRIX_M;
|
|
|
|
float scale = GetHandleSize(objectPosition, scaleM);
|
|
M._m00 *= scale;
|
|
M._m11 *= scale;
|
|
M._m22 *= scale;
|
|
|
|
return M;
|
|
}
|
|
|
|
|
|
|
|
//Macros
|
|
#if _DOT_ON
|
|
float _DebugX_GlobalDotSize;
|
|
#endif
|
|
float4 _Color;
|
|
|
|
float4x4 GET_HANDLE_UNITY_MATRIX_M()
|
|
{
|
|
#if _DOT_ON
|
|
return GetHandleSizeMatrix(mul(UNITY_MATRIX_M, float4(0, 0, 0, 1)).xyz, _DebugX_GlobalDotSize);
|
|
#else
|
|
return UNITY_MATRIX_M;
|
|
#endif
|
|
}
|
|
|
|
|