US3S1L9——Unity内置光照计算相关函数

Unity内置光照计算相关函数

我们在实现光照模型时,经常会进行一些数学计算,比如:坐标、法线相关的转换
UnityCG.cginc 中提供了一些常用的函数,可以帮助我们快捷的进行数学计算

比如我们之前将法线从模型空间转换到世界空间的方法:UnityObjectToWorldNormal

有了这些内置函数,我们就不需要自己去通过数学计算来得到结果了,直接调用API即可得到我们想要的结果

除了之前我们在课程中用到的一些函数外,还有一些其他的内置函数

常用内置函数

  1. float3 WorldSpaceViewDir(float4 v)

    传入模型空间下的顶点位置,返回世界空间中从该点到摄像机的观察方向

  2. float3 UnityWorldSpaceViewDir(float4 v)

    传入世界空间中的顶点位置,返回世界空间中从该点到摄像机的观察方向

    1
    2
    3
    float3 viewDir = normalize(_WorldSpaceCameraPos.xyz - wPos);    //计算观察方向
    //等价于
    ​float3 viewDir = UnityWorldSpaceViewDir(wPos)​
  3. float3 ObjSpaceViewDir(float4 v)

    传入模型空间中的顶点位置,返回模型空间中从该点到摄像机的观察方向

  4. float3 WorldSpaceLightDir(float4 v)

    (仅用于前向渲染中)传入模型空间中的顶点位置,返回世界空间中该点到光源的光照方向(没有归一化)

  5. float3 UnityWorldSpaceLightDir(float4 v)

    (仅用于前向渲染中)传入世界空间中的顶点位置,返回世界空间中从该点到光源的光照方向(没有归一化)

  6. float3 ObjSpaceLightDir(float4 v)

    (仅用于前向渲染中)传入模型空间中的顶点位置,返回模型空间中从该点到光源的光照方向(没有归一化)

  7. float3 UnityObjectToWorldNormal(float3 normal)

    把法线从模型空间转换到世界空间中

  8. float3 UnityObjectToWorldDir(float3 dir)

    把方向和矢量从模型空间转换到世界空间中

  9. float3 UnityWorldToObjectDir(float3 dir)

    把方向矢量从世界空间转换到模型空间中

  10. float4 UnityObjectToClipPos(float4 v)

    输入模型空间中的顶点位置,返回裁剪空间下的顶点位置,在顶点着色器内几乎是必须调用的函数