gdc skin

https://www.gdcvault.com/play/1024410/Achieving-High-Quality-Low-Cost

这篇是教美术怎么用做地形那种方法 复用贴图 做skin的 做个编辑器出来体现 pores那部分的细节

 

skin 包含

pores

pbr ---反射,GI

sss

postprocess

sss很重要

linearspace 做光照 

http://www.iryoku.com/

iryoku对此有详细论述 

2013年那篇很复杂了 细节多到令人发指 超乎想象 300多页

他在 github上有很简单的 shadowmap 拿厚度做sss的demo

https://github.com/iryoku/separable-sss

 

接下来讲比较复杂的sss

分两部分

1.reflectance part  让反射不那么harsh

2.transmittance part 薄的地方比较透

================================================================

sss 的几个算法 文中用的是shadowmap-base

float4 shadowPosition = SSSSMul(shrinkedPos, lightViewProjection);
float d1 = SSSSSample(shadowMap, shadowPosition.xy / shadowPosition.w).r; // 'd1' has a range of 0..1
float d2 = shadowPosition.z; // 'd2' has a range of 0..'lightFarPlane'
d1 *= lightFarPlane; // So we scale 'd1' accordingly:
float d = scale * abs(d1 - d2);

当前点从sm采样拿到光源距离d1

当前点变换到lightspce拿到光源距离d2

相减得到精确光线上obj厚度

需要高精度sm

Shadowmap-based Translucency /sss [Ki09]

还有另外几种方法

Texture-space Importance Sampling[Chang08]

Texture-space Diffusion blurs, for skin/sss[Hable09]

 

double-sided lighting&attenuation for foliage [Sousa08]

 

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

这里介绍了一种更cheap的方法 来自于Sousa08 对于规则物体

先烘焙出一张thickness map

烘焙的方法是 表面surface normal取反 做AO 存到tex里面 就是thickness

这个方法的问题在于得到的厚度是不精确的 与观察角度无关的 粗略的值 表现比shadowmap方法差

就是像diffuse贴图一样的一个东西 不区分角度的 只是标注出 比如手是thin的 上身是thick的 不区分角度

 =========================

texture space的方法我还没看

https://ir.nctu.edu.tw/bitstream/11536/29787/1/000255285500041.pdf

===========================

http://www.iryoku.com/separable-sss/downloads/Separable-Subsurface-Scattering.pdf

昨天补了下 convolution 和Gaussian blur

今天看这篇paper

1.sss可以看成 内部多次diffuse

   可以近似为 diffuse kernel的卷积

2.由于gaussian的对称性 2d 的convolution 可以简化为1D

 

posted on 2018-08-02 14:10  minggoddess  阅读(400)  评论(0编辑  收藏  举报