unity shader 学习记录(基础光照篇)

本文详细介绍了Unity中的四种光照类型:自发光、环境光、漫反射和高光反射。自发光直接设定颜色;环境光可通过light面板或代码获取;漫反射通常采用逐像素渲染,如半兰伯特光照模型;高光反射则涉及Phong和Blinn-Phong模型。文章重点解析了漫反射和高光反射的计算公式,并提供了优化后的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在unity中,光照分为四个方向:自发光、环境光、漫反射、高光反射。

自发光:直接定义一个自发光颜色,等到最终计算颜色的时候,加上就行。

环境光:环境光通过light面板可以设置;在代码中,可以通过unity内置变量UNITY_LIGHTMODEL_AMBIENT得到环境光的颜色和强度信息。

漫反射:漫反射可以逐顶点、逐像素渲染,在逐顶点渲染时,可见明显锯齿,所以一般选用逐像素渲染。在其中可以使用半兰伯特光照模型,也就是对法线点乘光源方向 *0.5 +0.5。

高光反射:高光反射可以逐顶点、逐像素渲染(phong模型),逐像素渲染(blinn-phong模型);逐顶点反射反射点有锯齿,phong模型渲染和blinn-phong模型比,因为需要计算反射角度,所以效率更低,blinn-phong模型添加了H向量,也就是视角方向+光源方向的归一化。

其中主要的是计算漫反射和高光反射的公式,需要记牢:

漫反射公式:

最后实现代码并优化如下 :

高光反射公式:phong模型

 

最后实现代码如下:(phong模型)

 

最后实现代码优化如下:(blinn-phong模型)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值