文章目录

  • 声明
  • 环境
  • 原因
  • 开始参考制作
  • GIF 效果
  • LUT 贴图的制作
  • 最终效果应用
  • Shader - 不公开
  • References

声明

以下 素材 是 “合理参考” 得到的
仅当学习、参考用,也不可能公开
如果有侵权,请告诉我,我马上删除掉~

公开部分的代码,我有自己调整过


环境

Unity : 2020.3.37f1
Pipeline : BRP


原因

其实之前我写过一篇:Unity Shader - “快速“ 次散射 (Fast SSS : Fast Subsurface Scattering)

但是这种方法应用在实际项目中表现不佳

更多的市面上的效果都使用 Ramp Texture 或是 LUT 来处理,让材质可控制更高一些

然后美术去玩了:《CFDG》,美术觉得里面的皮肤效果制作得相当好

然后就开始了 “合理参考” 里面的制作方法


开始参考制作

合理的参考过程中,发现代码中看到很多各种各样的处理

(可谓五花八门,不论原理对不对,只要效果好看,就是对的,这也是图形学的 铁原则)

其中看到 SSS 在采样时,还做了 normal 的插值平滑,让 SSS 背面光 更加柔和

这么做的好处就是:透光部分的细节不用太多,整体平滑一些,会好看很多

效果如下

平滑前:

平滑后:

                // 212121// jave.lin : 求 vertex normal 和 normal map 的法线差值,给下面做平滑// half3 delta_N_with_normalMap = -normalY_mul_bitangentWS * normalY_mul_bitangentWSLenInv + i.normalWS.xyz;half3 delta_N_with_normalMap = i.normalWS.xyz - N;// delta_N_with_normalMap.y *= -1;// return delta_N_with_normalMap.xyzx;// 222222// jave.lin : 相当于 让 顶点的法线 和 贴图的法线 做一个 lerp,这样可以给 sss 的 lambert 作为 LUT 时比较平滑delta_N_with_normalMap = _ScatterDepth * delta_N_with_normalMap + N4.xyz;// return N4.xyzx;// return delta_N_with_normalMap.xyzx;// 232323// jave.lin : 所谓 SSS LUT 横向采样,背光部分才有透光效果half N1DotL = dot(delta_N_with_normalMap.xyz, lightDir.xyz);N1DotL = N1DotL * 0.5 + 0.5;// return N1DotL;// 242424// jave.lin : _ScatterAdjustment1 控制的是 纵向 SSS 的整体强度,值越小,越不透光half2 scatterTexUV = half2(N1DotL, _ScatterAdjustment1);half3 sssCol = tex2D(_ScatteringLUT, scatterTexUV).rgb;return sssCol.rgbr;

GIF 效果


LUT 贴图的制作

可以程序生成也可以PS手动制作,这里介绍的是 PS 手动制作的方式

PS 中使用渐变工具可以快速的制作出来,下面是几个通道的样子




最终效果应用

上图:优化后的效果,下图:未优化


Shader - 不公开

PBR_GAT_CFDG_BK_SSS - 合理参考代码,并重构后的代码(但是部分代码可读性依然不高,因为骚操作太多)


References

  • 《CFDG》 的 SSS LUT 皮肤制作方法

