非表面模型
参与介质(Participating Media)
例如云、雾等。
其中的小晶体、小分子等会吸收光、反射光等。
使用相位函数(Phase Function)来描述如何反射等。
渲染思路:
- 随机选择一个方向来反射
- 随机选择一个距离来传播
- 在每个反射点来连接光源进行着色
头发材质
Kajiya-Kay 模型
效果不是很好,只考虑了头发上的反射。
Marschner 模型
广泛应用,更进一步地考虑了光线透过头发。
但是这个模型不能很好地表现动物毛发。
这个模型将头发认为是有颜色的实心圆柱体。
但实际上头发中不是均一的某种物质,其中还有一个更小的圆柱体含有髓质。头发的髓质较少,但是其他毛发的髓质较多。
双圆柱模型
同上文描述,即考虑了髓质的存在。
颗粒(Granular)材质
例如盐、白砂糖、米、沙子等。
表面模型
半透明(Translucent)材质
例如玉石、水母等。
次表面反射
也就是,在材质内部反射,然后从某个方向离开表面。
BSSRDF:作为BRDF的延伸,决定了光从某个方向进来,某个点进来,某个方向出去,某个点出去时光照。也会改变渲染方程。
Dipole Approximation
通过在物体内部加一个虚拟光源来达到次表面反射的效果
布料
可以当做表面来渲染,用BRDF进行。
也可以当做参与介质来渲染,效果比当做平面要好,但是慢。
也可以直接暴力地将每一根纤维渲染出来,类似头发,效果好,速度慢。
有细节的材质
例如遍布金属表面的小划痕。
可以用法线贴图,以及微表面模型来渲染,虽然效果很好,但是十分的慢。
解决办法:在像素意义上使用BRDF。
有时候,物体表面反射出来的是各种颜色。例如照射一块铝片,反射出来的宏观上是银色,但是细细的观察会发现有很多不同的颜色。这需要波动光学的帮助。
程序化生成表面
不用纹理而是用一个噪声函数定义表面。
可以生成地形、木纹、铁锈等等。