[计算机图形学05]Unity中进行空间变换的工具函数

UnityObjectToViewPos

inline float3 UnityObjectToViewPos(in float3 pos)
{
    return mul(UNITY_MATRIX_V, mul(unity_ObjectToWorld, float4(pos, 1.0))).xyz;
}

inline float3 UnityObjectToViewPos(in float4 pos)
{
    return UnityObjectToViewPos(pos.xyz);
}

定义这个重载版本是为了当传递float4类型参数到UnityObjectToViewPos函数时,避免出现隐式截断(implicit truncation)的问题。

UnityWorldToViewPos

inline float3 UnityWorldToViewPos(in float3 pos)
{
    return mul(UNITY_MATRIX_V, float4(pos, 1.0)).xyz;
}

UnityWorldToClipPos

将世界坐标空间中的某一点变换到齐次裁剪空间中。

inline float4 UnityWorldToClipPos(in float3 pos)
{
    return mul(UNITY_MATRIX_VP, float4(pos, 1.0));
}

UnityViewToClipPos

将观察坐标空间中的某一点变换到齐次裁剪空间中。

inline float4 UnityViewToClipPos(in float3 pos)
{
    return mul(UNITY_MATRIX_P, float4(pos, 1.0));
}

你可能感兴趣的:(图形学)