【CG】150行C++路径追踪
学了 离线渲染 相关的知识这么久了,自己也写过一些渲染器,但是我认为我对渲染器中的积分器的实现的理解还是不够透彻,于是打算写一个简单的 path tracer 程序来加深自己的印象 ,于是就得到了(无第三方库 代码 ...
学了 离线渲染 相关的知识这么久了,自己也写过一些渲染器,但是我认为我对渲染器中的积分器的实现的理解还是不够透彻,于是打算写一个简单的 path tracer 程序来加深自己的印象 ,于是就得到了(无第三方库 代码 ...
我们都知道标准的 Rendering Equation 是 $$ L_o(p, \omega_o) = L_e(p, \omega_o) + \int_{\Omega } f_r(p,\omega_i, \omega_o) L_i(p,\omega_i) (\mathbf{n}\cdot\omega_i) d\omega_i $$ 而我们需要计算一个以 $p$ 点为球心,以 $p$ 点法线 $n$ 方向为半球区域 $\Omega$ 的积分 而这个积分没有解析解,所以我们通常需要通过 Monte Carlo 方法进行求解。 将 Rendering Equation 写成 Monte Carlo Estimator 得到 ...
柏林噪声 | Perlin Noise 在很多游戏中,比如 Minecraft 的地形生成,怪物猎人的云,大部分游戏中的火焰,水面的纹理都是基于 Perlin Noise 实现的 而这篇文章我们将学习 Perlin Noise 的基本思想,以及使用 C++ 实现一个基本的二维 Perlin Noise ...
因为我不是计算机专业的,可以这么说,我是民计(类似民科),所有计算机相关的内容都是自学的,在看 CSAPP 第二章的时候看得我是异常得痛苦,虽然我能看懂,但是我认为我对数据表示这一块不是很感兴趣,所以看起来有点难受,索性我直接采用探索性学习法,我决定不再看第二章,直接去做第二章的作业,以及DataLab,而我将在探索中学习到这些知识,现在这篇文章是我做DataLab的记录。 ...
介绍 在光栅化中我们通过定义三角形的三个顶点的各种属性并对其进行重心坐标插值而得到三角形内部点的属性,而我们又经常需要知道在屏幕空间中三角形内部两个相邻的像素间其对应的三维空间中点的属性的变化率(在连续空间中变化率就是导数),简单说就是当像素变化了一个单位时其他属性的变化量是多少。 ...
雅可比迭代法(Jacobi Iteration Method)是一种求解线性方程组的方法,它与我们熟悉的高斯消元法两种不同的方法,高斯消元法是一种直接法,能直接得到方程的精确解,而 Jacobi 迭代法从名字就能猜到是一种间接法,也就是通过迭代来逼近精确解,给出的是近似解。 ...
前言 《A Reflectance Model for Computer Graphics1》由 Robert L. Cook(来自 Lucasfilm)和 Kenneth E. Torrance(来自康奈尔大学)于 1982 年发表于 SIGGRAPH 这篇论文是计算机图形学中最常用的反射模型,在看这篇论文之前我已经了解过论文中提到的模型了,不过是经过改进的现代模型,现在让我们看看原文是怎么写的,主要聚焦于Cook-Torrance 反射模型 ...
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 来仔细讲解和实现。 ...
背景 上次学习了 Radiometry&Monte Carlo Integration 的理论知识,现在觉得自己很强,想学习一下怎么将理论应用到实践中了,你准备在你第一次实现的那个最简单的渲染器上进行扩展,并加入一些新的材质、和优化方法,并且进一步理解上次代码中不懂得一些问题 ...
背景 你根据给出的 README 成功构建了一个最简单的 Path Tracing Renderer 渲染出来了自己的第一个 Cornell Box,并且心怀忐忑的将答卷交到了 CGLab 的邮箱中去,虽然最终结果看起来很丑陋,整幅图都是噪点,而且渲染出来的速度非常慢,但是说到底也是渲染出来了。 ...