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

gdc skin的更多相关文章

  1. sbusurface scattering

    http://www.iryoku.com 感觉Jorge有这个世界的全部.... 2012年那篇  那年他刚博士毕业.... 抄了他很多东西 ....抄了他这么多年..... 言归正传 对sss我之 ...

  2. 第三十三篇:使用uiresImporter生成uires.idx及skin.xml

    在SOUI中,使用uires.idx这个文件来记录程序中使用的所有资源文件. 此外绘制对象(ISkinObj)则一般放在skin.xml中描述. 要向一个界面中增加一个新的图片,在没有uiresImp ...

  3. Eclipse 启动时提示“发现了以元素'd:skin'开头的无效内容,此处不应含有子元素“

    今天打开 Eclipse 时遇到了这个提示,如图所示: 关闭后发现控制台也有提示: [2016-04-19 11:11:20 - Android SDK] Error when loading the ...

  4. Marza Gift for GDC 2016

    这个帖子还是用中文写了,主要是面向国内. 这是一个趋势,就是基于UE.Unity这些日趋完善的游戏引擎以及编辑器制作便宜的3D动画.国内有<超黑学院>这种为代表,还有其他许多国漫,勉强能耐 ...

  5. Screen Space Subsurface Scatting(Skin Rendring)

    还差通透度计算,RenderMonkey截图. 参考: http://developer.download.nvidia.com/presentations/2007/gdc/Advanced_Ski ...

  6. 越狱Season 1-Episode 15: By the Skin and the Teeth

    Season 1, Episode 15: By the Skin and the Teeth -Pope: doctor...you can leave. 医生你得离开 -Burrows: It's ...

  7. 打开eclipse报错:发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。

    [错误] 打开eclipse报错:发现了以元素 ‘d:skin’ 开头的无效内容.此处不应含有子元素. [具体报错信息] Error parsing D:\Android-sdks\system-im ...

  8. 用了skin皮肤控件之后,报错:容量超出了最大容量 参数名:capacity

    http://blog.csdn.net/keenweiwei/article/details/7403869 用了皮肤控件之后,报错:容量超出了最大容量 参数名:capacity MessageBo ...

  9. 【学习总结】【多线程】 多线程概要 & GDC & NSOperation

    基本需要知道的 :  进程 :  简单点来说就是,操作系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在受保护的内存空间内 线程 :  一个进程(进程)想执行任务,必须有线程(所以, ...

随机推荐

  1. hdu 3371(kruskal)

    Connect the Cities Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  2. Linux 基础——处理文件与目录的命令

    继续第三天学习,每天下班后积累一点点,始终相信厚积薄发. 一.处理文件的命令 touch dest_file:在当前目录下创建指定的文件. cp source dest:将指定的猿文件复制到目标文件, ...

  3. react表单提交

    class FlavorForm extends React.Component { constructor(props) { super(props); this.state = {value: ' ...

  4. javaScript存储

    <1> 1.document对象提供了的cookie 2.Window对象提供了sessionStorage和localStorage两个存储对象来对网页的数据进行添加.删除.修改.查询操 ...

  5. js表单提交回调函数

    在研究表单的时候发现一个有意思的东西——在表单提交的时候如何保证数据全部提交完毕才会清空? 我们常用的<input type="reset" value="重置&q ...

  6. Linux rsync数据定时增量备份

    一.安装rsync服务端 1.查看是否安装rsync ps -ef | grep rsync 系统一般默认已安装,安装方法: yum -y install rsync 2.添加配置文件 rsync没有 ...

  7. 叙Windows平台下基于MBR和UEFI的bootkit(一)--以MBR为例

    安全的对抗首先在权限方面,权限高的进程对权限低的权限就是就是降维打击,无往不利.当权限相同时,启动得早便为王.所谓的bootkit也就是基于这个思路设计的一种复杂病毒.它优先于Windows系统启动, ...

  8. Flask实战第43天:把图片验证码和短信验证码保存到memcached中

    前面我们已经获取到图片验证码和短信验证码,但是我们还没有把它们保存起来.同样的,我们和之前的邮箱验证码一样,保存到memcached中 编辑commom.vews.py .. from utils i ...

  9. Codeforces Round #404 (Div. 2) C 二分查找

    Codeforces Round #404 (Div. 2) 题意:对于 n and m (1 ≤ n, m ≤ 10^18)  找到 1) [n<= m] cout<<n; 2) ...

  10. [BZOJ2286][SDOI2011]消耗战(虚树DP)

    2286: [Sdoi2011]消耗战 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 4998  Solved: 1867[Submit][Statu ...