本文首发于“洪流学堂”微信公众号。
洪流学堂,让你学Unity快人几步。你好,我是你的技术探路者郑洪智,你可以叫我大智(vx: zhz11235)。
洪流学堂公众号回复节点
,获取ShaderGraph节点详解PDF文件(带目录)。
Shader一直是Unity开发者的一个难关,涉及到数学、图形学、shader语法等多个难题。不过,ShaderGraph来拯救你了!Unity2018的一个重磅功能是ShaderGraph,通过可视化界面拖拽就可以实现着色器的创建和编辑。
配置使用ShaderGraph
目前最新版本Unity(2019.3)中的Shader Graph正式版支持URP(原LWRP)和HDRP,自定义的pipeline需要自行实现一些节点。
在Unity 2018后,Unity采用了PackageManager来管理Unity的众多新功能,包括Shader shader包和Lightweight Render Pipeline包。
1、下载最新的Unity(建议2019.1及以上版本),建议通过UnityHub安装,下载地址是:
MAC:https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.dmg
Windows:https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.exe
2、安装Lightweight Render Pipeline和ShaderGraph包。
在新工程中使用ShaderGraph
如果是新建工程,在新建工程时选择Universal Project Template或者Hight-Definition RP模板,工程中会自动包含ShaderGraph及其依赖的功能包。
URP和Hight-Definition RP是Unity新加入的两种可编程渲染管线,目前我们不用过多了解,知道如何使用即可。主要区别是:
- URP适用于所有平台
- Hight-Definition RP适用于PC或游戏主机等计算性能好的平台,对画质要求很高的画选这个,目前基本不支持移动平台
在已有工程中使用ShaderGraph
1、在已有工程中使用ShaderGraph需要手动安装安装Render Pipeline和ShaderGraph相关的包。
有两种方式:
1)在菜单栏Window > Package Manager打开Packages窗口。需要安装Shadergraph包和Universal RP包(2019.3之前叫Lightweight RP)。
2)通过手动设置Unity工程下Packages/manifest.json文件
目前通过Package Manager只能下载最新版本的包,而通过manifest文件可以设置使用任意版本的包。如果有时候新版本的包和Unity版本不兼容的话,可以通过manifest文件回退到之前的旧版本。
【常见问题1】Package Manager界面左下角一直在Loading怎么办?
这是由于国内的网络原因,通常切换网络即可解决。比如使用宽带无法加载出来时,可以尝试切换到4G/5G手机热点,如果再不行可以尝试翻墙。
大智这边切换到联通4G热点是可以刷新出来的。
【常见问题2】已有工程切换到URP/HDRP后材质都变成洋红色怎么办?
在菜单栏Edit > Render Pipeline > Universal Render Pipeline > Upgrade ...
可自动更新工程中的材质。但是只能更新Unity自带的Shader,自定义Shader需要自己修改哦。
2、创建设置SRP(可编程渲染管线)
1)菜单栏Assets > Create > Rendering>Universal Pipeline Asset,会创建出来一个文件,这是渲染管线的配置文件。
2)在菜单栏 Edit > Project Settings > Graphics中设置刚才的SRP文件
经过这些设置,现在就可以开始使用ShaderGraph了!
创建ShaderGraph文件
通过菜单栏 Create > Shader > *** Graph 可以创建ShaderGraph文件,会在Project创建一个graph文件。
PBR Graph PBR图
Sub Graph 子图,用于创建一些可复用的节点
Unlit Graph 不受光照的图
ShaderGraph窗口
我们先创建一个PBRGraph来看一看。双击graph文件即可打开ShaderGraph窗口。
ShaderGraph的图是以节点和连线组成的,默认创建出来会有一个Master Node(主节点)。你可以通过把其他节点连接到Master Node来创造你想要的效果。
编辑节点的属性
如下图所示,你可以通过编辑默认的数值快速改变物体的表面属性。
添加节点
添加纹理和其他复杂的交互操作,只要右键点击并选择“Create Node”。
连接节点
通过拖拽对应的值即可创建连线。
创建输入变量
一个shader当然必不可少要有输入的变量了,这在ShaderGraph中也很简单。
使用输入变量
你可以给输入变量设置一个默认值,方便调试。
在Graph中使用这个变量也很简单,只需要将变量拖入图中,和其他节点创建连线即可。
自定义预览模型
ShaderGraph右下角有一个预览窗口,可以选择内置的5种和自定义的模型来更好的预览Shader的效果。
材质球使用Shader
Shader调好以后,当然最最终要应用到材质球上。材质球的Shader选择菜单中会多出一个graphs的类别,下面就是你创建的ShaderGraph对应的shader。
总结
本文讲了如何配置、创建、编辑、使用ShaderGraph。后面几天我将通过实例的方式讲解ShaderGraph如何实战应用。
洪流学堂公众号回复节点
,获取ShaderGraph节点详解PDF文件(带目录)。