• Unity Shader Graph 节点入门


    在本文中,我将了解 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,让我们设置我们用于此着色器的材质。

    有两种方法可以做到这一点:

    1. 在材质的 Inspector Window 中(所有 Shader Graphs 都在 Shader Graph 子菜单中)  

    2. 将着色器拖放到材质上  

    基本着色器图定义和术语

    <
  • 相关阅读:
    网络安全从业人员能力图谱
    F2O模式是旁氏模型吗?一文详解其模型的经济学原理
    JavaScript系列之Promise的resolve、reject、then、catch
    前端架构的艺术:解决问题、优化体验和提升效率
    协程概述讲解
    05 依赖倒置原则
    java Internal error in the mapping processor java.lang.NullPointerException解决方案
    一个基本的BERT模型框架
    引迈-JNPF低代码项目技术栈介绍
    log日志异常堆栈打印的正确姿势
  • 原文地址:https://blog.csdn.net/weixin_47967031/article/details/127122297