My Blogs

Overview of Rasterization Algorithm

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

Ch09 Physically Based Shading

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

Lights

光照是光线追踪的关键组件,早期的光线追踪器主要是用抽象的光源,比如空间中的一个点或方向。而现代光线追踪器更多地使用基于物理的光照,这些光源不仅有位置,还有大小。 7.1 首先我们来创建一个没有反射的自发光材质,并添加一个对应的emitted()函数,用于告诉光线这个材质是什么颜色的,原理类似于渲染器中的背景色,所以代码很简单: class diffuseLight final : pu...

Texture Mapping

在计算机图形学中,纹理映射指的是给场景中的物体添加材质效果,这里的效果指的是一种或多种材质属性,例如颜色、光泽度、凹凸等。其中,定义出物体表面上每个点的颜色是最常用的一种纹理映射。只是在实操中,我们通常是根据给定点的位置,在纹理上查找对应的颜色值。 4.1 Constant Color Texture 在我们的工程中,我们为纹理创建一个单独的类。texture类的主要函数是value()...