Unity Shader - SSS皮肤相关推荐

  1. Unity Shader - Post Processing 15 - Height Fog (Plus) - 后效 高度雾 改进版 (Parallax)、模拟闪电在云层中SSS

    文章目录 环境 问题 Parallax 原理 GGB 效果 模拟闪电在云层中SSS 测试脚本 效果 GIF Project References 环境 Unity : 2018.2.11f1, 201 ...

  2. unity shader入门精要_Unity Shader入门及进阶路径

    推荐<unity shader入门精要> 加上配套的工程 candycat1992/Unity_Shaders_Book (https://github.com/candycat1992/ ...

  3. Unity Shader ASE——输出面板详情

    目录 一.基本配置 1.General 通用设置 2.Blend Mode 混合模式 3.Stencil Buffer 模板缓冲 4.Tessellation 镶嵌 5.Outline 轮廓 6.Bi ...

  4. Unity Shader - Planar Shadow - 平面阴影

    文章目录 整体运行效果 思路 Shader 问题 Z-Fighting,解决:按法线方向偏移一丢丢 绘制 Alpha 混合重叠,解决:使用 stencil buffer 来规避 为何出现这个问题 解决 ...

  5. Unity Shader PostProcessing - 11 - Depth Fog/Height Fog - 雾效/深度雾效/高度雾/深度+高度雾

    文章目录 观察生活中的雾 Scenario 1 - Pure Depth Fog - 纯深度雾 提取有用信息 Scenario 2 - Height Fog - 带高度的雾 提取有用信息 Scenar ...

  6. Unity Shader - Custom DirectionalLight ShadowMap 自定义方向光的ShadowMap

    文章目录 思路 实践 在方向光的位置,放一个正交相机 调整光源相机参数 将光源投影空间的正交视锥体画出来 投射阴影 接收阴影 改进 超出Shadow map的默认为光照 添加光照处理 添加PCF柔滑整 ...

  7. Unity Shader - Custom SSSM(Screen Space Shadow Map) 自定义屏幕空间阴影图

    文章目录 思路 实践 获取光源空间ShadowMap[A] 获取屏幕空间的深度图[B] 获取SSSM(Screen Space Shadow Map) 绘制一个全屏的Quad[C] 输出SSSM RT ...

  8. 【Unity Shader】Unity Chan的卡通材质

    写在前面 时隔两个月我终于来更新博客了,之前一直在学东西,做一些项目,感觉没什么可以分享的就一直没写.本来之前打算写云彩渲染或是Compute Shader的,觉得时间比较长所以打算先写个简单的. 今 ...

  9. Unity Shader - Metallic mode: Metallic Parameter 金属模式的参数

    目录:Unity Shader - 知识点目录(先占位,后续持续更新) 原文:Metallic mode: Metallic Parameter 版本:2019.1 Metallic mode: Me ...

最新文章

  1. 关于wxpy,使用Python玩转微信的问题
  2. C#实现的正余玄函数图象
  3. DM368开发 --IPNC 设置过程
  4. 修改web.config
  5. java chat_使用 Java 创建聊天客户端-1
  6. 关于数据库表的“记录”与“字段”
  7. layou split 属性
  8. uasset python_Unreal Python 结合 C++ 开发蓝图库插件
  9. css3层级穿透,css页面滑动穿透的两种解决办法
  10. Teamcity+SVN+VisualStudio在持续集成简明教程
  11. python watchdog_Python watchdog
  12. [转]HttpWatch工具简介及使用技巧
  13. Super Saiyan 寻找创业合伙人
  14. Bailian3253 集合的划分【递归】
  15. 将excel中的数据导入到oracle数据库中
  16. 【数字信号处理】基于matlab数字信号同步压缩变换【含Matlab源码 1534期】
  17. 计算机操作系统详细学习笔记(一):计算机操作系统概述
  18. Tapestry5之页面显示
  19. 【使用51单片机驱动1.54英寸墨水屏做一个简洁的贪吃蛇游戏】
  20. linux中不用命令安装flash,Linux下安装flash player的方法

热门文章

  1. tfrecord生成
  2. 数仓体系——最近七天内连续三天活跃用户数
  3. CF 379D NewYearLetter [dp+暴力]
  4. python+opencv的人脸识别+语音播报集成的模拟人脸打卡系统的编程思路
  5. nginx配置http和ws协议同时使用
  6. mysql 获取分区的最大值_MySQL分区表测试
  7. 【JavaScript周报】#574: Etsy从React迁移至Preact
  8. nom总结与实习经历
  9. python数据结构教程_GitHub - Frank-Jing/python_data_structures_and_algorithms: Python 中文数据结构和算法教程...
  10. 优雅演进:探索低代码与全栈的完美结合