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
gdc skin的更多相关文章
- sbusurface scattering
http://www.iryoku.com 感觉Jorge有这个世界的全部.... 2012年那篇 那年他刚博士毕业.... 抄了他很多东西 ....抄了他这么多年..... 言归正传 对sss我之 ...
- 第三十三篇:使用uiresImporter生成uires.idx及skin.xml
在SOUI中,使用uires.idx这个文件来记录程序中使用的所有资源文件. 此外绘制对象(ISkinObj)则一般放在skin.xml中描述. 要向一个界面中增加一个新的图片,在没有uiresImp ...
- Eclipse 启动时提示“发现了以元素'd:skin'开头的无效内容,此处不应含有子元素“
今天打开 Eclipse 时遇到了这个提示,如图所示: 关闭后发现控制台也有提示: [2016-04-19 11:11:20 - Android SDK] Error when loading the ...
- Marza Gift for GDC 2016
这个帖子还是用中文写了,主要是面向国内. 这是一个趋势,就是基于UE.Unity这些日趋完善的游戏引擎以及编辑器制作便宜的3D动画.国内有<超黑学院>这种为代表,还有其他许多国漫,勉强能耐 ...
- Screen Space Subsurface Scatting(Skin Rendring)
还差通透度计算,RenderMonkey截图. 参考: http://developer.download.nvidia.com/presentations/2007/gdc/Advanced_Ski ...
- 越狱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 ...
- 打开eclipse报错:发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。
[错误] 打开eclipse报错:发现了以元素 ‘d:skin’ 开头的无效内容.此处不应含有子元素. [具体报错信息] Error parsing D:\Android-sdks\system-im ...
- 用了skin皮肤控件之后,报错:容量超出了最大容量 参数名:capacity
http://blog.csdn.net/keenweiwei/article/details/7403869 用了皮肤控件之后,报错:容量超出了最大容量 参数名:capacity MessageBo ...
- 【学习总结】【多线程】 多线程概要 & GDC & NSOperation
基本需要知道的 : 进程 : 简单点来说就是,操作系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在受保护的内存空间内 线程 : 一个进程(进程)想执行任务,必须有线程(所以, ...
随机推荐
- C# Merge into的使用详解
Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key. Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一 ...
- SQL Server 2008的MSSQLSERVER 请求失败或服务未及时响应
我的是SQL server 2008R2, 以前可以正常的启动SQL server(SQLEXPRESS).SQL server(MSSQLSERVER),有几天没有打开了,就在昨天 开机之后就无法启 ...
- Single Number I&& II——还没看,倒过头来再看
Single Number I Given an array of integers, every element appears twice except for one. Find that si ...
- lr手工添加关联函数的步骤:
点击“确定”后: 如何修改已经创建好的关联规则:
- lsof恢复进程打开的文件
工作原理:进程每打开文件都会生成一个文件句柄FD来标识一个文件,进程打开的文件如果没有被释放,可以通过文件句柄FD来恢复删除的文件 注意:适合恢复进程一直在打开一个文件,例如日志文件,如果配置文件进程 ...
- 9. Spark Streaming技术内幕 : Receiver在Driver的精妙实现全生命周期彻底研究和思考
原创文章,转载请注明:转载自 听风居士博客(http://www.cnblogs.com/zhouyf/) Spark streaming 程序需要不断接收新数据,然后进行业务逻辑 ...
- 虚拟机Visualbox安装CentOS
选择安装CentOS系统 进入了安装界面,选择语言,并选择继续 安装的主界面 1.先选择日期时间,选择了亚洲,并选择上海,再点击左上角的完成按钮 2.再选择键盘,选择英文 3.选择语言为英语 4.选择 ...
- phpcms 大杂烩
问题1:栏目页伪静态(不生成HTML)时,URL规则中{$categorydir}{$catdir}仍显示为{$categorydir}{$catdir}解决方法. 第一步:打开phpcms\modu ...
- 如何让js在最后执行
$(window).bind("load", function () { var height = $(document.body).height(); $('.syntaxhig ...
- curator管理es索引
安装curator------------------rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch vi /etc/yu ...