学习笔记:pbrt中的辐照度缓存机制II

在利用辐照度缓存机制实现的光线追踪算法中,渲染点的输出计算和辐照度缓存更新是相互关联,交替进行的。下面首先介绍渲染点的输出计算部分。

计算某渲染点的输出需要计算四部分光线的作用。在计算这三部分光线作用前,根据由渲染点发出的光线对象及相交物体对象,计算交点处的坐标、法线和BSDF。接下来计算上述四部分内容。第一,根据光线方向计算交点处自发光的辐照度。第二,按照直接光照模型的算法,计算交点处直接由场景中全部光照产生的作用效果。第三,计算交点处由镜面反射或透射形式的间接光照所产生的作用效果。第四,计算漫散射形式的间接光照所产生的作用效果。辐照度缓存机制即在该部分发挥作用。该部分计算实际上也是分两部分进行,第一部分是漫反射和光泽反射形式的间接光照,第二部分是类似漫反射和光泽反射的透射形式的间接光照。在完成这两部分前,首先确保法线方向与出射光线方向在平面的一侧,其次估算了相邻像素间隔在世界坐标系中的距离。该结果将用于判断是直接计算还是利用缓存进行计算。实际计算该距离时,是通过对交点处微分几何体两个方向的分量构成的平行四边形的面积开平方得到。如果两个方向的分量相互垂直且长度相等,则得到的是正方形的边长。

下面在介绍计算漫散射形式的间接光照所产生的作用效果前,先介绍如何利用八叉树实现缓存中各点辐照度数据的快速查找和插值。在八叉树的数据结构中存储着已缓存辐照度数据的坐标点的包围盒信息。在利用八叉树进行快速查找前,需要提供待查找点的坐标和一个重载了括号操作符的对象。查找时,八叉树会判断查找点是否存在于某个包围盒中,凡是存在就会提供包围盒对应点采样信息包括的坐标,法线,辐照度和平均入射方向信息,并调用这个对象,执行相应的操作。这里所执行的操作主要就是判断该点是否用于后续计算。判断方式是定义两个偏差函数,一个是两点距离与预设最大距离之比,另一个是1减去两点法线余弦夹角的结果与预设最大结果之比的平方根。两个偏差函数取最大后作为最终的偏差。当该偏差小于1时,使用该点的辐照度数据,且辐照度和平均入射角度均进行加权,权重为1减去偏差,并且还单独对权重进行累加。完成八叉树中所有点的遍历后,返回累加的平均入射方向和加权平均处理后的辐照度。另外,返回这两个结果前,还需要累加的权重大于一个预设的权重最小值,否则查找失败,不返回这两个数据。

完成前述的查找和差值工作后,就可以计算漫散射形式的间接光照所产生的作用效果了。计算方法并不复杂,将平均入射方向作为入射方向后,该点的BSDF值乘以前面得到的辐照度值就得到了该点的输出。此时相当于把其他点的辐照度信息转换为一个有向光源。对于全漫反射表面,该方法与按入射光线概率分布计算得到的结果不存在偏差。对于有光泽的反射表面,按照书中的说法,该方法比按均匀入射得到的结果要好。

下面介绍辐照度缓存更新部分。这里需要说明的一点是,只有无法利用缓存计算,而直接计算的辐照度信息才会被存储到辐照度缓存中。计算辐照度需要对该点的入射辐亮度和入射方向的余弦的乘积关于立体角的积分。由于很难找到与该乘积形状相同的入射方向分布函数,所以使用蒙特卡罗积分时,入射光线采用余弦半球加权分布,且采样所需的二维随机变量采用低偏差序列生成。此外,产生的入射光线是在反射点的BSDF对应的局部坐标系中满足余弦半球加权分布,因而采样产生的光线还需要变换到世界坐标系中。光线生成后,采用路径积分器进行计算。每次计算结束后,将光线的辐亮度和方向进行累加。对产生的所有光线,还需要计算其长度的最小值。该最小值的一半按屏幕坐标系转换到世界坐标系的一个距离下限变量和距离上限变量取限幅后,作为该点的包围盒边长的一半。将该包围盒以及该点的辐亮度和平均入射光线方向信息加入到辐照度缓存中,就完成了更新过程。由八叉树的算法可知,该包围盒的范围也就决定了该缓存值能够使用的点的范围。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343