不错的工具,如下图:
要Rider 2021之后,最新的编辑器,旧版本2020还不行编写Shader
如有更好的编写的工具,请留言(会补上)
一个光照模型(phong)基于下面这个图:
光看公式,可能很难理解 R . V
其实:R . V== (R点乘法V)==RdotV== 反射点乘视线方向
也等于:== Reflect dot ViewDir
其实只要结合上图Specular部分,再根据日常常识判断,反射光最强的地方和视线重合的地方必然产生一个亮点,也就是Specular
所以 Specular == NdotV (Specular 最亮的点,也就是NdotV 值最接近1的点;因为NdotV就是要计算N和V,这2个法线重合率;对于NdotV的计算值: 1是重合,0是90度,-1是反方向)
ViewDir的计算
viewDir = 观察摄像机的位置 - 顶点在世界坐标的位置
half3 view_dir = normalize(_WorldSpaceCameraPos.xyz - i.pos_world);
RdotV
half3 reflect_dir = reflect(-light_dir,normal_dir);
half NdotV = dot(reflect_dir,view_dir);
这里稍微岔开说说:第二种计算高光反射的方法
//2.高光反射
half3 H = normalize(lightDir + viewDir);
half NdotH = dot(normalDir, H);
//1.
float3 reflect_dir = reflect(-lightDir, normalDir);
half NdotH = dot(reflect_dir, viewDir);
到底哪种比较好呢(1.就是上面的示意图方法)