定制的图像滤波器的制造方法

文档序号:6534603阅读:159来源:国知局
定制的图像滤波器的制造方法
【专利摘要】交互式开发环境使用户能够通过用户界面创建定制的图像滤波器,该定制的图像滤波器向开发者提供创建表示生成定制的视觉效果的数学运算和值的有向无环图的能力。在开发定制的图像滤波器期间,视觉着色器设计器引擎可以按规定次序执行与每一个节点相关联的运算和值并且在每一个节点的渲染查看区域中显示渲染的结果。以此方式,开发者能够快速可视化由图像滤波器实时产生的视觉效果。
【专利说明】定制的图像滤波窃
[0001] 背景
[0002] 计算机图形方面的进步产生了复杂的软件,以使得计算机生成的图像尽可能地看 上去逼真。具体地,在图形系统中通常使用着色器以生成用户设计的图形效果。着色器是 定义要在几何对象上执行以产生期望的图形效果的一组操作的程序或代码。像素着色器是 用于为几何对象的每一表面上的每一像素产生颜色的一种类型的着色器。像素着色器可用 于在图像中渲染诸如雾、漫射、动态模糊、反射、纹理化或对象上的深度等效果。
[0003]着色器执行复杂操作,且可包含在图形处理单元(GPU)上并行运行可能数百个执 行线程的数千条指令。因此,着色器的开发可能是令人畏缩的任务。具体地,测试着色器是 成问题的,因为开发者可能不能访问GPU的各个硬件组件的内部寄存器和数据,而在着色 器代码中分析错误可能需要这些寄存器和数据。诸如在着色器代码中嵌入打印语句的经典 调试技术在着色器涉及大量数据并在多个并行线程中执行时可能是不实际的。因此,着色 器的复杂性为开发这样的程序带来了障碍。
[0004]图像滤波器利用像素着色器来在图像上生成特殊视觉效果。例如,生成模糊的图 像滤波器对一组像素应用高斯变换以减少图像细节,从而产生漫射图像。棕黑色图像滤波 器将一组像素变换成亮或暗棕色调。波纹图像滤波器用水平或垂直波或波纹来替换一组像 素。
[0005] 图像滤波器可以是以规定方式操作的预定义函数,这在开发者需要快速开发图像 时是有用的。预定义图像滤波器可能不向开发者提供创建独特视觉效果的能力,而是留给 开发者创建他们自己的定制的图像滤波器的替代方案。定制的图像滤波器经常用高级编程 语言来编写并且被转换成图形子系统所支持的可执行指令。定制的图像滤波器然后可作为 插件或作为扩展被结合到图像编辑器中。然而,以此方式创建这一定制的图像滤波器要求 开发者具备编程技能和知识。
[0006] 概述
[0007] 提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的概念选 择。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要 求保护主题的范围。
[0008]着色器是对图形数据执行特定数学变换的专用程序。像素着色器对图像的每一像 素进行操作,并应用产生像素颜色的变换。像素着色器可添加变换来接近木材、大理石或其 它自然素材的外观和/或接近光源在物体上的效果。
[0009] 提供了一种使开发者能够创建表示像素着色器的有向无环图的交互式开发环境。 有向无环图包含多个节点和边,其中每一节点包含对该节点的输入执行操作或生成值的代 码片段。交互式开发环境包含视觉着色器设计器引擎,该引擎以规定次序执行每一个节点 中的操作,并在该节点中的渲染查看区域中显示渲染的结果。以此方式,开发者能够在开发 着色器时可视地识别着色器的实时创建中的任何出错的结果。
[0010] 另外,该交互式开发环境使开发者能够通过用户界面生成定制的图像滤波器,该 定制的图像滤波器向开发者提供创建表示构成定制的图像滤波器的数学运算和值的有向 无环图的能力。在开发定制的图像滤波器期间,开发者能够通过每一个节点中的实时渲染 的视图来可视化由图像滤波器执行的操作的结果。视觉着色器设计器引擎可以在图形硬件 上以规定次序发起与有向无环图中的每一个节点相关联的操作的执行,并且在每一个节点 中的渲染查看区域中显示渲染的结果。以此方式,开发者能够快速可视化由图像滤波器实 时产生的视觉效果并纠正任何非预期结果。
[0011] 一旦有向无环图被定下来,该图就被变换成可被保存至文件的可执行指令集。开 发者可将表示定制的图像文件的可执行指令集应用于图像或其一部分,以便在图像上产生 预期视觉效果。
[0012] 通过阅读下面的详细描述并参考相关联的附图,这些及其他特点和优点将变得显 而易见。应该理解,前面的概括说明和下面的详细描述只是说明性的,不会对所要求保护的 各方面形成限制。
[0013] 附图简述
[0014] 图1是示出示例性图形流水线的框图。
[0015] 图2示出了表示像素着色器的第一示例性有向无环图。
[0016] 图3示出了表示像素着色器的第二示例性有向无环图。
[0017] 图4是示出用于设计像素着色器和图像滤波器的系统的框图。
[0018] 图5是示出用于设计像素着色器的第一示例性方法的流程图。
[0019] 图6是示出用于设计像素着色器和图像滤波器的第二示例性方法的流程图。
[0020] 图7是示出用于设计像素着色器和图像滤波器的第三示例性方法的流程图。
[0021] 图8是表示产生波纹效果的定制的图像滤波器的第三示例性有向无环图。
[0022]图9是示出具有定制的图像滤波器的用于编辑图像的示例性系统的框图。
[0023] 图10是示出用于创建定制的图像滤波器的第一示例性方法的流程图。
[0024] 图11是示出用于对图像应用定制的图像滤波器的第一示例性方法的流程图。
[0025] 图12是示出用于创建定制的图像滤波器的第二示例性方法的流程图。
[0026] 图13是示出用于对图像应用定制的图像滤波器的第二示例性方法的流程图。
[0027] 图14是示出操作环境的框图。
[0028] 图15是解说第一示例性计算设备的框图。
[0029] 图16是解说第二示例性计算设备的框图。
[0030] 详细描述
[0031] 各个实施例涉及用于设计具有实时图像渲染能力的视觉着色器的技术。在一个或 多个实施例,视觉着色器是可使用交互式开发环境来开发的像素着色器。交互式开发环境 可具有着色器编辑器,该编辑器允许开发者创建表示像素着色器的有向无环图。有向无环 图具有多个节点和边。每一节点表示要对图形图像应用的操作。操作可被配置成用着色器 编程语言编写的可执行指令。边将一个节点连接到另一个节点,并形成路线,使得从一个节 点输出的数据是对另一个节点的输入。有向无环图中的所有路线以一个方向流动,并在生 成像素的所需颜色的终点节点处结束。当图形中的节点根据路线聚集时,结果是形成像素 着色器的一组代码片段。
[0032] 交互式开发环境包括视觉着色器设计器引擎,该引擎在有向无环图的设计期间生 成每一节点的操作的结果的渲染视图。导致对有向无环图的开发的任何错误被显示在节点 的渲染查看区域中。以此方式,开发者能够在开发着色器的同时可视地识别着色器创建中 的任何出错结果。
[0033] 其他实施例涉及用于设计具有实时图像渲染能力的图像滤波器的技术。图像滤波 器对图像中的一组像素应用数学运算和/或值(统称为'操作')以产生特定视觉效果。图 像滤波器不同于像素着色器。像素着色器计算单个像素的颜色。像素着色器无法在图像的 一部分上产生复杂的视觉效果,因为像素着色器不了解该图像的几何结构。出于该原因,图 像滤波器经常被用来生成视觉效果。对图像应用图像滤波器将该图像中的每一个像素的颜 色变换成表示预期视觉效果的不同颜色。像素着色器可用于对每一个像素执行该变换以包 括预期视觉效果。
[0034] 存在各种类型的公知图像滤波器,诸如但不限于:模糊、波纹、棕黑色调、变亮、气 泡、变暗、边缘检测、压花、反转色、锐化、水滴、水平翻转、垂直翻转、漩涡变形、噪声、Frank Miller着色以及卡通着色。模糊图像滤波器产生看似失焦的像素。波纹图像滤波器通过将 波添加到图像中来使图像变形。棕黑图像滤波器用棕黑色调来重新为图像上色以使得图像 看上去是陈旧的。变亮图像滤波器使图像中的像素颜色变亮。气泡图像滤波器将大变形气 泡添加到图像的中心。变暗图像滤波器使图像中的像素颜色变暗。边缘检测图像滤波器检 测图像边缘,用白色来为边缘上色并用黑色来为非边缘上色。
[0035] 压花图像滤波器用高亮或阴影来替换每一个像素的颜色以产生压花效果。反转色 图像滤波器反转每一个像素的颜色。锐化图像滤波器锐化每一个像素的颜色。水滴图像滤 波器将水滴添加到图像上,这些水滴使特定位置中的像素变形,同时使其他像素折射。水平 翻转图像滤波器重新排列像素位置以产生绕水平面变换的图像。垂直翻转图像滤波器重新 排列像素位置以产生绕垂直面变换的图像。漩涡图像滤波器使得图像的像素变形以生成涡 旋或漩涡效果。噪声图像滤波器将伪随机噪声添加到图像上。FrankMiller着色图像滤波 器将图像转换成类似于FrankMiller会话风格的高对比度黑白色图像。卡通着色图像滤 波器将图像转换成类似卡通的外观。这些图像滤波器和其他图像滤波器可针对特定实现定 制以生成所需视觉效果。
[0036] 图像是可被光栅化到可视显示器上的数据。图像可采取绘图、文本、照片、图形、地 图、饼图等形式。图像可包括被存储在具有预定格式(诸如但不限于图形交换格式(GIF)、 联合图像专家组(JPEG)、Windows位图(BMP)等)的文件中的像素。
[0037] 在一个或多个实施例中,图像滤波器可使用交互式开发环境来开发。该交互式开 发环境可具有着色器编辑器,该着色器编辑器具有允许开发者创建表示图像滤波器的有向 无环图的用户界面。有向无环图具有多个节点和边。每一个节点都表示被应用于图像的运 算或值。操作可被配置成用着色器编程语言编写的可执行指令。边将一个节点连接到另一 个节点,并形成路线,使得从一个节点输出的数据是对另一个节点的输入。有向无环图中的 所有路线以一个方向流动,并在生成单个像素上的所需视觉效果的终点节点处结束。当图 形中的节点根据路线聚集时,结果是形成定制的图像滤波器的一组代码片段。
[0038] 交互式开发环境包括视觉着色器设计器引擎,该引擎在有向无环图的设计期间生 成每一节点的操作的结果的实时渲染视图。终点节点处的渲染视图显示具有所需视觉效果 的单个像素的颜色。视觉着色器设计器引擎可以在图形硬件上以规定次序发起与有向无 环图中的每一个节点相关联的操作的执行,并且在每一个节点中的渲染查看区域中显示渲 染的结果。导致对有向无环图的开发的任何错误被显示在节点的渲染查看区域中。以此方 式,开发者能够在开发定制的图像滤波器的同时可视地识别定制的图像滤波器创建中的任 何出错结果。
[0039] 当完成定制的图像滤波器的创建时,形成包含从有向无环图的各个节点聚集的所 有可执行指令的代码片段。该代码片段可被存储并且稍后被应用于图像或其一部分,以生 成所需视觉效果。将定制的图像滤波器应用于图像上经常利用像素着色器来为图像内的受 定制的图像滤波器管制的每一个像素产生新颜色。注意力现在转向对视觉着色器设计器的 实施例的更详细讨论。
[0040] 计算机系统被用于开发渲染在二维(2D)计算机屏幕或显示器上的三维(3D)计算 机图形。真实世界对象以三维观看,而计算机系统生成2D光栅图像。用3D计算机图形创 建的图像被用在范围从视频游戏、飞行器飞行模拟器到天气预报模型的各种应用中。
[0041] 图形表示中的3D对象可使用数学模型来创建。数学模型由具有x、y和z轴的坐 标系内的几何点构成,其中各轴分别对应于宽、高和深。几何点的位置由其x、y*z坐标定 义。3D对象可被表示为一组坐标点或顶点。顶点可被联结以形成多边形,这些多边形定义 了要被渲染和显示的对象的表面。3D对象可通过连接多个2D多边形来创建。三角形是用 于形成3D对象的最常见的多边形。网格是定义3D对象的三角形、顶点和点的集合。
[0042] 多边形内的图形数据然后可由着色器操作。着色器是对图形数据执行某些数学变 换的专用程序。顶点着色器对顶点操作,并对顶点的位置、颜色和纹理化坐标应用计算。像 素着色器对每一像素进行操作,并应用产生像素的颜色的变换。像素着色器可添加变换来 接近木材、大理石或其它自然素材的外观和/或接近光源在物体上的效果。由像素着色器 生成的输出值可被发送到帧缓冲区,在那里这些值由GPU渲染并显示在屏幕上。
[0043] 计算机系统通常利用图形流水线来将3D计算机图形变换成2D图形图像。图形流 水线包括处理的各个阶段,并可由硬件和/或软件组件构成。图1示出了可具有图形流水 线106和图形存储器108的示例性图形子系统104。图形子系统104可以是与主处理器或 CPU 102分开的处理单元。应注意到,图形子系统104和图形流水线106可以是此处讨论的 一个或多个实施例的组件的某些或全部的代表,且图形子系统104和图形流水线106可包 括比图1中所述的或多或少的组件。
[0044] 图形流水线106可包括输入汇编器阶段110,该阶段从运行在CPU上的应用接收按 照三角形、顶点和点来表示图形图像的输入。顶点着色器阶段112接收这些输入,并执行顶 点着色器,顶点着色器应用顶点的位置、颜色和纹理化坐标的变换。顶点着色器可以是在图 形处理器单元(GPU)上执行的计算机程序。或者,顶点着色器可用硬件来实现,诸如集成电 路等,或者顶点着色器可被实现为硬件和软件组件的组合。
[0045] 光栅化器阶段114被用于使顶点、点和多边形转换成包含用于像素着色器的像素 的光栅格式。像素着色器阶段116执行像素着色器,像素着色器应用变换以便为每一像素 产生颜色或像素着色器值。像素着色器可以是在GPU上执行的计算机程序。或者,像素着色 器可用硬件来实现,诸如集成电路等,或者顶点着色器可被实现为硬件和软件组件的组合。 输出合并器阶段118将诸如像素着色器值等各种输出与所渲染的目标进行组合,以生成最 终的渲染图像。
[0046] 像素着色器对像素片段操作,以基于作为输入的内插顶点数据生成颜色。像素的 颜色可取决于表面的材料性质、环境光的颜色、表面相对于视点的角度等。像素着色器可被 表示为有向无环图(DAG)。
[0047] DAG是具有若干节点和边缘且没有循环的有向图。每一节点表示一运算或值,诸如 数学运算、颜色值、内插值等。每一边连接两个节点,并在所连接的节点之间形成路径。路线 由若干路径形成,表示以单个方向通过图的数据流。所有路线在单个终点节点处结束。每 一节点具有至少一个输入或至少一个输出。输入可以是外观值或参数,诸如光源的颜色、纹 理映射等。输出是将在节点处定义的操作对输入的应用。最终渲染的模型在DAG的终点节 点中表示。
[0048] DAG中的每一节点表示一运算或值,诸如数学运算、颜色值、内插值等。输入还可以 是来自另一过程的输出。DAG中的数据按照一个方向从节点流向节点,并在终点节点处终 止。根据有向路线的每一节点的操作的应用导致在终点节点中渲染的像素的最终颜色。
[0049] 开发者可使用交互式开发环境来创建像素着色器和图像滤波器。交互式开发环境 可包含图形界面,包括表示用于构建DAG的易于使用的组件的图标、按钮、菜单、复选框等。 组件表示用于定义节点的数学运算或值。视觉组件被链接在一起以形成一个或多个路线, 其中每一路线表示穿过DAG、按照路线的次序执行每一节点中指定的操作的数据流。数据流 在渲染对象的最终颜色的终点节点处结束。在一个或多个实施例中,交互式开发环境可以 是微软的VisualStudio?产品。
[0050] 图2示出了体现为已使用视觉组件在交互式开发环境中构建的DAG 200的像素着 色器。DAG 200表示使用Lambert或散射光照模型、基于光源使对象呈现阴影的像素着色 器。DAG 200具有七个节点202A-202G,这些节点连接以形成在终点节点202G处结束的有 向路线。每一节点202A-202G可具有零个或更多输入203C、203E-1、203E-2、203F、203G-1、 203G-2以及零个或更多输出2054、2058、20501、20502、2050、205£和205?。节点的输出 可用作对其它节点的输入。
[0051] 每一节点对其输入执行特定的操作,并生成结果,该结果在渲染查看区域 204A-204G中渲染。与每一节点相关联的操作可由用着色器语言编写的代码片段来表示。 着色器语言是为编程图形硬件所定制的编程语言。存在公知的若干着色器语言,诸如高级 着色器语言(HLSL)、Cg、OpenGL(GLSL)和SH,可使用这些着色器语言中的任何一种。
[0052] 例如,节点202A包含其颜色正在被生成的像素205C的纹理坐标。纹理坐标表示 像素在2D位图中的按照其x、y坐标的索引。节点202C从节点202A接收像素索引203C, 并执行纹理采样操作,该操作读取2D位图中的由像素索引指定的位置处的像素的颜色值。 与节点202C相关联的代码片段可如下用HLSL编写:
【权利要求】
1. 一种计算机实现的方法,包括: 利用编辑器来创建定制的图像滤波器,所述编辑器使开发者能够将所述定制的图像滤 波器构造为有向无环图,所述有向无环图具有被配置成在终点节点处终止的一个或多个路 线的多个节点,所述终点节点表示结合通过应用与每一个节点相关联的操作来产生的视觉 效果的像素的颜色;以及 在创建所述定制的图像滤波器期间渲染每一个节点中的表示与节点相关联的操作的 应用的视觉显示。
2. 如权利要求1所述的计算机实现的方法,其特征在于,所述渲染步骤还包括: 在图形处理单元上执行与每一个节点相关联的操作以生成所述视觉显示。
3. 如权利要求2所述的计算机实现的方法,其特征在于,还包括: 将对应于节点的每一个操作与代码片段相关联;以及 将每一个代码片段编译成可执行指令。
4. 如权利要求3所述的计算机实现的方法,其特征在于,还包括: 在图形处理单元上执行所述可执行指令以渲染所述视觉显示。
5. 如权利要求1所述的计算机实现的方法,其特征在于,还包括: 通过对所述图像应用所述定制的图像滤波器来编辑图像。
6. -种计算机实现的系统,包括: 第一处理器和第一存储器,所述第一存储器具有着色器编辑器以及视觉着色器设计器 引擎, 所述着色器编辑器具有指令,所述指令当在所述第一处理器上执行时使得开发者能够 生成表示定制的图像滤波器的有向无环图,所述定制的图像滤波器具有被配置成将图像的 多个像素的第一颜色改为表示定制的视觉效果的第二颜色的指令, 所述视觉着色器设计器引擎具有指令,所述指令当在所述第一处理器上执行时生成用 于所述有向无环图中的每一个节点的最终指令集;以及 图形处理器,所述图形处理器执行用于每一个节点的所述最终指令集并渲染通过执行 每一个节点中的最终指令集而产生的图形图像。
7. 如权利要求6所述的计算机实现的系统,其特征在于,所述有向无环图中的每一个 节点具有用于显示通过执行与节点相关联的所述最终指令集而产生的视图的渲染查看区 域。
8. 如权利要求6所述的计算机实现的系统,其特征在于,所述第一处理器和所述图形 处理器是不同的。
9. 如权利要求6所述的计算机实现的系统,其特征在于,所述第一存储器具有图像编 辑器,所述图像编辑器具有当在所述第一处理器上执行时对图像应用所述定制的图像滤波 器的处理器可执行指令。
10. 如权利要求6所述的计算机实现的系统,其特征在于,所述着色器编辑器具有处理 器可执行指令,所述处理器可执行指令使开发者能够创建所述有向无环图中的节点,将一 个或多个节点的输出连接到其他节点的输入,将运算和值关联到节点,以及关联用于节点 的每一个操作的指令。
【文档编号】G06T15/80GK104488001SQ201380038737
【公开日】2015年4月1日 申请日期:2013年7月19日 优先权日:2012年7月20日
【发明者】S·马里森, J-P·杜普来西斯, J·戈希, E·阿坦恩斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1