【CG】 Perlin Noise

柏林噪声 | Perlin Noise 在很多游戏中,比如 Minecraft 的地形生成,怪物猎人的云,大部分游戏中的火焰,水面的纹理都是基于 Perlin Noise 实现的 而这篇文章我们将学习 Perlin Noise 的基本思想,以及使用 C++ 实现一个基本的二维 Perlin Noise ...

July 23, 2026 · 4 min · 1775 words · 氧均竭

【CG】 屏幕空间导数

介绍 在光栅化中我们通过定义三角形的三个顶点的各种属性并对其进行重心坐标插值而得到三角形内部点的属性,而我们又经常需要知道在屏幕空间中三角形内部两个相邻的像素间其对应的三维空间中点的属性的变化率(在连续空间中变化率就是导数),简单说就是当像素变化了一个单位时其他属性的变化量是多少。 ...

July 3, 2026 · 4 min · 1570 words · 氧均竭

【CG | Paper Reading】A Reflectance Model for Computer Graphics

前言 《A Reflectance Model for Computer Graphics1》由 Robert L. Cook(来自 Lucasfilm)和 Kenneth E. Torrance(来自康奈尔大学)于 1982 年发表于 SIGGRAPH 这篇论文是计算机图形学中最常用的反射模型,在看这篇论文之前我已经了解过论文中提到的模型了,不过是经过改进的现代模型,现在让我们看看原文是怎么写的,主要聚焦于Cook-Torrance 反射模型 ...

May 25, 2026 · 4 min · 2001 words · 氧均竭

【CG | Re0:PathTracing】 Specular Reflection | 0x04

Abstract 上一节,我们学习并实现了简单的 Lambertian 漫反射材质模型,这一节我们将学习更复杂的 Cook-Torrance 材质模型并将其实现到我们现有的渲染器中。 Microfacet Theory 上一节,我们也提到过“在 Re0:0x02 中我们给出了 BRDF 的定义,但是那只是定义式是没办法用于真正计算的,所以我们需要对真实的材质在我们的定义式下进行建模,通过建模后的式子才适合用于计算”,然后我们给出了简单的漫反射材质模型,这一节我们将学习更复杂的材质模型。而这个材质模型是由 Robert L. Cook(来自 Lucasfilm)和 Kenneth E. Torrance(来自康奈尔大学)于 1982 年发表的《计算机图形学的反射模型》(A Reflectance Model for Computer Graphics1)所提出的。我们将结合这篇论文、 Google filament 的白皮书 《Physically Based Rendering in Filament2》和 Real Shading in Unreal Engine 43 来仔细讲解和实现。 ...

May 25, 2026 · 5 min · 2412 words · 氧均竭

【CG | Re0:PathTracing】实现 IS RR NEE MIS | 0x03

背景 上次学习了 Radiometry&Monte Carlo Integration 的理论知识,现在觉得自己很强,想学习一下怎么将理论应用到实践中了,你准备在你第一次实现的那个最简单的渲染器上进行扩展,并加入一些新的材质、和优化方法,并且进一步理解上次代码中不懂得一些问题 ...

May 18, 2026 · 17 min · 8328 words · 氧均竭

【CG | Re0:PathTracing】Radiometry&Monte Carlo Integration | 0x02

背景 你根据给出的 README 成功构建了一个最简单的 Path Tracing Renderer 渲染出来了自己的第一个 Cornell Box,并且心怀忐忑的将答卷交到了 CGLab 的邮箱中去,虽然最终结果看起来很丑陋,整幅图都是噪点,而且渲染出来的速度非常慢,但是说到底也是渲染出来了。 ...

May 6, 2026 · 16 min · 7877 words · 氧均竭

【CG | Re0:PathTracing】 从零开始搓一个路径追踪渲染器 | 0x01

背景 你在一个教室中趴在桌子上睡觉,天色开始逐渐变红,教室中的窗帘被一阵风拍的开始乱飞,你被惊醒,发现同学都不见了,你跑出教室,下楼的时候你突然脚滑摔晕。 ...

April 17, 2026 · 32 min · 15588 words · 氧均竭

【CG】Games101系列总结

打算结束掉这个系列了,因为我目前的精力完全不够了,需要开发Luna ,还需要学习新的知识,当我学习新的知识的时候会同步更新blog,这些已经掌握的知识再写blog就有些浪费时间了。 下面是这个系列文章的索引了。 目前更新到第14节,但其实15-17节中的内容我其他的文章中也有提到,所以可以去参考那些blog学习,我现在真正感兴趣的时候去实现games101中的大作业,所以期待新的大作业相关的blog吧! 也许未来有时间还会继续补充完整的。 01.Overview of Computer Graphics 02.Review of Linear Algebra 03.Transformation 04.Transformation Cont 05.Rasterization 1 (Triangles) 06.Rasterization 2 (Antialiasing and Z-Buffering) 07.Shading 1 (Illumination, Shading and Graphics Pipeline) 08.Shading 2 (Shading, Pipeline and Texture Mapping) 09.Shading 3 (Texture Mapping Cont.) 10.Geometry 1 (Introduction) 11.Geometry 2 (Curves and Surfaces) 12.Geometry 3 13.Ray Tracing 1 14.Ray Tracing 2 其他参考 【CG】辐射度量学 & PBR 【CG】基于图像的光照 Image-based Lighting(实时渲染) ...

April 12, 2026 · 1 min · 354 words · 氧均竭
cover

【CG】Games101-014学习笔记 & 作业解析

Acceleration Structures 我们已经知道我们可以通过AABB来加速我们的光线与物体求交,但是在这个基础上我们可以进一步进行加速,下面是两种方法 Uniform Grid 找到整个场景的AABB包围盒 将整个包围盒均匀划分为网格 找到所有物体在网格中的位置并存储起来 ...

April 7, 2026 · 7 min · 3433 words · 氧均竭
cover

【CG】Games101-013学习笔记 & 作业解析

Ray Tracing Why Ray Tracing? Ray Tracing 主要是解决光栅化中不太好解决的全局效果的问题,我们知道光栅化是只关注Shading Point和光源的效果,Shading Point与其他周围的物体完全无关,这就会很难做到一些全局效果,比如:软阴影,间接光照,Glossy reflection等等,光栅化中光线命中到物体后就不会发生反弹了,但是在光线追踪中,光源会发生多次的弹射。 光栅化的优点是一种很快的方法,但是渲染质量非常的低。 而光线追踪的优点是可以得到更好的质量,但是速度非常慢。 ...

April 6, 2026 · 5 min · 2308 words · 氧均竭