在本文中,我将了解 Shader Graph 是什么; 使用着色器图; Shader Graph的特点; 如何使用 Shader Graph 创建一个简单的着色器; 一些带有示例的有用节点; 以及在查看使用旧版本的 Shader Graph 创建的着色器时需要注意的一些事项。 有了这些信息,您应该准备好创建一些基本的 Shader Graph 节点效果!
我将为您提供一些额外的资源,您可以查看这些资源 - 这些资源可以帮助您创建和自定义您自己想要的视觉效果,而这些视觉效果在本文的范围内无法涵盖。
以下是您将学到的内容:
着色器及其重要性
我们可以使用着色器获得不同的效果
什么是着色器图?
使用 Shader Graph 需要什么?
使用着色器图
基本着色器图定义和术语
Shader Graph 窗口的七个组件
有用的内置着色器图功能
创建你的第一个着色器
如何使用流行节点(附示例)
纹理和色彩效果
边缘光效
Dissolve effect
用发射效果溶解
将它们组合在一起
新旧 Shader Graph 版本之间的差异
其他资源
在我进入 Shader Graph 之前,我们需要知道什么是着色器以及它们如何影响我们。
着色器是在 GPU 上运行的小程序,用于纹理映射、照明或着色对象。 屏幕上显示的所有内容(计算机程序或游戏,包括游戏机)在显示之前都会经过某种着色器。
对于大多数程序,这是在幕后自动内置的。 在 3D 建模中,通常在模型最终渲染之前将软件添加到模型中。 电影制片厂用它们来渲染电影的效果,游戏用它们来显示一切。
如果您使用 Unity,您甚至会在不知不觉中使用它们:显示的所有内容都有某种使用着色器的材质。
This image illustrates some of the different types of shaders available by default in Unity.
超过 20 万开发人员使用 LogRocket 来创造更好的数字体验 了解更多 →
现在你可能会问自己,如果 Unity 已经提供了可以使用的着色器,我们为什么还要关心着色器呢? 简单的答案是,提供的默认设置是平淡无奇的,并且不添加任何特殊的使用,例如水、全息、鬼影、发光或溶解效果,仅举几例。
我们可以通过更改设置来获得其中一些效果,例如 表面类型 ( 不透明 或 透明 )、指定 金属 或 镜面反射 、 平滑度 或添加 发射 。 问题在于它们都是静态的。 我们想要的是一些动态效果或自定义设置,我们可以使用它们来为我们的游戏或应用程序的外观添加一些润色。
让我们来看看一些不同的着色器效果。 这些只是可能的一小部分。 图片来自互联网图片搜索“Shader Graph Unity effects”:
来自流行的 YouTube 节目频道 :
From the Unity blog:
现在我们知道了着色器是什么,并看到了我们可以从着色器中产生的一些不同的可能效果,让我们看看如何创建这些着色器。
Shaders used to be created through code; over the years, different software companies have been adding tools that allow the creation of shaders through visual node-based systems. Unity is no different; they have given us Shader Graph.
Refer to Unity’s Shader Graph features for the highlights: “Shader Graph enables you to build shaders visually. Instead of writing code, you create and connect nodes in a graph framework. Shader Graph gives instant feedback that reflects your changes, and it’s simple enough for users who are new to shader creation.”
Shader Graph 是为艺术家设计的,但不是着色器程序员的程序员也可以使用它来轻松创建着色器。 嘿,并不是我们所有人都与拥有专门的着色器程序员/艺术家团队预算的 AAA 工作室合作。 此外,着色器可能需要大量复杂的数学和算法知识才能手动编码。
例如,在 Unity 中创建的新着色器的快照使用颜色纹理对模型进行基本照明。 这是 1685 行代码中的第 1571 到 1580 行:
Unity 记录 了使用 Shader Graph 的这些要求 :
不要错过 The Replay 来自 LogRocket 的精选时事通讯
了解 LogRocket 的 Galileo 如何消除噪音以主动解决应用程序中的问题
使用 React 的 useEffect 优化应用程序的性能
之间切换 在多个 Node 版本
了解如何 使用 AnimXYZ 为您的 React 应用程序制作动画
探索 Tauri ,一个用于构建二进制文件的新框架
比较 NestJS 与 Express.js
将 Shader Graph 与 Unity 2018.1 及更高版本中提供的任一脚本渲染管道 (SRP) 一起使用:
) 高清渲染管线 (HDRP
) 通用渲染管线 (URP
从 Unity 版本 2021.2 开始,您还可以将 Shader Graph 与 内置渲染管道 一起使用。
这意味着只要我们使用其中一个 SRP,我们就可以开箱即用地使用 Shader Graph。
尽管我们可以使用包管理器安装它并将其与内置渲染管道一起使用,但 Unity 继续声明, “建议将 Shader Graph 与可编写脚本的渲染管道一起使用。”
第一步是使用 URP 或 HDRP 模板在 Unity Hub 中创建一个新项目(或将其中一个 SRP 安装到现有项目中)。
使用 URP 或 HDRP 模板创建项目。
Once the scene loads, I add a capsule to my scene that I can use to display my effects with (feel free to use any 3D object that you want, to include your own model). I also create a material that I can apply my custom shader to and add it to my capsule.
现在我们有了一个非常基本的测试场景,让我们创建一个新的 Shader Graph。 右键单击 > 创建 > 着色器图 > 要使用的 SRP > 着色器类型。
就我而言,我将使用 URP > Lit Shader Graph 。
Shader Graph 菜单将始终包含 Blank Shader Graph (一个完全空白的 Shader Graph,没有选择目标,并且没有将任何块添加到 Master Stack)和 Sub Graph (一个空白的 Sub Graph 资产,一个可重复使用的图形,可以在其他图表)选项。
每个已安装的渲染管道都应该有一个包含模板堆栈的子菜单。 就我而言,我有 URP 和内置子菜单。 该模板创建了一个新的着色器图表,其中包含带有默认块和选定目标的主堆栈。 您以后可以随时更改 Shader Graph 窗口中的设置。
现在我们已经创建了一个 Shader Graph,让我们设置我们用于此着色器的材质。
有两种方法可以做到这一点:
在材质的 Inspector Window 中(所有 Shader Graphs 都在 Shader Graph 子菜单中)
将着色器拖放到材质上