记一次Rider手写UnityShader_非图解基本的光照模型,包含ViewDir_NdotL高光和漫反射等等计算

不错的工具,如下图:

要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.就是上面的示意图方法)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值