本文转自Unity Connect
Unity的技术经理Ciro Continisio在Connect上分享创作模仿任天堂游戏《塞尔达传说:旷野之息》角色风格的着色器,受到不少用户的关注,本文将在分享制作该着色器的方法。
说明事项:
- 该着色器使用Shader Graph着色器视图制作。
- 使用了全新的轻量级渲染管线LWRP。
- 由于目前LWRP和ShaderGraph着色器视图仍处于早期阶段,各自存在一些限制,本文将讲解如何使用技巧来解决这些限制问题。
- 受客户端所限制,为了方便大家更好阅读理解,本文中着色器完整视图图片提供了下载,请在文末获得下载地址。
目标
我打算实现二个层级的着色器,它带有强光和阴影。我要以二种方法支持镜面光照:头发使用简单的颜色面片实现,而皮肤要通过画笔描边来定义。
你可以在下图看到二种方法的不同,塞尔达的衣服呈现了特有的画笔描边效果,而她的头发上的高光只是明亮颜色的硬块。

希望实现的着色示例效果
我还想实现面向太阳时出现的边缘光照效果,以及当光线在特定角度时出现的几乎全白的边缘,请注意图中塞尔达的耳朵、手指和右臂。
最后,我想支持高光、法线和发射贴图。
视图流程
下图是视图流程的概述,所有重要部分都根据功能用方块突出显示。

左侧的TangentToWorld节点不是自定义节点,而是一个SubGraph。因为当时Transform节点存在bug,所以

本文介绍了如何使用Unity的Shader Graph和轻量级渲染管线LWRP,复现《塞尔达传说:旷野之息》角色的着色效果。内容涵盖着色器的创建过程,包括法线映射、镜面高光、边缘光照和画笔描边效果。此外,还讨论了在Shader Graph和LWRP早期阶段遇到的问题及解决方案。
1万+

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



