1.标准光照模型
标准光照模型的基本概念:只关心直接光照(direct light),也就是那些直接从光源发射出来照射到物体表面后,经过物体表面的一次反射直接进入摄像机的光线。
它的基本方法使把光线分成4个部分,每个部分使用一种方法计算贡献度。以下是四个部分:
自发光 c emissive 丨高光反射 c specular 丨漫反射 c diffuse 丨环境光 c ambient丨
下面列出4个部分的计算公式:
环境光:在标准光照模型中,环境光是一个全局变量,计算式如下:
c ambient = g ambient
自发光:标准光照模型中,使用自发光来计算,就是直接使用了该材质的自发光颜色:
c emissive = m emissive
漫反射:漫反射符合兰伯特定律:反射光线的强度与表面法线和光源方向之间夹角的余弦值成正比,计算公式如下:
c diffuse = (c light · m diffuse)max(0,n·l)
n是表面法线,l是指向光源的矢量单位,m diffuse是材质的漫反射颜色,c light是光源颜色。
使用max函数是为了防止法线和光源方向点乘的结果为负值。
高光反射:比较复杂,额,我是有些晕的
使用Phong模型,公式为:c specular = (c light · m specular )max(0,v·r)m gloss 因为上下标的原因,现在这样看是错的。
m gloss 控制高光区域的“亮点”有多宽,m gloss越大,亮点就越小。m specular是材质的高光反射颜色,用于控制高光反射的强度和颜色。
c light则是光源的颜色和强度,这里也需要防止v·r的结果为负数。
使用Blinn模型,公式为:c specular = (c light · m specular )max(0,n·h)m gloss
如果摄像机和光源距离模型足够远的话,Blinn模型会快于Phong模型,反之亦然。
(这里没有很明白,等看看实操写代码有什么理解,再回来看看,
《Unity Shader 入门精要》学习笔记06---Unity中的基础光照(一)(漫反射光照模型的实现)
最新推荐文章于 2022-05-17 12:50:05 发布