知识点1 shader_漫反射

漫反射DiffuseReflection

漫反射就是无论你从哪个角度看,看到某个点的亮度都应是一样的。

要计算漫反射,我们需要知道两个量一个是物体表面的法线N,另一个是光的入射方向L。

原理就是我们通过计算光的入射方向(这里所谓的入射其实是入射方向的反方向,之所以这样是为了方便计算)和物体表面向量的夹角来决定这点的光照强度,两个向量的夹角越小就说明越来越接近于关照直射,这时候当然反射的光也就越强,如果夹角大于等于90度那么反射的光强度越来越弱,超过90度就完全看不到了。

在通过夹角来计算光的亮度之前,我们需要对N和L两个向量进行归一化处理,在CG里对向量进行归一化的操作我们使用normalize函数;然后我们利用向量的点积公式N·L = |N|*|L|*cosθ;由于我们刚刚对N和L进行了归一化,他们的模就是1了,那么N·L = cosθ了.也就是说我们直接对N和L进行点积运算会得到两个向量的夹角余弦值,我们知道如果加角θ越接近月0°那么N·L也就越接近于1,越接近月90°,N·L就越接近于0.所以我们只要把光的颜色乘以这个点积结果就会达到我们想要的角度越小光越强,角度越大光越弱的效果了.下面给出《The Cg Tutorial》中给出的漫反射计算公式:

  diffuse = Kd * lightColor * max(N·L,0)

猜你喜欢

转载自www.cnblogs.com/clara1221/p/8939752.html