My Blogs

The Visibility Problem the Depth Buffer Algorithm and Depth Interpolation

当像素与三角形重叠时,我们将其视为与三角形表面上一点重叠。当然,一个像素可能会有多个点重叠,此时我们的解决办法是比较与像素重叠的每一个点的深度值,找出距离相机最近的点。这样,我们就可以引出depth buffer这个概念了。它是一个与frame buffer尺寸相同的二维浮点数数组,它用于在光栅化过程中记录物体的深度值。 Finding Z by Interpolation dept...

The Rasterization Stage

Rasterization: What Are We Trying to Solve? 经过投影阶段,我们获取了三角形的顶点在二维栅格空间中的XY坐标,同时我们还保留了相机空间中顶点原始的Z坐标(包括取反以获取一个正数) 我们下一步需要做的是遍历图像中的像素,通过测试是否像素会与当前三角形的投影图形重叠,我们可以绘制出该三角形的图像,这也是光栅化的原理。如下图所示: 在图形API中...

The Pinhole Camera Model

在上一篇博客中,我们大致了解了三角形顶点从世界空间变换到像素坐标的过程。这一篇博客是更进一步的拓展,我们将会研究基于物理的针孔相机模型在顶点坐标变换中的影响。 我们先来看看针孔相机的原理。 How a Pinhole Camera Works 在相机中,胶片的尺寸与光圈到image plane的距离对相机的成像有着至关重要的作用。在本篇博客中,我们将会讨论这两个因素对于图像质量的影响,...

Overview of Coordinates Transformations in Rasterization

本篇博客以这篇博客为基础 在计算机图形学中,变换实际上是对物体的顶点所在的坐标系进行操作,而不是直接操作物体本身。 From Local Space to World Space 这部分没什么好说的,将物体从其局部坐标系(物体自身的坐标系)变换到世界坐标系中。这涉及对物体进行平移、旋转和缩放。 From World Space to Camera Space 当我们平行或旋...

Overview of Rasterization Algorithm

The Rasterization Algorithm 本篇博客以这篇文章为基础。 在计算机图形学中,我们可以将渲染过程分为两个部分:可见性与着色。可见性问题指的是判断三维物体中的哪些部分对于相机来说是可见的。物体或场景中某些部分可能会在相机的可视范围之外,或者被其他物体所遮挡,都会导致对应部分的不可见。 解决可见性问题有两种思路,分别是光线追踪与光栅化。 对于光线追踪来说,...

RTR 4th Ch09 Physically Based Shading

3 The BRDF 最终,PBR可以归纳为沿着一组观察射线,计算进入相机的radiance。我们将此要计算的radiance记为$L_i(c, -v)$。其中,$c$表示相机的位置,$-v$表示沿着观察射线的方向。负号的使用基于两点PBR中的符号约定: $L_i()$中的方向向量始终指向远离给定点的方向,在这里即远离相机的方向 观察向量$v$始终指向相机 在渲染中,我们默...