概述
主要功能
- [ ](#shader development)着色器开发
- [ ](#debugging shaders and performance tuning)着色器调试与性能调优
- [ ](#managing effect data)效果数据管理
- [ ](#involving_artists in the shader creation)艺术家界面
- [ ](#custom component creation)自定义组件创建
- [ ](#collada opengl effects)COLLADA OpenGL 效果导出器和网格导入器
应用设计与理念
实时高性能着色器是所有新视觉效果的核心,并将继续成为未来精彩图形体验的基础。RenderMonkey IDE 的创建旨在在一个连贯的环境中填补着色器内容创作工具的空白——它对程序员来说灵活且强大,但对艺术家来说又熟悉且直观。随着 DirectX、OpenGL 和 OpenGL ES 高级着色语言的引入,实时着色器的复杂性增加了。图形硬件着色功能的快速发展导致实时图形项目所需的着色器内容呈爆炸式增长,从而催生了对强大实时着色器 IDE 的需求。RenderMonkey 环境不仅允许轻松地进行着色器原型设计和开发,还提供了一个机制,用于在单个环境中管理着色器和所有关联的视觉资源。
标准图形 API
RenderMonkey IDE 支持在任何支持标准图形 API 的硬件上进行着色器制作——最新发布的 RenderMonkey IDE 为 DirectX 9.1、OpenGL 2.0 和 OpenGL ES 2.0 提供了集成支持。
程序员与艺术家
RenderMonkey 的设计旨在满足 [ ](#shader development)程序员和 [ ](#involving_artists in the shader creation)艺术家的需求,使双方都能协作开发着色器效果。RenderMonkey 中存在独立的接口,供技术着色器开发者进行编程,以及供非技术艺术家进行纯粹的视觉修改。RenderMonkey 允许任何有兴趣创建着色器的人直接投入到着色器创建过程中。
该程序允许将效果的结构(包括着色器的主体和所有资源)以树状结构 [ ](#managing effect data)可视化。用户可以通过检查应用程序渲染窗口中的各个渲染通道,或通过 动态检查所有可渲染纹理的内容,来查看效果的 [ ](#managing effect data)渐进式构建。RenderMonkey 通过对着色器计算的中间结果进行交互式输出,实现了对着色器的快速调试。这在教学环境中尤其有用,因为可视化中间结果对于理解至关重要。RenderMonkey 已被多所大学选为在其图形课程中教授着色器技术。
该应用程序包含各种便捷功能,使程序员能够精细控制其开发环境。 提供了优化提示,以帮助分析着色器性能,同时艺术家和程序员都可以使用熟悉且直观的 GUI 小部件来交互式地编辑着色器参数。这些修改的视觉结果可在集成的渲染预览窗口中即时查看。
集成到现有生产流程中
RenderMonkey 使开发者和艺术家更容易采用着色器技术,它能够轻松集成到现有的工作流程中,并能够自定义所需组件以适应任何生产需求。使用 RenderMonkey 的工作室可以在项目早期快速制作着色器效果原型,从而更早地做出关键视觉效果决策,从而以对计划影响最小的方式提高任何产品的最终外观。
通过使用 RenderMonkey SDK,RenderMonkey 可以轻松定制并集成到任何开发者的常规工作流程中。该应用程序附带一套标准的插件示例,还包含一个插件向导,可以轻松创建自定义组件。SDK 为开发者提供了对整个运行时着色器数据数据库的完全访问权限。SDK 以标准的 C++ 编写,包含插件开发所需的所有必要组件。它还提供用于创建用户界面小部件的库,以便开发者能够保持应用程序的外观和感觉,而无需投入大量精力进行 UI 开发。
着色器开发
着色器编辑器

对于 RenderMonkey 支持的每种着色语言,都有一个关联的着色器编辑器,具有用户可自定义的语法高亮显示。用户可以通过着色器编辑器首选项自定义文本编辑设置,例如字体、关键字颜色和制表符插入/间距。
着色器编辑器为用户提供集成的编译错误报告——将错误映射到源代码中的相应行。DirectX 着色器编辑器还通过一套便捷的 优化提示来辅助着色器开发。
在 RenderMonkey 中使用引擎驱动的着色器参数
开发者必须在着色器中使用引擎参数,才能为任何实际应用编写基于着色器的效果。常用的引擎驱动参数是,例如,变换矩阵、时间、随机数等。RenderMonkey 提供了一系列预定义变量,允许在 RenderMonkey 中复制这种引擎特定的行为。为简化集成,预定义变量的名称可以自定义,以匹配引擎中使用的名称。支持近 80 种不同的引擎驱动参数,例如一套完整的变换矩阵(包括逆矩阵和转置矩阵)、鼠标参数、随机生成的变量、视口参数、相机参数、几何对象数据等。默认情况下,RenderMonkey 的语义与 Microsoft FX 文件格式 (0.8) 最新版本的变量注解相匹配。
使用便捷的 GUI 小部件编辑着色器参数

RenderMonkey 中的所有着色器参数都可以使用与参数类型相关的直观 GUI 小部件进行编辑。用户可以使用颜色轮小部件编辑颜色,使用便捷的数字滑块编辑标量和向量变量,在预览与这些纹理阶段关联的纹理表面时修改纹理/采样器状态,等等。
用于 DirectX 效果创建的高级功能集
RenderMonkey 版本 1.71 支持最新的 DirectX 9.1 版本,并支持所有可用的着色器模型。开发者可以创建使用多渲染目标支持的效果,从而允许使用各种有趣的算法,例如延迟着色。RenderMonkey 的 DirectX 效果中的每个绘制调用一次最多可以输出到 4 个单独的渲染目标(请注意,为此功能必须使用着色器模型 2.0 或更高版本)。
此外,开发者可以为渲染设置任何后备缓冲和深度/模板缓冲格式,为渲染的效果指定多重采样类型,并控制清除颜色和默认相机设置。
着色器程序员还可以使用 HLSL include 文件进行 DirectX 着色器开发。RenderMonkey 附带一套有用的库函数,开发者可以在其着色器开发中使用(位于 UserData/HLSLIncludes 目录下的 HLSL include 文件“RmInclude.h”和“RmMath.h”)。开发者可以以类似于 Visual Studio 项目 include 路径的样式设置 include 路径。
RenderMonkey 附带一个 .FX 文件格式导出器。它支持最新版本的 Microsoft 标准 .FX 注解 (0.8)。导出器最大限度地减少了命名空间冲突,以便于效果的编译和集成。RenderMonkey 还为每个 RenderMonkey 变量和关联的参数输出适当的 UI 注解(例如,标量的最小/最大钳位边界等),从而可以更好地与随最新 Microsoft DirectX 9.1 SDK for XNA 预览管道一起提供的 Maya 预览插件集成。
生成新的查找表和几何对象以满足您的需求

RenderMonkey IDE 提供用于程序化纹理生成的标准插件。程序员和艺术家可以在 HLSL 中指定函数以程序化地生成 2D 纹理、立方体贴图和体积纹理。新生成的纹理可以通过 纹理预览机制动态预览,并且/或者保存到文件以供将来使用。这使得任何效果的纹理查找表的创建都非常容易。RenderMonkey 还允许用户随时将任何可渲染纹理的内容保存到文件。因此,预览窗口中渲染的任何内容都可以保存为查找纹理或用于任何其他附加目的(例如,着色器调试)。
同样,RenderMonkey 为几何对象生成提供了几个插件。用户可以使用可修改的参数生成任何基本几何形状。生成的对象也可以保存(采用 .X 文件格式)以供将来使用。RenderMonkey 允许为任何模型自动生成边缘四边形。这可用于阴影体积生成或毛发叶片。
要生成程序化纹理或几何模型,用户从可用生成器插件列表中选择,并为插件指定参数。可以通过每个节点的“另存为…”菜单将数据保存到纹理或模型文件。如果用户不保存程序化生成的数据,其参数(例如,纹理着色器或几何参数)将与节点一起保存,并且在工作区加载时将重新生成数据。程序化几何体和纹理数据可用于 DirectX、OpenGL 和 OpenGL ES 工作区。
着色器调试与性能调优
带有完整错误报告的交互式预览

DirectX、OpenGL 和 OpenGL ES 预览窗口会立即响应数据库中对渲染效果的任何更改。这意味着编辑任何着色器参数都会立即修改预览窗口中的渲染,从而非常容易地迭代效果的外观和感觉。
预览窗口还为渲染当前效果所需的任何无效或缺失资源提供自动错误报告。此类错误的示例如下:渲染了一个未正确绑定到 RenderMonkey 变量节点的常量;尝试使用无效的流映射、缺失的几何对象或纹理、无效的渲染目标进行渲染。
对于这些错误,会在输出窗口中显示错误消息,并在预览窗口中叠加显示。左侧的示例图像显示了一个错误,因为其中一个绘制调用缺少一个几何对象。
RenderMonkey 还会将可渲染纹理初始化为绿色,以通知开发者它们是否在使用前被正确初始化,因此可能包含垃圾信息。

在 RenderMonkey 中有许多不同的方法可以调试着色器算法。最简单的方法是将所需的量输出为预览窗口中的结果颜色(例如,将视图向量作为颜色)。RenderMonkey 的着色器开发和预览管道的交互性使其成为一种非常简单直观的调试技术。
对于多通道效果,用户可以通过在预览窗口中按“p”来选择通道构建预览模式(此功能适用于 DirectX、OpenGL 和 OpenGL ES 预览管道)。每个单独的通道都会渲染到一个小的预览窗口视口中。先前通道的结果将根据需要进行合成。
如果一个绘制调用渲染到一个渲染目标或多个渲染目标,则每个渲染目标的内容将在单独的视口中显示。此技术在创建多通道效果期间很有用,在教学环境中也有助于向学生解释算法。它还有助于快速调试,因为很容易看出单个绘制调用是否输出了错误的结果或是否被不正确地合成。

着色器开发者在 RenderMonkey 中创建基于着色器的效果时,还可以通过不同的方式预览其离屏缓冲区的内容。通过简单地右键单击可渲染纹理节点并查看该纹理的缩略图,就可以预览活动效果所使用的任何可渲染纹理的内容。可以展开缩略图以查看整个纹理,并显示所有相关的纹理信息(大小/格式),还有一个单独的缩略图用于预览该纹理 Alpha 通道的内容。用户还可以选择使用该可渲染纹理节点的“另存为”上下文菜单选项将可渲染纹理的内容保存到文件中。
为了预览可渲染纹理的内容,用户可以使用 [ ](#know_what_the_algorithm_is_actually)通道预览选项(如上所述)。另一种选项是通过在预览窗口中按“r”来启用。此预览选项允许用户动态查看最终效果中使用的每个可渲染纹理的内容。
内容将以它们在效果中最终绘制调用执行后的状态显示。这样,当用户在预览窗口中围绕相机旋转时,就可以非常轻松地查看例如阴影贴图的内容。

在任何着色器开发过程中,总会遇到想要 *优化着色器性能* 的时候。
RenderMonkey IDE 在多个方面为开发者提供帮助。
在 OpenGL、OpenGL ES 和 DirectX 预览窗口进行渲染时,开发者可以访问每个帧渲染的帧统计信息。在预览窗口中按“s”,将显示当前活动效果的帧速率以及所有包含在渲染中的绘制调用的附加统计信息(图元数量和顶点数量)。

创建 DirectX HLSL 着色器的开发者还可以查看已编译着色器的反汇编。反汇编包括集成的 ALU 和纹理操作指令计数器。这可以用于精调高级算法以生成最佳代码。
管理效果数据
RenderMonkey 将封装效果所需的所有设置和数据存储在可扩展的 XML 工作区文件中。用户可以通过对效果数据库的便捷视图(称为工作区树视图)来操作加载到 RenderMonkey 中的效果数据。工作区编辑器可用于访问工作区中的所有元素或节点,以便编辑或查看其内容。
为了简化 RenderMonkey 中纹理和几何对象的创建,该应用程序将在运行时扫描用户定义的默认纹理和模型存储库目录,查找所有支持的纹理和几何对象格式,并编译一个列表以快速添加新的纹理/模型节点。默认数据存储库的位置可以通过应用程序首选项对话框由用户自定义。
![]()
RenderMonkey 广泛使用信息性工具提示,使得查看节点内容如同将鼠标光标移到节点上一样简单。工具提示中显示了节点特定的数据,例如几何对象的图元和顶点数量;可渲染纹理的尺寸和表面格式;或者设置的可渲染状态及其在渲染状态块中的值。
RenderMonkey 会记住窗口放置和大小的用户偏好设置,并将该信息按工作区存储。这与改进的停靠窗口支持一起,允许用户精确地根据自己的喜好自定义 IDE。用户还可以从主应用程序和选定的插件的许多应用程序设置中进行选择(例如,文本编辑器可以自定义为允许用户指定的制表符、字体等)。应用程序将记住上次编辑特定节点类型的插件的用户偏好设置。这样,如果应用程序有多个可以编辑相同节点类型的插件,用户就无需重复选择非默认插件编辑器。应用程序将记住设置,并在用户下次编辑节点时自动选择合适的插件。
为了方便开发者之间共享着色器,RenderMonkey IDE 现在提供了包导入/导出功能。任何效果工作区都可以导出为一个 zip 文件,其中包含渲染该效果所需的所有纹理和模型。这些打包的工作区可以轻松地导入回 RenderMonkey,而无需进行任何后续修改来修复几何体和纹理路径。
艺术家界面
让艺术家参与着色器创建过程

实时创建基于着色器的效果不应仅是程序员的领域。艺术家通常从初始原型阶段就深度参与该过程。RenderMonkey 提供多个以艺术家为中心的界面和工具,以帮助艺术家协作进行着色器创建过程。
RenderMonkey 中的艺术家界面
着色器开发人员可以将着色器效果工作区中的某些变量标记为“艺术家可编辑”。负责该效果的艺术家随后可以通过“艺术”选项卡筛选其对该效果的视图。这将限制艺术家对工作区的视图,只显示这些变量。然后,艺术家可以使用标准的 GUI 部件编辑这些变量。如有必要,开发人员还可以使用 SDK 自定义这些部件,以包含更接近艺术家在其他工具中使用的接口。RenderMonkey 还包含一个艺术家界面插件——该插件将所有艺术家可编辑的参数都包含在一个界面中。该插件的外观应该对于使用 Maya 和 3DStudioMax 等标准 DCC 应用程序的艺术家来说是熟悉的。艺术家可以在单个页面界面中使用颜色轮和标量滑块。与所有编辑器一样,所有更改都会立即反映在渲染窗口中。易于纹理/模型资源管理

在 RenderMonkey 中使用纹理非常简单方便。使用默认纹理存储库目录和快速访问菜单(此处所述 [ ](#managing effect data))可以直观地创建新的纹理节点。用户创建纹理节点后,要查看存储在该节点中的纹理图像,只需右键单击该节点并查看显示的纹理表面图像缩略图即可。
RenderMonkey 提供了一个选项,可以将纹理显示为全尺寸图像,具有较大的缩略图,并附带所有相关的纹理信息(尺寸/格式)以及存储在该纹理中的 alpha 通道的内容。
如果用户单击纹理的大缩略图,RenderMonkey 将会启动该纹理图像的关联编辑器应用程序。用户可以指定他们首选的应用程序(例如 Photoshop),该应用程序将在用户单击其缩略图编辑纹理时使用。编辑几何对象也存在类似的机制。
对于使用外部编辑器进行模型和纹理编辑的用户,RenderMonkey 支持在这些文件更改时自动重新加载它们。用户可以选择打开自动更新纹理和模型,然后 RenderMonkey 将在相关文件在磁盘上更改时自动重新加载纹理并重建几何对象的数据。或者,用户可以在预览窗口中通过按“t”或“m”手动执行此操作。这将导致 RenderMonkey 从文件中重新加载所有资源,并为效果重建所有运行时资源。
支持的几何和纹理格式
- 通过 DDS 导入支持浮点纹理表面格式
- 支持的标准纹理文件格式:BMP、JPEG、TGA、GIF、PNG、NMF(ATI 法线贴图)
- 几何文件支持:3DS、OBJ、X、NMF
自定义组件创建
RenderMonkey 附带了一个插件 SDK,允许开发人员扩展此强大 IDE 的现有功能以满足其需求。有关更多信息,请参阅 SDK。
COLLADA OpenGL 效果导出器和网格导入器
现在可以在 RenderMonkey 中以 COLLADA 1.4.1 格式导出 OpenGL 效果。导出器使用 COLLADA 1.4.1 的 profile_GLSL 输出几何、着色器和纹理资源。可以使用我们在下载页面上提供的 COLLADA OpenGL 效果查看器查看 COLLADA 输出。这是一个基于 Windows 的 OpenSceneGraph 2.2 二进制插件。下载中还包含该查看器的开源代码以及如何构建它的说明。
RenderMonkey 还提供了一个新的几何导入器,可以从 COLLADA 1.4.1 文档加载三角形网格。这是加载 COLLADA 几何图形和为内容管道原型化 COLLADA 效果的理想方法。
有关 COLLADA 的更多信息,请访问