PBRT笔记(6)——采样和重构】的更多相关文章

前言 本文仅作为个人笔记分享,又因为本章涉及多个专业领域而本人皆未接触过,所以难免出错,请各位读者注意. 对于数字图像需要区分image pixels(特定采样处的函数值)和display pixels(显示器显示值). 收集采样值,并将其转化为连续函数的过程被称为重构. 为了计算在数字图像上的离散像素值,我们需要在原始的图片函数上不断的采样. 采样与重构的过程中涉及到近似运算,而这个过程中产生的错误被称为锯齿.其产生原因为计算机无法连续对场景进行采样. 可以理解为把真实世界所得图像(人眼)当做…
体散射处理过程 3个影响参与介质在环境中的辐射度分布的主要因素: 吸收:减少光能,并将其转化为别的能量,例如热量. 发光:由光子发射光能至环境中. 散射:由于粒子碰撞,使得一个方向的辐射度散射至其他方向. 吸收 吸收被描述为一段介质截面区域.每单位距离媒介密度与吸收光能的比被定义为\(\sigma_a\).截面区域或随着位置与方向的变化而变化,尽管如此,通常还是会定义为位置函数.它通常也被定义为一个光谱变化量,\(\sigma_a\)与距离成反比关系\(m^{-1}\).这意味这个值无需被判断是…
采样与抗锯齿 当高分辨率贴图被缩小时,贴图会出现严重的混淆现象.虽然第7章中的非均匀采样技术可以减少这种混叠的视觉影响,但是更好的解决方案是实现基于分辨率进行采样的纹理函数. 可以在使用贴图时先对贴图的分辨率进行判断,避免采样高分辨率贴图. 为了解决贴图采样函数造成的混淆问题,我们必须解决以下两个问题: 必须计算贴图空间的采样率,以及获得贴图分辨率,之后就可以计算出屏幕空间的采样率,最后为了获得图元表面的采样率就必须对贴图进行采样,以获得贴图采样率. 对于给定的贴图采样率,必须使用采样理论去引导…
传输公式 传输方程是控制光线在吸收.发射和散射辐射的介质中的行为的基本方程.它解释了第11章中描述的所有体积散射过程--吸收.发射和内.外散射.并给出了一个描述环境中辐射分布的方程.光传输方程实际上是传输方程的一个特例,由于忽略参与介质而进行简化,并专门用于从表面散射. 在方程的基本形式中,传输方程式是一个描述光束在空间中某一点上的辐射量如何变化的积分微分方程.它可以转化为一个纯积分方程,用以描述描述了沿射线无穷多个坐标点的参与介质的效果. 回忆一下11.1.4章节的辐射源项Ls,它表示p点处ω…
采样反射函数 BxDF::Sample_f()方法根据与相应的散射函数相似的分布来选择方向.在8.2节中,该方法用于寻找来自完美镜面的反射和透射光线;在这里讲介绍实现其他类型的采样技术. BxDF::Sample_f()在[0,1)范围内取得两个使用反演法取得的样本,其中这些样本是使用分层采样或者低偏差采样生成的,所以这些样本本身具有很好的分布性. 这个方法默认采用余弦加权的半球采样.这个样本分布对于大多数BRDF会产生正确的结果. Spectrum BxDF::Sample_f(const V…
这里还涉及到pdf.方差等概念,推荐去看<全局光照技术:从离线到实时渲染> 积累分布函数 cumulative distribution function (CDF) 蒙特卡洛估算 为了计算式蒙特卡罗估算量,就有必要从选择的概率分布中抽取随机样本. 逆推法 逆推法使用一个或多个均匀的随机变量映射到随机变量的期望分布中. 为了从该分布中获取样本,我们首先计算CDF P(x),在这个函数是连续的情况下,P表示为p的不定积分. 当从该分布中获取样本时,我们可以使用均匀随机数ξ,并根据CDF选取某一可…
自发光灯光 至今为止,人们发明了很多光源,现在被广泛使用的有: 白炽灯的钨丝很小.电流通过灯丝时,使得灯丝升温,从而使灯丝发出电磁波,其波长的分布取决于灯丝的温度.但大部分能量都被转化为热能而不是光能. 卤素灯,在灯中充入惰性气体,使得灯的寿命增加,与白炽灯一样使用钨丝. LED灯 发光效率是衡量光源将能量转化为可见光的效率.对人眼来说,非可见光波长的辐射几乎没有价值,有趣的是,它是光度量(发出的光通量)与辐射量(它所使用的总功率或它发出的总波长的总功率(以光通量计算)之比: \(\frac{\…
基础术语 表面反射可以分为4大类: diffuse 漫反射 glossy specular 镜面反射高光 perfect specular 完美反射高光 retro-reflective distributions 后反射分布 几何坐标系以及工具函数 pbrt中的反射是在反射坐标系中进行计算的.坐标系由着色点处法向量与两个切向量组成,也就是 正交基向量(s,t,n),分别于x,y,z相对齐.以\(( \theta ,\phi)\)球体坐标系来表达方向. 从图8.3中可以了解到以下内容,代码在re…
Camera class Camera { public: //实现相机在一定时间内进行特定的运动 AnimatedTransform CameraToWorld; //快门开/关数据,可以用于计算动态模糊 const Float shutterOpen, shutterClose; //胶片类指针用于计算最终图像 Film *film; //介质类,表达相机所在的介质(在空气.水中) const Medium *medium; } GenerateRay生成当前相机采样的一条光线,并且返回生成…
PBRT2与3之间的改动 增加了一个功能完备的BRDF模型,支持体积光照与重要性多重路径采样. 次表面散射,基于光线追踪技术,无需预处理. 解决浮点数四折五入的问题 光子映射 样本生成 第一章多了讲并行的东西 看到第2页 渲染分块问题 对这个渲染任务过多的分块会影响性能. 场景的复杂性会对不同CPU核心的渲染速度产生影响.所以如果是分块数等于核心数,渲染完的核心会等待没渲染完的核心. 过小分块也是不科学的,因为处理核心问题有一定的开销. pbrt里用的是16*16的方案 浮点类型 pbrt采用了…