这里覆盖的是skin shading和detail map相关

skin shading
pre integrated skin shading
在infamous阶段,sucker punch使用了pre integrated skin shading, 这个细节可以看
[gpu pro2]pre integrated skin shading
一张图看就是这个:

dot(n, l)就是normal和light的dot
1/r就是曲率
这个做法不依赖deferred shading,也很适合手游;
directional curvature

这里sucker punch在对马岛里做的一个改进就是把曲率计算从一个表面的平均曲率计算变成圆柱体状的曲率(directional curvature)计算;
这样也更加的物理正确;
directinal curvature algorithm
给定皮肤表面上一个点,我们计算directional curvation过程如下:
- 首先计算curvature tensor

这个II就是curvature tensor,是一个2x2的矩阵;
-使用light dir来和curvature tensor来计算出来directinal curvature

计算过程
这个计算过程如下:
- 预计算tangent space curvature tensor(基于:Estimating Curvature and Their Derivatives on Triangle Meshes (Rusinkiewicz, 2004)),这个tensor
- 把directional curvature tensor和mean curvature信息存在vertex中(4 byte)
- 把一些数值太偏的情况做一些blur
- directional lighting:把lightdir在tangent space里和curvature tensor结合来计算出directional

sum
这里也要补充下,对于directional lighting的case,是需要directional curvature,更加物理正确;
对于ambient lighting类的,还是需要使用mean curvature才对;

贴个大爷脸看看;

detail maps
这里sucker punch也是用了detail map来增强高频贴图;
主要亮点两个:
- 把传统的overlay blend做了改进(对于albedo贴图),改进了在贴图压缩情况下的精度保留(损失更少)情况
- 对于混合过程的分析很不错
先看结果:
给定贴图混合定义:


传统做法是:

suckerpunch的改进做法是:

这个后面会有分析,简言之就是在贴图使用bc1压缩的情况下,希望达成target在接近detail的case下,精度损失更少,混合效果更好;
然后是分析过程:
对于传统的blend方式,处理效果这样的:

这里使用曲线来把精度损失情况给列出来,挺不错的:

然后改进版:

可以很好地看到s,d,对于t的影响趋势(虽然对于简单的运算来讲,直接看共识更直接点)
然后使用RSME(root mean squared error,均方误差)来评估精度损失:


sum

最后看下效果效率,都不错的
本文深入探讨了预集成皮肤着色(preintegratedskinshading)在手游中的应用,特别是Sucker Punch在《对马岛之鬼》中采用的改进版方向曲率(directionalcurvature)计算,提高了物理真实感。同时,文章介绍了他们在细节贴图(detailmaps)上的创新,通过改进传统融合方法,优化了在压缩贴图条件下的精度,确保在不同光照条件下实现更好的混合效果。文章通过实例和比较展示了这些技术的优越性和效率。
1万+

被折叠的 条评论
为什么被折叠?



