关于反射率(reflectance)

首先,BRDF的内容因为见的多,用的多,所以比较容易理解。但是由BRDF引申出来的反射率,跟BRDF比不太常见,有些东西反而不易理解。尤其是组里的某大牛都不甚清楚(说明这个问题不太容易或者太过冷门),更加激发了我搞清楚并写篇博的欲望。另外,有些观点纯粹是推导公式得出,未做进一步考证,欢迎拍砖。
BRDF讲的最清楚的是PBRT这本书,而关于反射率(reflectance),只用了不到一页的篇幅去讲。我大体翻译一下:
描述BRDF或者BTDR的聚合行为是很有意义的,聚合行为就是定义为关于很多对方向的函数、关于单个方向的二维函数或者是反映整体散射性质的常量值。Ps,下面描述的只是后两种,目前我也没见过第一种。

反射率分两种,第一种是半球-方向反射(hemispherical-directional reflectance),它可以描述各个方向相同的入射情形下,在某个方向上的总反射,公式如下:

关于反射率(reflectance)

显然,从各个方向入射的都是单位1个radiance,指定方向的反射率就等于该方向反射的radiance。
但接下来的一句话用公式描述就不那么显然了,"or, equivalently, total reflection over the hemisphere due to light from a given direction",也就是说,我们可以用这个公式描述从指定方向入射,然后在各个方向反射的总反射率(我感觉这个反射率更能反映多少光被反射了,多少被吸收了)。公式推导如下:

关于反射率(reflectance)

真相大白,这两种理解确实都对应同一个反射率公式,指定一个方向之后其反射率值也是一样的。

另一种反射率是半球-半球反射(hemispherical_hemispherical_reflectance),这是一个常数,描述各个方向相同入射情形下,各个方向的总反射。有了上一个公式的推导,这个就简单多了:

关于反射率(reflectance)

总结:反射率计算中,如果是向各个方向的总反射,需要转化成irradiance,然后跟入射的irradiance相除即可。

上一篇:c#字典排序


下一篇:List遍历Java 8 Streams map() examples