洪流学堂,让你快人几步。你好,我是你的技术探路者郑洪智,你可以叫我大智。
每周三例行的洪流学堂Unity直播公开课这周也如期与大家见面啦!
这周一起探索的话题是:URP中如何写Shader?
下面我们一起来复习一下。
直播内容
URP中如何写Shader呢?
内容大概包含以下几个部分:
- SRP的基本Shader结构
- CG vs HLSL
- 从0编写URP Shader
- 旧管线升级URP Shader指南
URP是基于SRP的渲染管线,咱们直接讨论下SRP的Shader:
SRP的Shader和内置渲染管线的Shader一样,都是使用了Untiy的ShaderLab来编写,结构也相同。
Pass中的不同之处就是:以前如果你是用CG写Shader的话,现在最好换到HLSL啦。
URP也支持CG语言。如果你给Shader添加CGPROGRAM/ENDCGPROGRAM
块,Unity会自动include内置渲染管线的代码库,此时如果你再include SRP shader代码库,可能会有一些宏或者函数和内置渲染管线的代码库冲突。此外,使用CG语言编写无法支持SRP Batcher。
在语言语法层面呢,CG 和 HLSL是没什么差别的。
那为什么Unity要切换到HLSL呢?早期的Unity中的Shader是用Cg写的,但是后面都转到了HLSL。Cg已经很久不更新了,所以使用HLSL才是正道。
如果想要Shader和SRP Batcher兼容,需要将材质的所有属性定义在一个名为UnityPerMaterial的CBUFFER块中。
CBUFFER_START(UnityPerMaterial)
half4 _BaseColor;
CBUFFER_END
内置管线Shader升级到URP详细手册直达链接在这个地方:
https://edu.hongliu.cc/detail/i_5fc5f9a3e4b0231ba889e87a/1?from=p_5fbcc34de4b0231ba8887cea&type=6
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net