Physically Based Rendering

0. Intro

写这个主要是记录一下今年刚上完的Rendering algorithm课,大概主要会写写渲染的数学和常见的方法。首先感谢Dr. Wojciech Jarosz开了这门课,让我真的好好的学了一下到底是怎么渲染的。 大概会写4-5篇文章,简单的path-tracing,各种sample的方法,一些降低variance的方法还有volume rendering。

1. Rendering Equation

首先渲染就是图形学中利用计算机来模拟真实世界中的光的反射。比如你现在面前有一个桌子,为什么在你的眼睛里是这个颜色?因为有光子从光源出发经过这个桌子反射到了你的眼睛里面。而不同的物体之间的却别是因为不同的材质对光会有不同的反射。 FoodImage

渲染也一个场景也有不同的方法,当然也不一定要像是真实场景。比如游戏里的渲染(都是hack),或者一些游戏电影也没有要求像真实场景一样。但这里接下来的渲染都特指真实感渲染(Photo-realistic rendering),其目的是渲染一个和现实中场景没有区别的图片。比如著名的Cornell Box, 在计算机中建了一个和真实模型几乎一样的模型,渲染出了一个很难区分的图片 (当然现实里的方块因为有磨损和地板不是完全接触的还有拍照拍进去了背景房间,还是可以看出哪个是真的哪个是假的。

1986年Kajiya给出了渲染领域最重要的论文 !”The rendering equation”, 给出了数学意义上渲染到底在干什么。

$L_o(x, \omega_o) = L_e(x, \omega_o) + \int_{\Omega}f(x, \omega_o, \omega_i)L_i(x, \omega_i) (\omega_i \cdot n) d\omega_i$