次表面散射Subsurface Scattering(SSS)
2014-12-29 14:59
459 查看
一. 概述
前面BRDF,冯氏光照方程考虑的是光在物体表面的相互作用,讨论的是在物体表面光线如何被反射,以及被发射的量等问题。而实际上光线除了被反射,还有一部分是穿透表面进入物体内部在材质里发生散射。光线在物体材质内部的散射往往使得整体效果更加柔和,这种显现被称作次表面散射。对于皮肤在明暗的衔接处散射往往引起微弱的倾向红色的颜色偏移。背光效果图如下:
无散射效果图
SSS效果图
明显可以看出经过次表面反射计算的效果更加真实。
[b]二. 实现方式[/b]
对SSS的实现方式有很多,在此只介绍一种简单的用深度映射模拟吸收的方式。该方法的基本思想是:光在材质中的传播的越远,它的散射和吸收的越厉害。为模拟此效果我们需要计算光在材质中传播距离。计算传播距离的方式则是通过深度图,具体步骤如下:
1. 以光源为视点渲染整个场景,存储光源到物体对象的最近距离。
2. 在相机空间绘制对象时,先将顶点数据转化到光源视点空间,由光源深度图读出深度信息与该顶点在光源空间距离灯光的距离(深度)做差,求出光在物体对象中的传播距离如下图:
注:
在灯光空间绘制深度图时,记录Object对象距离灯光的最近距离如di1 di2(Object 上半部分)。 在视图空间绘制时do1 do2时,先将do1 do2转化到灯光空间(转化到灯光空间后 di2 do2将会有相同的x y值 zi2 zo2为其在灯光空间的深度信息也就是到灯光的距离)用两者在灯光空间深度值做差可以计算出光在该点传播的距离。
3. 由距离s可以通过美术给的一张一维颜色索引取得颜色值,也可以通过指数e(-s)*lightColor计算最终颜色。
前面BRDF,冯氏光照方程考虑的是光在物体表面的相互作用,讨论的是在物体表面光线如何被反射,以及被发射的量等问题。而实际上光线除了被反射,还有一部分是穿透表面进入物体内部在材质里发生散射。光线在物体材质内部的散射往往使得整体效果更加柔和,这种显现被称作次表面散射。对于皮肤在明暗的衔接处散射往往引起微弱的倾向红色的颜色偏移。背光效果图如下:
无散射效果图
SSS效果图
明显可以看出经过次表面反射计算的效果更加真实。
[b]二. 实现方式[/b]
对SSS的实现方式有很多,在此只介绍一种简单的用深度映射模拟吸收的方式。该方法的基本思想是:光在材质中的传播的越远,它的散射和吸收的越厉害。为模拟此效果我们需要计算光在材质中传播距离。计算传播距离的方式则是通过深度图,具体步骤如下:
1. 以光源为视点渲染整个场景,存储光源到物体对象的最近距离。
2. 在相机空间绘制对象时,先将顶点数据转化到光源视点空间,由光源深度图读出深度信息与该顶点在光源空间距离灯光的距离(深度)做差,求出光在物体对象中的传播距离如下图:
注:
在灯光空间绘制深度图时,记录Object对象距离灯光的最近距离如di1 di2(Object 上半部分)。 在视图空间绘制时do1 do2时,先将do1 do2转化到灯光空间(转化到灯光空间后 di2 do2将会有相同的x y值 zi2 zo2为其在灯光空间的深度信息也就是到灯光的距离)用两者在灯光空间深度值做差可以计算出光在该点传播的距离。
3. 由距离s可以通过美术给的一张一维颜色索引取得颜色值,也可以通过指数e(-s)*lightColor计算最终颜色。
相关文章推荐
- Subsurface Scattering(SSS,次表面散射)介绍
- [置顶] Unity3d 屏幕空间人体皮肤知觉渲染&次表面散射Screen-Space Perceptual Rendering & Subsurface Scattering of Human Skin
- 次表面散射(SubSurface Scattering) Shader
- Unity3d 屏幕空间人体皮肤知觉渲染&次表面散射Screen-Space Perceptual Rendering & Subsurface Scattering of Human Skin
- Unity3d shader之次表面散射(Subsurface Scattering)
- Unity3d shader之次表面散射(Subsurface Scattering)
- Practise Skin Sub Surface Scattering (SSS) Effect In RenderMan Production
- Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)
- Fast Subsurface Scattering
- Subsurface Scattering in mental ray
- 如何加强角色渲染的真实感(self shadow + subsurface scattering + rim lighting)
- Realtime Subsurface Scattering Skin Rendering On the GPU 演示视频
- Fast Realtime Subsurface Scattering Skin Rendering
- 如何加强角色渲染的真实感(self shadow + subsurface scattering + rim lighting)
- Fast Realtime Subsurface Scattering Skin Rendering
- 次表面散射(SubSurface Scattering) Shader 【转】
- Realtime Subsurface Scattering Skin Rendering On the GPU 视频
- 实现Subsurface Scattering效果(Subsurface Scattering shader by InvalidPointer : Half-Lambert + Fresnel Term)
- Subsurface Scatting 的简单模拟
- Approximating Translucency for a Fast, Cheap and Convincing Subsurface-Scattering Look