最近我思考并实现了一下naive pure specular。
首先根据课件上Diffuse的fr的推导,把材质换成pure Specular,考虑最简单的只有一束Li入射的情况,那么渲染方程就变成Lo = fr * Li * costhetai, 如果wo是wi的反射方向,则根据能量守恒,fr = 1 / costhetai,如果wo是其他方向,根据pure Specular的性质,Li应该全部被反射到Lr(反射方向)去,因此理论上fr 应该 = 0。但由于实际工程实现的时候,对光源采样的wo很难是wr,因此考虑采用Blinn-Phong模型的NdotH去调节,NdotH = pow(N*H, n),最后fr = NdotH / costhetai。当然物理中并不会存在pure specular,所以fr最好再乘上ks,或者菲涅尔项。
然后对于pure specular的点的采样方向,我每次采样的都是反射方向,此时设置pdf = 1.0f,效果如附件,感觉tall box反射光源打到墙面的部分效果不是很好,欢迎大佬指正。
当然我觉得pure specular最真实也最贴近物理实际的,应该是microfacet,粗糙度为0的时候,所以实现了microfacet,specular也就实现了
Attachments:
You must be
logged in to view attached files.