Unity探路营

【直播回顾】URP中如何写Shader?

2020-12-04  本文已影响0人  洪智

洪流学堂,让你快人几步。你好,我是你的技术探路者郑洪智,你可以叫我大智。

每周三例行的洪流学堂Unity直播公开课这周也如期与大家见面啦!

这周一起探索的话题是: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

扩展阅读

【扩展学习】洪流学堂回复1202直播查看完整直播回放


我是大智,你的技术探路者,下次见!

别走!点赞收藏哦!

好,你可以走了。

上一篇下一篇

猜你喜欢

热点阅读