Unity ShaderGraph - 没有 Render State ?WTF

141 篇文章 35 订阅


环境

Unity : 2019.4.30f1
URP : 7.7.1
ShaderGraph : 7.7.1


这里说明一下,低版本的 shader graph 没有设置,高版本我使用 11.0.0 没有,到时可以通过高版本的 Graph Inspector面板中通过设置:SurfaceType, AlphaClip, Two Sided 来影响生成的 Opaque/Transparent, Cull 类型,其他的Render State 你还是需要自己来扩展,参考:Unity ShaderGraph - 给低版本的 ShaderGraph 添加 Render State (Pass Setting) 的功能 - 2021/11/4 在低版本的 shader graph 扩展 Render State


因为换了 URP 管线,有部分以前的特效 shader 是离职的美术同学自己用 shader forge 来连连看实现的


那个节点名字、还有用法,有点惨不忍睹,这就是不了解 程序基础的 美术同学编辑的 shader forge 的普遍情况

网上看到过一些 TA ,从 美术 转 程序 的,有些是 建模 转 渲染 TA,这个是真的厉害

还有一些是 特效 转 渲染 TA,也同样是很厉害,甚至有些 美术同学连 PBR,还有 OpenGL 教程都自己去摸了一遍,这个我也是佩服的五体投地,太厉害了!


原本是像预研看看 shader graph 的功能,来替代部分手写 或是 旧的 shader forge 导出的 shader

这样,我可以教会 负责制作特效的美术同学如何 shader graph 的节点

这样很多一些效果,他们都可以自己出实现,只不过 特效同学制作好的 shader graph 连连看

需要去 review 一下,看看 shader graph 有无浪费性能的地方,或是布局不合理的地方,都可以优化

这样,结构其他同学处理,你就可以有更多的时间去做其他的事了


问题

OK,不扯皮,如题,今天我就是打算用 shader graph 来替换掉以前特效同学用 shader forge 实现的特效 shader

但是啊,刚刚开始就出师不利啊,因为我发现:ShaderGraph 竟然没有:Render State,(或是叫:Pass Setting - 译为 Pass 的设置)

就是没有地方设置:

  • ZWrite
  • ZTest
  • Blend
  • ColorMask
  • ZClip
  • Stencil

我是真的醉了!简直了!这些都是制作效果中需要调整的基础配置,这都不提供调整,真的是搞毛线了,真的很不应该,我也无法理解!

然后发现 unity 论坛上也是有人问同样的问题,同样被喷得不行了,当然我这里使用的是 Unity 2019.4.30f1 版本的,shader graph 是 7.7.1 的

相关帖子:

不知道最新版本的 unity + 最新的 shader graph 会不会改善,这里占个位,后续我会用比较新的版本来验证试下
OK,下午实验了一下,我真的是无语:

如下图,在 Unity 2021.1.21f1,Shader Graph 11.0.0 也没有,其实我在 13.0 的 Shader Graph (2021/11/1 今天发现的最新版本,也是没有 zwrite 的设置)也没发现有
在这里插入图片描述

此时我只能这个表情了:

在这里插入图片描述

然后再这个表情:
在这里插入图片描述


搬运吐槽

我就不一一搬运这些吐槽内容,只不过偶尔发现有类似的吐槽,看着说的比较中肯的,我都会放上来
在这里插入图片描述

参考:URP docs on writing shaders?

so, I think it real waste the time! To Learn it!

所以简单了解一下,一些普通的特效够用的给 美术去编辑即可,复杂的你就不要想了,妥妥的自己撸 shader 吧


解决方法

  • 那就是不使用 shader graph,自己手撸 *.shader
  • 或是曲线救国法:
    • shader graph 连连看 整好后
    • 在 Project 选中 Shader Graph 资源
    • 在 Inspector 面板点击:Compile and show code
    • 然后复制代码
    • 新建一个 *.shader 资源
    • 然后将复制的代码都粘贴带新的 *.shader
    • 你就可以愉快的在 *.shader 修改 Render State(Pass Setting) 了
  • Unity ShaderGraph - 给低版本的 ShaderGraph 添加 Render State (Pass Setting) 的功能 - 2021/11/4 在低版本的 shader graph 扩展 Render State
  • Shader Graph and UI Mask - 2021/11/5 的今天发现 URP 下 UGUI 有个 BUG,于是与搜索了 URP UGUI Mask,谁知道找到了一个也是我上面曲线救国的方法的视频演示,但是他里面包含了处理 shader graph 因为没的设置 stencil 而不能应该到 ugui mask 组件的功能
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值