【Unity Shader】 Lambert(兰伯特)光照模型

本文介绍了Unity中的Lambert漫反射光照模型,详细解析了漫反射的特点和Lambert余弦定理,并展示了如何在Unity中自定义Shader实现漫反射效果。
摘要由CSDN通过智能技术生成

Unity Shader Lambert光照模型与漫反射

一、漫反射简介

一束平行光入射到凹凸不平的表面上,光线被反射向四面八方的现象叫做漫反射。
这里写图片描述

当一束平行光触及光滑物体表面时,光线则发生规律性反射,反射后的光线也相互平行,这种规律性反射称为光的单向反射或镜面反射。但物体的光滑程度是相对的,而一般物体的表面多粗糙不平,入射线虽然为平行光线,但反射后的光线则向各个方向分散,此种现象为光的漫反射。

现实中的物体,如植物、墙壁、衣服等,其表面粗看起来似乎是平滑,但用放大镜仔细观察,就会看到其表面是凹凸不平的,人眼之所以能看清物体的全貌,主要是靠漫反射光在眼内的成像。

漫反射的特点

  1. 光照强度与观察角度没有关系
    从各个角度观看灯光时,它都具有相同明显的强度
  2. 光照强度跟灯光的入射角有关系
    如果改变光的入射光方向可以看到模型表面的光照强度发生了变化

二、漫反射光照模型-Lambert(兰伯特)光照模型

lambert光照模型属于经验模型,主要用来简单模拟粗糙物体表面的光照现象

此模型假设物体表面为理想漫反射体(也就是只产生漫反射现象,也成为Lambert反射体),同时,场景中存在两种光,一种为环境光,一种为方向光,然后我们分别计算这两种光照射到粗糙物体表面所产生的光照现象,最后再将两个结果相加,得出反射后的光强值。

首先是计算环境光的公式:

I_inDirectionDiffuse = K_d * I_a;

其中,K_d为粗糙物体表面材质对光的反射系数,这个系数由程序编写者在宿主程序中给出,I_a为环境光的光强,也就是环境光的颜色数值,一般是一个float3型的变量

然后是计算方向光的公式:

I_directionDiffuse = K_d * I_l * 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值