The Pinhole Camera Model
在上一篇博客中,我们大致了解了三角形顶点从世界空间变换到像素坐标的过程。这一篇博客是更进一步的拓展,我们将会研究基于物理的针孔相机模型在顶点坐标变换中的影响。 我们先来看看针孔相机的原理。 How a Pinhole Camera Works 在相机中,胶片的尺寸与光圈到image plane的距离对相机的成像有着至关重要的作用。在本篇博客中,我们将会讨论这两个因素对于图像质量的影响,...
在上一篇博客中,我们大致了解了三角形顶点从世界空间变换到像素坐标的过程。这一篇博客是更进一步的拓展,我们将会研究基于物理的针孔相机模型在顶点坐标变换中的影响。 我们先来看看针孔相机的原理。 How a Pinhole Camera Works 在相机中,胶片的尺寸与光圈到image plane的距离对相机的成像有着至关重要的作用。在本篇博客中,我们将会讨论这两个因素对于图像质量的影响,...
本篇博客以这篇博客为基础 在计算机图形学中,变换实际上是对物体的顶点所在的坐标系进行操作,而不是直接操作物体本身。 From Local Space to World Space 这部分没什么好说的,将物体从其局部坐标系(物体自身的坐标系)变换到世界坐标系中。这涉及对物体进行平移、旋转和缩放。 From World Space to Camera Space 当我们平行或旋...
The Rasterization Algorithm 本篇博客以这篇文章为基础。 在计算机图形学中,我们可以将渲染过程分为两个部分:可见性与着色。可见性问题指的是判断三维物体中的哪些部分对于相机来说是可见的。物体或场景中某些部分可能会在相机的可视范围之外,或者被其他物体所遮挡,都会导致对应部分的不可见。 解决可见性问题有两种思路,分别是光线追踪与光栅化。 对于光线追踪来说,...
3 The BRDF 最终,PBR可以归纳为沿着一组观察射线,计算进入相机的radiance。我们将此要计算的radiance记为$L_i(c, -v)$。其中,$c$表示相机的位置,$-v$表示沿着观察射线的方向。负号的使用基于两点PBR中的符号约定: $L_i()$中的方向向量始终指向远离给定点的方向,在这里即远离相机的方向 观察向量$v$始终指向相机 在渲染中,我们默...
Radiometry 辐射度学 不同波长的电磁波具有不同的属性。人类肉眼可见的电磁波的波长范围为400纳米到700纳米。如下图所示: 在基于物理的渲染中,我们围绕以下四个辐射度量学中的物理量展开: Name Symbol Units radiant flux $\Phi$ ...
最后,我们创建一个新场景,用于展示Ray Tracing The Next Week中所添加的新特性: ... void finalScene(int imageWidth, int samplesPerPixel, int maxDepth) { hittableList boxes1; auto ground = make_shared<lamberti...
9.1 Constant Density Mediums 首先,我们来实现一个密度恒定的volume。穿过volume的光线既有概率在volume内部散射,也有可能直接穿过,如下图所示。当volume的密度更低或volume更薄时,穿过volume的概率更大。此外,光线在volume中行进的距离也影响了光线穿过volume的概率 当光线穿过volume时,可能会在任意位置上发生散射。...
我们的康奈尔盒现在还有些空荡,所以让我们在房间中再添加两个方块。首先,我们需要通过6个quad来组成一个方块,我们可以创建一个函数,用于返回一个box class quad final: public hittable {...}; inline shared_ptr<hittableList> box(const point3& a, const point3&am...
光照是光线追踪的关键组件,早期的光线追踪器主要是用抽象的光源,比如空间中的一个点或方向。而现代光线追踪器更多地使用基于物理的光照,这些光源不仅有位置,还有大小。 7.1 首先我们来创建一个没有反射的自发光材质,并添加一个对应的emitted()函数,用于告诉光线这个材质是什么颜色的,原理类似于渲染器中的背景色,所以代码很简单: class diffuseLight final : pu...
此前我们的渲染器只支持球体这一种primitive,现在是时候添加四边形了。 6.1 Defining the Quadrilateral 虽然在代码中我们会以quad来命名新的primitive,但从技术上来说,我们实际要实现的是平行四边形。我们通过以下三个参数定义平行四边形: Q:起始的一角 u:表达平行四边形其中一条边的向量 v:表达平行四边形另一条边的向量 ...