BlueRose
文章97
标签28
分类7
PBRT笔记(14)——光线传播2:体积渲染

PBRT笔记(14)——光线传播2:体积渲染

传输公式

传输方程是控制光线在吸收、发射和散射辐射的介质中的行为的基本方程。它解释了第11章中描述的所有体积散射过程——吸收、发射和内、外散射。并给出了一个描述环境中辐射分布的方程。光传输方程实际上是传输方程的一个特例,由于忽略参与介质而进行简化,并专门用于从表面散射。

PBRT笔记(13)——光线传播1:表面反射

PBRT笔记(13)——光线传播1:表面反射

采样反射函数

BxDF::Sample_f()方法根据与相应的散射函数相似的分布来选择方向。在8.2节中,该方法用于寻找来自完美镜面的反射和透射光线;在这里讲介绍实现其他类型的采样技术。

PBRT笔记(12)——蒙特卡洛积分

PBRT笔记(12)——蒙特卡洛积分

这里还涉及到pdf、方差等概念,推荐去看《全局光照技术:从离线到实时渲染》
积累分布函数 cumulative distribution function (CDF)

PBRT笔记(11)——光源

PBRT笔记(11)——光源

自发光灯光

至今为止,人们发明了很多光源,现在被广泛使用的有:

  1. 白炽灯的钨丝很小。电流通过灯丝时,使得灯丝升温,从而使灯丝发出电磁波,其波长的分布取决于灯丝的温度。但大部分能量都被转化为热能而不是光能。
  2. 卤素灯,在灯中充入惰性气体,使得灯的寿命增加,与白炽灯一样使用钨丝。
  3. LED灯
PBRT笔记(10)——体积散射

PBRT笔记(10)——体积散射

体散射类型

3个影响参与介质在环境中的辐射度分布的主要因素:

  1. 吸收:减少光能,并将其转化为别的能量,例如热量。
  2. 发光:由光子发射光能至环境中。
  3. 散射:由于粒子碰撞,使得一个方向的辐射度散射至其他方向。
PBRT笔记(9)——贴图

PBRT笔记(9)——贴图

采样与抗锯齿

当高分辨率贴图被缩小时,贴图会出现严重的混淆现象。虽然第7章中的非均匀采样技术可以减少这种混叠的视觉影响,但是更好的解决方案是实现基于分辨率进行采样的纹理函数。

可以在使用贴图时先对贴图的分辨率进行判断,避免采样高分辨率贴图。
为了解决贴图采样函数造成的混淆问题,我们必须解决以下两个问题:

  1. 必须计算贴图空间的采样率,以及获得贴图分辨率,之后就可以计算出屏幕空间的采样率,最后为了获得图元表面的采样率就必须对贴图进行采样,以获得贴图采样率。
  2. 对于给定的贴图采样率,必须使用采样理论去引导计算贴图值,不能有高频的贴图。
PBRT笔记(8)——材质

PBRT笔记(8)——材质

BSDF类

表面着色器会绑定场景中每一个图元(被赋予了这个着色器),而表面着色器则由Material类的实例来表示。它会拥有一个BSDF类对象(可能是BSSDF),用于计算表面上每一点的辐射度(颜色)。

BSDF代表了BRDFs与BTDFs的集合。BSDF构造函数接受一个SurfaceInteraction对象,该对象包含关于表面上任意一点的微分几何信息,以及一个参数eta,该参数给出了边界上的相对折射率。对于不透明的表面,该参数则无效。构造函数将使用着色法线来构造一个正交坐标系。本节中ns表示着色法线(法线贴图上对应坐标的值)和ng代表了几何法线(面法线)。

BSDF存储了最多8个BxDF组件,因为在pbrt中不需要更多组件。BSDF实现了BxDFs坐标系与世界坐标系转换的方法。WorldToLocal(const Vector3f &v)与LocalToWorld(const Vector3f &v)。

PBRT笔记(7)——反射模型

PBRT笔记(7)——反射模型

基础术语

表面反射可以分为4大类:

  1. diffuse 漫反射
  2. glossy specular 镜面反射高光
  3. perfect specular 完美反射高光
  4. retro-reflective distributions 后反射分布
PBRT笔记(6)——采样和重构

PBRT笔记(6)——采样和重构

本文仅作为个人笔记分享,又因为本章涉及多个专业领域而本人皆未接触过,所以难免出错,请各位读者注意。

  1. 对于数字图像需要区分image pixels(特定采样处的函数值)和display pixels(显示器显示值)。
  2. 收集采样值,并将其转化为连续函数的过程被称为重构。
  3. 为了计算在数字图像上的离散像素值,我们需要在原始的图片函数上不断的采样。
  4. 采样与重构的过程中涉及到近似运算,而这个过程中产生的错误被称为锯齿。其产生原因为计算机无法连续对场景进行采样。

可以理解为把真实世界所得图像(人眼)当做一个连续的离散函数,而计算机通过像素显示,为一个不连续的点集。渲染就是一个不断采样,将结果累加缩小误差,并且通过最终值将这个函数重构的过程。(图7.1很好地说明了这些)

PBRT笔记(5)——相机模型

PBRT笔记(5)——相机模型

介绍pbrt中的camera代码大致实现。