现代渲染
双向路径追踪(BDPT)
相同采样数,有更好的效果(对于光线不好被捕捉的情况),但实现难度很大,运行速度会慢很多。
Metropolis Light Transport(MLT)Metropolis光线传播
markov链
被积函数和pdf同形时variance最小
(适合做复杂的,困难的光路传播,但很难估计什么时候收敛,所有操作都是局部的,不适合做动画,因为上一帧和这一帧图像会很抖)
光子映射
适合用来渲染聚焦的光线。
和很困难的路径SDS(Specular-Diffuse-Specular)
实现方法之一
- 从光源出发,打出光线,直到打到diffuse(漫反射)物体上停止
- 从眼睛开始,打出光线,直到打到diffuse(漫反射)物体上停止
- 计算局部密度估计(density estimation),对于最近的着色点,取最近的n个光子,计算光子密度。
取少会乱,取多会胡
Vertex Connection and Merging(VCM)
双向路径追踪和光子映射的结合体
instant Radiosity(实时辐射度算法)
已经被照亮的面,都认为是光源。
问题:有些地方会莫名其妙发光。不能做镜面反射。
现代外观建模
1.散射介质(雾,云)
一束光线打到一个晶体发生散射,
各个方向打来的光线又被晶体吸收。
怎么散射
由一个函数来定义(phase function,相位函数)。
怎么渲染
2.毛发
Marschner 模型
TRT:直接反射
TT:穿透
R:进入后内壁反射,再穿透出来
d’Eon 模型
头发多次反散,可能多达百次。这就是头发难渲染的原因。
闫老师毛发模型
加入了髓质的散射效果
3.颗粒状材质
很难渲染
4.晶体材质
次表面反射(对BRDF的延申)(BSSRDF)
Dipole方法
近似次表面反射
十个渲染的最真实的人物模型
布料材质
纤维->股->线
1.当成散射介质
将布料当成一个体积,每一处体积块都有相应的性质。
2. 当成实际纤维
暴力做法:将每一个纤维都渲染出来。
3. 当成物体表面
三维纹理
noise函数(造生函数)
用于水面,山川。。。。。。