光亮度是物体表面某方向单位投影区域单位立体角的光流量
沿着某条光线的光亮度是常数,但光通量随距离增大而衰减(实际是二次衰减,但在计算机图形学中采用线性衰减效果比较好)
光强度是单位立体角的辐射能量
辐射度是单位面积流出的光通量
辐照度是单位面积流入的光通量
它们的关系:
光强度=光亮度*单位面积*入射角余弦
辐照度=光亮度*入射角余弦*单位立体角
辐射度=光亮度*入射角余弦*单位立体角(但方向不同)
光和物体相交,会产生三种情况产生,反射,被吸收,折射, 即是
light incident at surface = light reflected + light absorbed + light transmitted
对于理想固体来说,折射不会产生,就只剩下前两项。
BRDF就是用于描述光与物体相交,光是如何反射的。
BRDF通常用一个数学表达式来表示,来看下它和哪些变量有关。
首先是光的波长 λ ,不同的光产生的反射不同。
其次对于物体的材质,如果不是均一分布的话,BRDF也不同,记材质坐标为u,v。
最后,还和入射光线与出射光线的角度有关。这里角度用球坐标来表示,分别记为和
则有:
已知上面的变量,就可以求出BRDF了
在实际计算中, λ ,u,v通常省略,这样参数就只剩下四个,最后计算的结果是一个三维向量,表示颜色的RGB。
假设向量是经过单位化的
对于描述光的出射和入射,通常并不是简单的一个光想来表示,比较适合的是用"光量"来表示。
对于一个单位圆,Differential Solid Angles的计算如下
在一个单位圆中,球坐标为θ和Φ,dw为Differential Solid Angles
最后求出的值的单位是弧度的平方,也称为steradians。
BRDF规定的是辐照度和光亮度的关系:
对于入射Differential Solid Angles 和出射的Differential Solid Angles ,BRDF就是上的光量比上上的射出的光子总量。
BRDF = 出射辐照度 / 入射光亮度
入射光亮度转换成辐照度,得到
BRDF值只和材质有关,与入射光线无关。
有两种类型的BRDF,isotropic和anisotropic。左边是isotropic,右边是anisotropic。
在真实世界中,大部分的材质都是偏向于各向同性加上一点点的各向异性。
基于物理的BRDF的需要遵循两个性质:reciprocity 和 conservation of energy
reciprocity 指的是交换性,出射角和入射角互换,BRDF不变,即:
conservation of energy指所有出射光的量的总和小于入射光的总和。数学表达式如下
用半球面积分如下
在有多个光源的情况下,光照方程如下
在只有一个光源的情况下,光照方程如下
连续的描述如下
有三种方法,一种是基于经验公式来获得,比如Lambert和Phong,另一种是基于物理的数值分析模型,它们的形式就是一个数值函数,另一种是Data-Driven的方式,通过实验的方式获取,通过一些光照采集设备。这种方式得到的结果通常是一张表示BRDF的图片。实验的方式如下图。
常用的BRDF特征如下
An Introduction to BRDF-Based Lighting
Bidirectional reflectance distribution function Wiki
Physically Based Shading in Theory and Practice
知乎 - 如何正确理解 BRDF (双向反射分布函数)