一种高效的SSS模拟

次表面反射普遍用在皮肤, 植物叶子, 蜡烛和玉这类物体上. 之前在Signed Distance Fields in Real-time Rendering最后用SDF模拟过. 其他常规做法比较复杂, 我以为其中最为简单的要数Eric Penner[2]的方法, 但是其计算量还不是最低的, 同年的GDC里, DICE的工程师Colin和Marc[1]给出了一个非常hack的快速模拟, 基本算法仅消耗13个ALU指令, 虽然其基本物理不正确, 但是看起来的效果却非常令人满意.

他们的做法原理主要是利用AO, 一般情况下大家用AO模拟GI的阴影, 利用的是某一点被光线照到的概率. Colin和Marc根据Sousa[3]的启发非常聪明的利用这个特性: AO也可以表示物体内部光线在物体内部穿射时候的概率, 来快速模拟BSDF(BRDF + BTDF). 这个方法的缺点是需要预先烘焙的一个AO图, 并且对非凸包图形效果模拟不够好. 虽然如此, 但是这个方法对计算量的是所有SSS模拟中最少的, 所以还是非常推荐大家灵活使用。

下面是利用Colin的方法渲染的效果:

<img data-rawheight="1194" src="https://pic1.zhimg.com/v2-3bca8138ce6ce169e5542003448e0ab8_b.jpg" data-size="normal" data-rawwidth="2254" class="origin_image zh-lightbox-thumb" width="2254" data-original="https://pic1.zhimg.com/v2-3bca8138ce6ce169e5542003448e0ab8_r.jpg">
皮肤SSS效果
<img data-rawheight="1194" src="https://pic1.zhimg.com/v2-723bdef902e6917a7e9a5852d802a41c_b.jpg" data-size="normal" data-rawwidth="2254" class="origin_image zh-lightbox-thumb" width="2254" data-original="https://pic1.zhimg.com/v2-723bdef902e6917a7e9a5852d802a41c_r.jpg">
灯光从内穿透
<img data-rawheight="369" src="https://pic3.zhimg.com/v2-c591ed2978bf485c63f9ebe68d62947a_b.jpg" data-size="normal" data-rawwidth="696" class="origin_image zh-lightbox-thumb" width="696" data-original="https://pic3.zhimg.com/v2-c591ed2978bf485c63f9ebe68d62947a_r.jpg">
逆光更清晰
<img data-rawheight="436" src="https://pic4.zhimg.com/v2-c265550c042eb810073f9e8bed41aedf_b.jpg" data-size="normal" data-rawwidth="689" class="origin_image zh-lightbox-thumb" width="689" data-original="https://pic4.zhimg.com/v2-c265550c042eb810073f9e8bed41aedf_r.jpg">
因为是低模, 所以看起来像纸片,面数高的模型会有体积感

使用的shader指令统计:

<img data-rawheight="85" src="https://pic3.zhimg.com/v2-b7d18e0791bf7fd9b502f871772e01aa_b.jpg" data-size="normal" data-rawwidth="403" class="content_image" width="403">
未优化的版本

一些制作tip:

  • 物体的Reverse AO我是在Max里烘焙的.
  • AO最好不要有“全黑”或者“全白”, 不然特定角度看起来会非常假.
  • AO这张图分辨率不需要很高,但是采样时候需要很高,不然噪点也会影响最终效果。

如果跟lightmap混合使用,可以做出非常精美的效果, 下图是寒霜2里的效果:

<img data-rawheight="441" src="https://pic4.zhimg.com/v2-fb28010c0bceb764ab5bd1633b7b495b_b.jpg" data-size="normal" data-rawwidth="927" class="origin_image zh-lightbox-thumb" width="927" data-original="https://pic4.zhimg.com/v2-fb28010c0bceb764ab5bd1633b7b495b_r.jpg">
截图来自 Colin[1].

Talk is Cheap, Enjoy Yourself!


[1] Colin Barré-Brisebois, Marc Bouchard, GDC 2011, Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look, 2011.

[2] Eric Penner, SIGGRAPH 2011, Pre-integrated Skin Shading, 2011.

[3] Sousa, Tiago. “Vegetation Procedural Animation and Shading in Crysis,” GPU Gems 3, Hubert Nguyen, Ed., Addison-Wesley, 2008: pp. 373-385.

https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值