着色器设计器

本文档介绍如何使用 Visual Studio 着色器设计器来创建、修改和导出名为“着色器”的自定义视觉效果。

即使不了解高级着色器语言 (HLSL) 编程,也可以使用着色器设计器来创建游戏或应用的自定义视觉效果。 若要在“着色器设计器”中创建着色器,只需将其作为图形进行布局。 即添加到表示数据和操作的设计图面节点,然后在二者之间建立连接来定义操作处理数据的方式。 在每个操作节点处,提供了到该点的效果预览,使你能够对其结果进行可视化。 数据通过节点流向表示着色器输出的最后一个节点。

支持的格式

着色器设计器支持以下着色器格式:

格式名称 文件扩展名 支持的操作(查看、编辑、导出)
有向图着色器语言 .dgsl 查看、编辑
HLSL 着色器(源代码) .hlsl 导出
HLSL 着色器(字节码) .cso 导出
C++ 标头(HLSL 字节码数组) .h 导出

入门

本节描述如何将 DGSL 着色器添加到 Visual Studio C++ 项目中,并提供可帮助你入门的基本信息。

注意

图像项(例如着色器图形)的自动生成集成仅支持 C++ 项目。

将 DGSL 着色器添加到您的项目中

  1. 确保你已安装使用图形所需的必备 Visual Studio 组件。 组件称为图像和三维模型编辑器

    若要安装它,通过从菜单栏中选择“工具”>“获取工具和功能”打开 Visual Studio 安装程序,然后选择“单个组件”选项卡。选择“游戏和图形”类别下的“图像和三维模型编辑器”组件,然后选择“修改”。

    Image and 3D model editors component

  2. 在“解决方案资源管理器”中,打开要向其添加着色器的 C++ 项目的快捷菜单,然后选择“添加”>“新项”

  3. 在“添加新项”对话框中的“已安装”下,选择“图形”,然后选择“视觉着色器图(.dgsl)”

    注意

    如果没有看到“添加新项”对话框中的“图形”类别,且你已安装“图像和三维模型编辑器”组件,则图形项不支持你的项目类型。

  4. 指定着色器文件的“名称”和需要的创建“位置”

  5. 选择“添加”按钮。

默认着色器

每次创建 DGSL 着色器时,它最初为最小着色器,仅具有连接到“最终颜色”节点的一个“点颜色”节点。 尽管此着色器完整且可工作,但没有多少用。 因此,创建有效着色器的第一步通常是删除“点颜色”节点,或将其从“最终颜色”节点断开连接以为其他节点留出空间。

使用着色器设计器

以下各节描述了如何将着色器设计器与自定义着色器一起使用。

着色器设计器工具栏

着色器设计器工具栏包含有助于使用 DGSL 着色器图的命令。

影响着色器设计器状态的命令位于主 Visual Studio 窗口中的“着色器设计器模式”工具栏上。 设计工具和命令均位于着色器设计器设计图面上的“着色器设计器”工具栏上。

以下是“着色器设计器模式”工具栏:

The Shader Designer modal toolbar.

下表介绍了“着色器设计器模式”工具栏上的项,按其从左至右的显示顺序列出:

工具栏项 说明
Select 启用关系图中节点与边缘的交互。 在此模式下,可以选择节点并移动或删除它们,也可以建立边缘或中断它们。
平移 相对于窗口框架移动着色器图。 若要进行平移,请选择设计图面上的一个点,然后将其四处移动。

在“选择”模式下,可以按住 Ctrl 来暂时激活“平移”模式
缩放 相对于窗口框架显示更多或更少的着色器图详细信息。 在“缩放”模式下,选择设计图面上的一个点,然后将其向右或向下移动可放大,向左或向上移动可缩小。

在“选择”模式下,可以按住 Ctrl,使用鼠标滚轮来缩小或放大
缩放到合适大小 在窗口框架中显示完整的着色器图。
实时呈现模式 启用实时呈现时,即使没有执行用户操作,Visual Studio 也将重绘设计图面。 此模式用于处理随时间变化的着色器。
用球体预览 启用后,球体的模型将用于预览着色器。 一次只能启用一个预览形状。
用立方体预览 启用后,立方体的模型将用于预览着色器。 一次只能启用一个预览形状。
用圆柱体预览 启用后,圆柱体的模型将用于预览着色器。 一次只能启用一个预览形状。
用圆锥体预览 启用后,圆锥体的模型将用于预览着色器。 一次只能启用一个预览形状。
用茶壶体预览 启用后,茶壶体的模型将用于预览着色器。 一次只能启用一个预览形状。
用平面预览 启用后,平面的模型将用于预览着色器。 一次只能启用一个预览形状。
工具箱 交替显示或隐藏“工具箱”
属性 交替显示或隐藏“属性”窗口。
高级 包含高级命令和选项。

导出:允许以多种格式导出着色器。

导出为:将着色器导出为 HLSL 源代码或已编译的着色器字节码。 有关如何导出着色器的详细信息,请参阅如何:导出着色器

图形引擎:允许选择用于显示设计图面的呈现器。

使用 D3D11 呈现:使用 Direct3D 11 呈现着色器设计器设计图面。

使用 D3D11WARP 呈现:使用 Direct3D 11 Windows 高级光栅化平台 (WARP) 呈现着色器设计器设计图面。

查看:允许选择有关着色器设计器的其他信息。

帧速率:启用后,会在设计图面的右上角显示当前帧速率。 帧速率为每秒绘制的帧数。 在启用“实时呈现模式”选项时,此选项才有用。

提示

可以选择“高级”按钮再次运行上一个命令。

使用节点和连接

使用“选择”模式来添加、删除、重新定位、连接和配置节点。 以下介绍了如何执行这些基本操作:

