Unity Shader笔记之标准光照模型(Phong光照模型)高光代码理解

 反射方向 

fixed3 reflectDir = normalize(reflect(-worldLightDir,worldNormal));

reflect 

reflect是cg的函数,reflect(i,n) i为入射方向,n为法线方向,返回反射方向

Unity Shader笔记之标准光照模型(Phong光照模型)高光代码理解_第1张图片

  worldLightDir

   worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldpos));

    UnityWorldSpaceLightDir()

     UnityCG中的内置函数,仅用于前向渲染,输入一个世界坐标中的顶点位置,返回从该点到光源的光照方向,没有被归一化

   所以worldLightDir表示一个归一化的从顶点指向光源的矢量,所以在作为入射方向时需要加负号

 视角方向


   fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - i.worldpos);

  _WorldSpaceCameraPos

   Unity内置的摄像机变量,float3类型,表示该摄像机在世界坐标下的位置
   

 高光反射

 公式


   fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(max(0,dot(reflectDir,viewDir)),_Gloss);

 

 

你可能感兴趣的:(Unity Shader笔记之标准光照模型(Phong光照模型)高光代码理解)