在本文中,我将了解 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 行:
使用 Shader Graph 需要什么?
Unity 记录 了使用 Shader Graph 的这些要求 :
来自 LogRocket 的更多精彩文章:
-
不要错过 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.
Using Shader Graph
现在我们有了一个非常基本的测试场景,让我们创建一个新的 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 子菜单中)
-
将着色器拖放到材质上