在“选择”模式下执行基本操作

  • 下面介绍如何操作:

    • 若要将节点添加到图中,请在“工具箱”中将其选中,然后移动到设计图面。

    • 若要从图中删除节点,请将其选中,然后按 Delete

    • 若要重新定位节点,将其选中,然后移动到新位置。

    • 若要连接两个节点,请将一个节点的输出终端移动到另一节点的输入终端。 仅可连接具有兼容类型的终端。 终端之间的线显示该连接。

    • 若要删除连接,请在任一连接的终端的快捷菜单上,选择“断开链接”

    • 若要配置节点的属性,请选择该节点,然后在“属性”窗口中,为属性指定新值。

预览着色器

为了帮助了解着色器在应用中的显示方式,可以配置效果的预览方式。 为了达到近似应用中的效果,可以选择要呈现的多个形状之一、配置纹理和其他材料参数、启用基于时间的动画效果,并从不同的角度检查预览。

形状

着色器设计器包括六个形状 - 球体、立方体、圆柱体、圆锥体、茶壶体和平面,可使用这些形状预览着色器。 视着色器而定,某些形状可能会提供更好的预览效果。

若要选择预览形状,在“着色器设计器模式”工具栏上,选择所需的形状

纹理和材料参数

许多着色器依赖于纹理和材料属性,为应用中的每种对象生成唯一外观。 若要查看着色器在应用中的外观,可以设置用于呈现预览的纹理和材料属性,以匹配在应用中可能采用的纹理和参数。

将不同的纹理绑定到一个纹理寄存器中,或修改其他材料参数:

  1. 在“选择”模式下,选择设计图面的空白区域。 这将使“属性”窗口显示全局着色器属性。

  2. 在“属性”窗口中,为要更改的纹理和参数属性指定新值。

下表显示可以修改的着色器参数:

参数 属性
纹理 1 - 纹理 8 访问:如果允许从模型编辑器设置属性,则为“公共”;否则为“私有”

文件名:与此纹理寄存器关联的纹理文件的完整路径。
材料环境 访问:如果允许从模型编辑器设置属性,则为“公共”;否则为“私有”

:间接(或环境)光照引起的当前像素的漫射颜色。
材料漫射 访问:如果允许从模型编辑器设置属性,则为“公共”;否则为“私有”

值:一种颜色,描述当前像素如何漫射直接光照。
材料放射 访问:如果允许从模型编辑器设置属性,则为“公共”;否则为“私有”

:由自发光照引起的当前像素的颜色量。
材料反射 访问:如果允许从模型编辑器设置属性,则为“公共”;否则为“私有”

:一种颜色,描述当前像素如何反射直接光照。
材料光泽度 访问:如果允许从模型编辑器设置属性,则为“公共”;否则为“私有”

:用于定义当前像素的反射高光的强度的指数。

基于时间的效果

某些着色器具有基于时间的组件,可对效果进行动画处理。 若要显示操作中的效果,必须每秒更新几次预览。 默认情况下,只在更改着色器时更新预览;若要更改此行为,以实现查看基于时间的效果,则必须启用实时呈现。

若要启动实时呈现,在着色器设计器工具栏上,选择“实时呈现”

检查效果

许多着色器会受视角或定向光照等变量的影响。 若要检查这些变量更改时效果会如何响应,可以自由地旋转预览形状,并观察着色器的表现。

若要旋转形状,按住 Alt 键,然后在设计图面上选择任意点,并移动它

导出着色器

在应用中使用着色器之前,必须将其导出为 DirectX 理解的格式。

可以将着色器导出为 HLSL 源代码或已编译的着色器字节码。 HLSL 源代码导出到文件扩展名为 .hlsl 的文本文件中。 可将着色器字节码导出到文件扩展名为 .cso 的原始二进制文件,或者导出到将着色器字节码编码为数组的 C++ 标头 (.h) 文件

有关如何导出着色器的详细信息,请参阅如何:导出着色器

键盘快捷键

命令 键盘快捷键
切换到“选择”模式 Ctrl+G,Ctrl+Q

S
切换到“缩放”模式 Ctrl+G,Ctrl+Z

Z
切换到“平移”模式 Ctrl+G,Ctrl+P

K
全选 Ctrl+A
删除当前选定内容 删除
取消当前选择 Escape (Esc)
放大 Ctrl+向前滚动鼠标滚轮

加号 (+)
缩小 Ctrl+向后滚动鼠标滚轮

减号 (-)
向上平移设计图面 向后滚动鼠标滚轮

PgDn
向下平移设计图面 向前滚动鼠标滚轮

PgUp
向左平移设计图面 Shift+向后滚动鼠标滚轮

向左滚动鼠标滚轮

Shift+PgDn
向右平移设计图面 Shift+向前滚动鼠标滚轮

向右滚动鼠标滚轮

Shift+PgUp
将键盘焦点移到另一节点 箭头键
选择具有键盘焦点的节点(将该节点添加到选择组中) Shift+空格键
切换选择具有键盘焦点的节点 Ctrl+空格键
切换当前所选内容(如果未选中任何节点,则选择具有键盘焦点的节点) 空格键
向上移动当前选定内容 Shift+向上键
向下移动当前选定内容 Shift+向下键
向左移动当前选定项 Shift+向左键
向右移动当前选定内容 Shift+向右键 。
Title 说明
处理游戏和应用的三维资产 概述了可用来处理纹理和图像、三维模型和着色器效果的 Visual Studio 工具。
图像编辑器 介绍如何使用 Visual Studio 图像编辑器处理纹理和图像。
模型编辑器 描述如何使用 Visual Studio 模型编辑器处理三维模型。