定制的圖像濾波器的制造方法
【專利摘要】交互式開發(fā)環(huán)境使用戶能夠通過用戶界面創(chuàng)建定制的圖像濾波器,該定制的圖像濾波器向開發(fā)者提供創(chuàng)建表示生成定制的視覺效果的數(shù)學(xué)運(yùn)算和值的有向無環(huán)圖的能力。在開發(fā)定制的圖像濾波器期間,視覺著色器設(shè)計(jì)器引擎可以按規(guī)定次序執(zhí)行與每一個(gè)節(jié)點(diǎn)相關(guān)聯(lián)的運(yùn)算和值并且在每一個(gè)節(jié)點(diǎn)的渲染查看區(qū)域中顯示渲染的結(jié)果。以此方式,開發(fā)者能夠快速可視化由圖像濾波器實(shí)時(shí)產(chǎn)生的視覺效果。
【專利說明】定制的圖像濾波竊
[0001] 背景
[0002] 計(jì)算機(jī)圖形方面的進(jìn)步產(chǎn)生了復(fù)雜的軟件,以使得計(jì)算機(jī)生成的圖像盡可能地看 上去逼真。具體地,在圖形系統(tǒng)中通常使用著色器以生成用戶設(shè)計(jì)的圖形效果。著色器是 定義要在幾何對(duì)象上執(zhí)行以產(chǎn)生期望的圖形效果的一組操作的程序或代碼。像素著色器是 用于為幾何對(duì)象的每一表面上的每一像素產(chǎn)生顏色的一種類型的著色器。像素著色器可用 于在圖像中渲染諸如霧、漫射、動(dòng)態(tài)模糊、反射、紋理化或?qū)ο笊系纳疃鹊刃Ч?br>
[0003]著色器執(zhí)行復(fù)雜操作,且可包含在圖形處理單元(GPU)上并行運(yùn)行可能數(shù)百個(gè)執(zhí) 行線程的數(shù)千條指令。因此,著色器的開發(fā)可能是令人畏縮的任務(wù)。具體地,測(cè)試著色器是 成問題的,因?yàn)殚_發(fā)者可能不能訪問GPU的各個(gè)硬件組件的內(nèi)部寄存器和數(shù)據(jù),而在著色 器代碼中分析錯(cuò)誤可能需要這些寄存器和數(shù)據(jù)。諸如在著色器代碼中嵌入打印語句的經(jīng)典 調(diào)試技術(shù)在著色器涉及大量數(shù)據(jù)并在多個(gè)并行線程中執(zhí)行時(shí)可能是不實(shí)際的。因此,著色 器的復(fù)雜性為開發(fā)這樣的程序帶來了障礙。
[0004]圖像濾波器利用像素著色器來在圖像上生成特殊視覺效果。例如,生成模糊的圖 像濾波器對(duì)一組像素應(yīng)用高斯變換以減少圖像細(xì)節(jié),從而產(chǎn)生漫射圖像。棕黑色圖像濾波 器將一組像素變換成亮或暗棕色調(diào)。波紋圖像濾波器用水平或垂直波或波紋來替換一組像 素。
[0005] 圖像濾波器可以是以規(guī)定方式操作的預(yù)定義函數(shù),這在開發(fā)者需要快速開發(fā)圖像 時(shí)是有用的。預(yù)定義圖像濾波器可能不向開發(fā)者提供創(chuàng)建獨(dú)特視覺效果的能力,而是留給 開發(fā)者創(chuàng)建他們自己的定制的圖像濾波器的替代方案。定制的圖像濾波器經(jīng)常用高級(jí)編程 語言來編寫并且被轉(zhuǎn)換成圖形子系統(tǒng)所支持的可執(zhí)行指令。定制的圖像濾波器然后可作為 插件或作為擴(kuò)展被結(jié)合到圖像編輯器中。然而,以此方式創(chuàng)建這一定制的圖像濾波器要求 開發(fā)者具備編程技能和知識(shí)。
[0006] 概述
[0007] 提供本概述是為了以簡(jiǎn)化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的概念選 擇。本概述并不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要 求保護(hù)主題的范圍。
[0008]著色器是對(duì)圖形數(shù)據(jù)執(zhí)行特定數(shù)學(xué)變換的專用程序。像素著色器對(duì)圖像的每一像 素進(jìn)行操作,并應(yīng)用產(chǎn)生像素顏色的變換。像素著色器可添加變換來接近木材、大理石或其 它自然素材的外觀和/或接近光源在物體上的效果。
[0009] 提供了一種使開發(fā)者能夠創(chuàng)建表示像素著色器的有向無環(huán)圖的交互式開發(fā)環(huán)境。 有向無環(huán)圖包含多個(gè)節(jié)點(diǎn)和邊,其中每一節(jié)點(diǎn)包含對(duì)該節(jié)點(diǎn)的輸入執(zhí)行操作或生成值的代 碼片段。交互式開發(fā)環(huán)境包含視覺著色器設(shè)計(jì)器引擎,該引擎以規(guī)定次序執(zhí)行每一個(gè)節(jié)點(diǎn) 中的操作,并在該節(jié)點(diǎn)中的渲染查看區(qū)域中顯示渲染的結(jié)果。以此方式,開發(fā)者能夠在開發(fā) 著色器時(shí)可視地識(shí)別著色器的實(shí)時(shí)創(chuàng)建中的任何出錯(cuò)的結(jié)果。
[0010] 另外,該交互式開發(fā)環(huán)境使開發(fā)者能夠通過用戶界面生成定制的圖像濾波器,該 定制的圖像濾波器向開發(fā)者提供創(chuàng)建表示構(gòu)成定制的圖像濾波器的數(shù)學(xué)運(yùn)算和值的有向 無環(huán)圖的能力。在開發(fā)定制的圖像濾波器期間,開發(fā)者能夠通過每一個(gè)節(jié)點(diǎn)中的實(shí)時(shí)渲染 的視圖來可視化由圖像濾波器執(zhí)行的操作的結(jié)果。視覺著色器設(shè)計(jì)器引擎可以在圖形硬件 上以規(guī)定次序發(fā)起與有向無環(huán)圖中的每一個(gè)節(jié)點(diǎn)相關(guān)聯(lián)的操作的執(zhí)行,并且在每一個(gè)節(jié)點(diǎn) 中的渲染查看區(qū)域中顯示渲染的結(jié)果。以此方式,開發(fā)者能夠快速可視化由圖像濾波器實(shí) 時(shí)產(chǎn)生的視覺效果并糾正任何非預(yù)期結(jié)果。
[0011] 一旦有向無環(huán)圖被定下來,該圖就被變換成可被保存至文件的可執(zhí)行指令集。開 發(fā)者可將表示定制的圖像文件的可執(zhí)行指令集應(yīng)用于圖像或其一部分,以便在圖像上產(chǎn)生 預(yù)期視覺效果。
[0012] 通過閱讀下面的詳細(xì)描述并參考相關(guān)聯(lián)的附圖,這些及其他特點(diǎn)和優(yōu)點(diǎn)將變得顯 而易見。應(yīng)該理解,前面的概括說明和下面的詳細(xì)描述只是說明性的,不會(huì)對(duì)所要求保護(hù)的 各方面形成限制。
[0013] 附圖簡(jiǎn)述
[0014] 圖1是示出示例性圖形流水線的框圖。
[0015] 圖2示出了表示像素著色器的第一示例性有向無環(huán)圖。
[0016] 圖3示出了表示像素著色器的第二示例性有向無環(huán)圖。
[0017] 圖4是示出用于設(shè)計(jì)像素著色器和圖像濾波器的系統(tǒng)的框圖。
[0018] 圖5是示出用于設(shè)計(jì)像素著色器的第一示例性方法的流程圖。
[0019] 圖6是示出用于設(shè)計(jì)像素著色器和圖像濾波器的第二示例性方法的流程圖。
[0020] 圖7是示出用于設(shè)計(jì)像素著色器和圖像濾波器的第三示例性方法的流程圖。
[0021] 圖8是表示產(chǎn)生波紋效果的定制的圖像濾波器的第三示例性有向無環(huán)圖。
[0022]圖9是示出具有定制的圖像濾波器的用于編輯圖像的示例性系統(tǒng)的框圖。
[0023] 圖10是示出用于創(chuàng)建定制的圖像濾波器的第一示例性方法的流程圖。
[0024] 圖11是示出用于對(duì)圖像應(yīng)用定制的圖像濾波器的第一示例性方法的流程圖。
[0025] 圖12是示出用于創(chuàng)建定制的圖像濾波器的第二示例性方法的流程圖。
[0026] 圖13是示出用于對(duì)圖像應(yīng)用定制的圖像濾波器的第二示例性方法的流程圖。
[0027] 圖14是示出操作環(huán)境的框圖。
[0028] 圖15是解說第一示例性計(jì)算設(shè)備的框圖。
[0029] 圖16是解說第二示例性計(jì)算設(shè)備的框圖。
[0030] 詳細(xì)描述
[0031] 各個(gè)實(shí)施例涉及用于設(shè)計(jì)具有實(shí)時(shí)圖像渲染能力的視覺著色器的技術(shù)。在一個(gè)或 多個(gè)實(shí)施例,視覺著色器是可使用交互式開發(fā)環(huán)境來開發(fā)的像素著色器。交互式開發(fā)環(huán)境 可具有著色器編輯器,該編輯器允許開發(fā)者創(chuàng)建表示像素著色器的有向無環(huán)圖。有向無環(huán) 圖具有多個(gè)節(jié)點(diǎn)和邊。每一節(jié)點(diǎn)表示要對(duì)圖形圖像應(yīng)用的操作。操作可被配置成用著色器 編程語言編寫的可執(zhí)行指令。邊將一個(gè)節(jié)點(diǎn)連接到另一個(gè)節(jié)點(diǎn),并形成路線,使得從一個(gè)節(jié) 點(diǎn)輸出的數(shù)據(jù)是對(duì)另一個(gè)節(jié)點(diǎn)的輸入。有向無環(huán)圖中的所有路線以一個(gè)方向流動(dòng),并在生 成像素的所需顏色的終點(diǎn)節(jié)點(diǎn)處結(jié)束。當(dāng)圖形中的節(jié)點(diǎn)根據(jù)路線聚集時(shí),結(jié)果是形成像素 著色器的一組代碼片段。
[0032] 交互式開發(fā)環(huán)境包括視覺著色器設(shè)計(jì)器引擎,該引擎在有向無環(huán)圖的設(shè)計(jì)期間生 成每一節(jié)點(diǎn)的操作的結(jié)果的渲染視圖。導(dǎo)致對(duì)有向無環(huán)圖的開發(fā)的任何錯(cuò)誤被顯示在節(jié)點(diǎn) 的渲染查看區(qū)域中。以此方式,開發(fā)者能夠在開發(fā)著色器的同時(shí)可視地識(shí)別著色器創(chuàng)建中 的任何出錯(cuò)結(jié)果。
[0033] 其他實(shí)施例涉及用于設(shè)計(jì)具有實(shí)時(shí)圖像渲染能力的圖像濾波器的技術(shù)。圖像濾波 器對(duì)圖像中的一組像素應(yīng)用數(shù)學(xué)運(yùn)算和/或值(統(tǒng)稱為'操作')以產(chǎn)生特定視覺效果。圖 像濾波器不同于像素著色器。像素著色器計(jì)算單個(gè)像素的顏色。像素著色器無法在圖像的 一部分上產(chǎn)生復(fù)雜的視覺效果,因?yàn)橄袼刂鞑涣私庠搱D像的幾何結(jié)構(gòu)。出于該原因,圖 像濾波器經(jīng)常被用來生成視覺效果。對(duì)圖像應(yīng)用圖像濾波器將該圖像中的每一個(gè)像素的顏 色變換成表示預(yù)期視覺效果的不同顏色。像素著色器可用于對(duì)每一個(gè)像素執(zhí)行該變換以包 括預(yù)期視覺效果。
[0034] 存在各種類型的公知圖像濾波器,諸如但不限于:模糊、波紋、棕黑色調(diào)、變亮、氣 泡、變暗、邊緣檢測(cè)、壓花、反轉(zhuǎn)色、銳化、水滴、水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)、漩渦變形、噪聲、Frank Miller著色以及卡通著色。模糊圖像濾波器產(chǎn)生看似失焦的像素。波紋圖像濾波器通過將 波添加到圖像中來使圖像變形。棕黑圖像濾波器用棕黑色調(diào)來重新為圖像上色以使得圖像 看上去是陳舊的。變亮圖像濾波器使圖像中的像素顏色變亮。氣泡圖像濾波器將大變形氣 泡添加到圖像的中心。變暗圖像濾波器使圖像中的像素顏色變暗。邊緣檢測(cè)圖像濾波器檢 測(cè)圖像邊緣,用白色來為邊緣上色并用黑色來為非邊緣上色。
[0035] 壓花圖像濾波器用高亮或陰影來替換每一個(gè)像素的顏色以產(chǎn)生壓花效果。反轉(zhuǎn)色 圖像濾波器反轉(zhuǎn)每一個(gè)像素的顏色。銳化圖像濾波器銳化每一個(gè)像素的顏色。水滴圖像濾 波器將水滴添加到圖像上,這些水滴使特定位置中的像素變形,同時(shí)使其他像素折射。水平 翻轉(zhuǎn)圖像濾波器重新排列像素位置以產(chǎn)生繞水平面變換的圖像。垂直翻轉(zhuǎn)圖像濾波器重新 排列像素位置以產(chǎn)生繞垂直面變換的圖像。漩渦圖像濾波器使得圖像的像素變形以生成渦 旋或漩渦效果。噪聲圖像濾波器將偽隨機(jī)噪聲添加到圖像上。FrankMiller著色圖像濾波 器將圖像轉(zhuǎn)換成類似于FrankMiller會(huì)話風(fēng)格的高對(duì)比度黑白色圖像。卡通著色圖像濾 波器將圖像轉(zhuǎn)換成類似卡通的外觀。這些圖像濾波器和其他圖像濾波器可針對(duì)特定實(shí)現(xiàn)定 制以生成所需視覺效果。
[0036] 圖像是可被光柵化到可視顯示器上的數(shù)據(jù)。圖像可采取繪圖、文本、照片、圖形、地 圖、餅圖等形式。圖像可包括被存儲(chǔ)在具有預(yù)定格式(諸如但不限于圖形交換格式(GIF)、 聯(lián)合圖像專家組(JPEG)、Windows位圖(BMP)等)的文件中的像素。
[0037] 在一個(gè)或多個(gè)實(shí)施例中,圖像濾波器可使用交互式開發(fā)環(huán)境來開發(fā)。該交互式開 發(fā)環(huán)境可具有著色器編輯器,該著色器編輯器具有允許開發(fā)者創(chuàng)建表示圖像濾波器的有向 無環(huán)圖的用戶界面。有向無環(huán)圖具有多個(gè)節(jié)點(diǎn)和邊。每一個(gè)節(jié)點(diǎn)都表示被應(yīng)用于圖像的運(yùn) 算或值。操作可被配置成用著色器編程語言編寫的可執(zhí)行指令。邊將一個(gè)節(jié)點(diǎn)連接到另一 個(gè)節(jié)點(diǎn),并形成路線,使得從一個(gè)節(jié)點(diǎn)輸出的數(shù)據(jù)是對(duì)另一個(gè)節(jié)點(diǎn)的輸入。有向無環(huán)圖中的 所有路線以一個(gè)方向流動(dòng),并在生成單個(gè)像素上的所需視覺效果的終點(diǎn)節(jié)點(diǎn)處結(jié)束。當(dāng)圖 形中的節(jié)點(diǎn)根據(jù)路線聚集時(shí),結(jié)果是形成定制的圖像濾波器的一組代碼片段。
[0038] 交互式開發(fā)環(huán)境包括視覺著色器設(shè)計(jì)器引擎,該引擎在有向無環(huán)圖的設(shè)計(jì)期間生 成每一節(jié)點(diǎn)的操作的結(jié)果的實(shí)時(shí)渲染視圖。終點(diǎn)節(jié)點(diǎn)處的渲染視圖顯示具有所需視覺效果 的單個(gè)像素的顏色。視覺著色器設(shè)計(jì)器引擎可以在圖形硬件上以規(guī)定次序發(fā)起與有向無 環(huán)圖中的每一個(gè)節(jié)點(diǎn)相關(guān)聯(lián)的操作的執(zhí)行,并且在每一個(gè)節(jié)點(diǎn)中的渲染查看區(qū)域中顯示渲 染的結(jié)果。導(dǎo)致對(duì)有向無環(huán)圖的開發(fā)的任何錯(cuò)誤被顯示在節(jié)點(diǎn)的渲染查看區(qū)域中。以此方 式,開發(fā)者能夠在開發(fā)定制的圖像濾波器的同時(shí)可視地識(shí)別定制的圖像濾波器創(chuàng)建中的任 何出錯(cuò)結(jié)果。
[0039] 當(dāng)完成定制的圖像濾波器的創(chuàng)建時(shí),形成包含從有向無環(huán)圖的各個(gè)節(jié)點(diǎn)聚集的所 有可執(zhí)行指令的代碼片段。該代碼片段可被存儲(chǔ)并且稍后被應(yīng)用于圖像或其一部分,以生 成所需視覺效果。將定制的圖像濾波器應(yīng)用于圖像上經(jīng)常利用像素著色器來為圖像內(nèi)的受 定制的圖像濾波器管制的每一個(gè)像素產(chǎn)生新顏色。注意力現(xiàn)在轉(zhuǎn)向?qū)σ曈X著色器設(shè)計(jì)器的 實(shí)施例的更詳細(xì)討論。
[0040] 計(jì)算機(jī)系統(tǒng)被用于開發(fā)渲染在二維(2D)計(jì)算機(jī)屏幕或顯示器上的三維(3D)計(jì)算 機(jī)圖形。真實(shí)世界對(duì)象以三維觀看,而計(jì)算機(jī)系統(tǒng)生成2D光柵圖像。用3D計(jì)算機(jī)圖形創(chuàng) 建的圖像被用在范圍從視頻游戲、飛行器飛行模擬器到天氣預(yù)報(bào)模型的各種應(yīng)用中。
[0041] 圖形表示中的3D對(duì)象可使用數(shù)學(xué)模型來創(chuàng)建。數(shù)學(xué)模型由具有x、y和z軸的坐 標(biāo)系內(nèi)的幾何點(diǎn)構(gòu)成,其中各軸分別對(duì)應(yīng)于寬、高和深。幾何點(diǎn)的位置由其x、y*z坐標(biāo)定 義。3D對(duì)象可被表示為一組坐標(biāo)點(diǎn)或頂點(diǎn)。頂點(diǎn)可被聯(lián)結(jié)以形成多邊形,這些多邊形定義 了要被渲染和顯示的對(duì)象的表面。3D對(duì)象可通過連接多個(gè)2D多邊形來創(chuàng)建。三角形是用 于形成3D對(duì)象的最常見的多邊形。網(wǎng)格是定義3D對(duì)象的三角形、頂點(diǎn)和點(diǎn)的集合。
[0042] 多邊形內(nèi)的圖形數(shù)據(jù)然后可由著色器操作。著色器是對(duì)圖形數(shù)據(jù)執(zhí)行某些數(shù)學(xué)變 換的專用程序。頂點(diǎn)著色器對(duì)頂點(diǎn)操作,并對(duì)頂點(diǎn)的位置、顏色和紋理化坐標(biāo)應(yīng)用計(jì)算。像 素著色器對(duì)每一像素進(jìn)行操作,并應(yīng)用產(chǎn)生像素的顏色的變換。像素著色器可添加變換來 接近木材、大理石或其它自然素材的外觀和/或接近光源在物體上的效果。由像素著色器 生成的輸出值可被發(fā)送到幀緩沖區(qū),在那里這些值由GPU渲染并顯示在屏幕上。
[0043] 計(jì)算機(jī)系統(tǒng)通常利用圖形流水線來將3D計(jì)算機(jī)圖形變換成2D圖形圖像。圖形流 水線包括處理的各個(gè)階段,并可由硬件和/或軟件組件構(gòu)成。圖1示出了可具有圖形流水 線106和圖形存儲(chǔ)器108的示例性圖形子系統(tǒng)104。圖形子系統(tǒng)104可以是與主處理器或 CPU 102分開的處理單元。應(yīng)注意到,圖形子系統(tǒng)104和圖形流水線106可以是此處討論的 一個(gè)或多個(gè)實(shí)施例的組件的某些或全部的代表,且圖形子系統(tǒng)104和圖形流水線106可包 括比圖1中所述的或多或少的組件。
[0044] 圖形流水線106可包括輸入?yún)R編器階段110,該階段從運(yùn)行在CPU上的應(yīng)用接收按 照三角形、頂點(diǎn)和點(diǎn)來表示圖形圖像的輸入。頂點(diǎn)著色器階段112接收這些輸入,并執(zhí)行頂 點(diǎn)著色器,頂點(diǎn)著色器應(yīng)用頂點(diǎn)的位置、顏色和紋理化坐標(biāo)的變換。頂點(diǎn)著色器可以是在圖 形處理器單元(GPU)上執(zhí)行的計(jì)算機(jī)程序?;蛘?,頂點(diǎn)著色器可用硬件來實(shí)現(xiàn),諸如集成電 路等,或者頂點(diǎn)著色器可被實(shí)現(xiàn)為硬件和軟件組件的組合。
[0045] 光柵化器階段114被用于使頂點(diǎn)、點(diǎn)和多邊形轉(zhuǎn)換成包含用于像素著色器的像素 的光柵格式。像素著色器階段116執(zhí)行像素著色器,像素著色器應(yīng)用變換以便為每一像素 產(chǎn)生顏色或像素著色器值。像素著色器可以是在GPU上執(zhí)行的計(jì)算機(jī)程序。或者,像素著色 器可用硬件來實(shí)現(xiàn),諸如集成電路等,或者頂點(diǎn)著色器可被實(shí)現(xiàn)為硬件和軟件組件的組合。 輸出合并器階段118將諸如像素著色器值等各種輸出與所渲染的目標(biāo)進(jìn)行組合,以生成最 終的渲染圖像。
[0046] 像素著色器對(duì)像素片段操作,以基于作為輸入的內(nèi)插頂點(diǎn)數(shù)據(jù)生成顏色。像素的 顏色可取決于表面的材料性質(zhì)、環(huán)境光的顏色、表面相對(duì)于視點(diǎn)的角度等。像素著色器可被 表示為有向無環(huán)圖(DAG)。
[0047] DAG是具有若干節(jié)點(diǎn)和邊緣且沒有循環(huán)的有向圖。每一節(jié)點(diǎn)表示一運(yùn)算或值,諸如 數(shù)學(xué)運(yùn)算、顏色值、內(nèi)插值等。每一邊連接兩個(gè)節(jié)點(diǎn),并在所連接的節(jié)點(diǎn)之間形成路徑。路線 由若干路徑形成,表示以單個(gè)方向通過圖的數(shù)據(jù)流。所有路線在單個(gè)終點(diǎn)節(jié)點(diǎn)處結(jié)束。每 一節(jié)點(diǎn)具有至少一個(gè)輸入或至少一個(gè)輸出。輸入可以是外觀值或參數(shù),諸如光源的顏色、紋 理映射等。輸出是將在節(jié)點(diǎn)處定義的操作對(duì)輸入的應(yīng)用。最終渲染的模型在DAG的終點(diǎn)節(jié) 點(diǎn)中表示。
[0048] DAG中的每一節(jié)點(diǎn)表示一運(yùn)算或值,諸如數(shù)學(xué)運(yùn)算、顏色值、內(nèi)插值等。輸入還可以 是來自另一過程的輸出。DAG中的數(shù)據(jù)按照一個(gè)方向從節(jié)點(diǎn)流向節(jié)點(diǎn),并在終點(diǎn)節(jié)點(diǎn)處終 止。根據(jù)有向路線的每一節(jié)點(diǎn)的操作的應(yīng)用導(dǎo)致在終點(diǎn)節(jié)點(diǎn)中渲染的像素的最終顏色。
[0049] 開發(fā)者可使用交互式開發(fā)環(huán)境來創(chuàng)建像素著色器和圖像濾波器。交互式開發(fā)環(huán)境 可包含圖形界面,包括表示用于構(gòu)建DAG的易于使用的組件的圖標(biāo)、按鈕、菜單、復(fù)選框等。 組件表示用于定義節(jié)點(diǎn)的數(shù)學(xué)運(yùn)算或值。視覺組件被鏈接在一起以形成一個(gè)或多個(gè)路線, 其中每一路線表示穿過DAG、按照路線的次序執(zhí)行每一節(jié)點(diǎn)中指定的操作的數(shù)據(jù)流。數(shù)據(jù)流 在渲染對(duì)象的最終顏色的終點(diǎn)節(jié)點(diǎn)處結(jié)束。在一個(gè)或多個(gè)實(shí)施例中,交互式開發(fā)環(huán)境可以 是微軟的VisualStudio?產(chǎn)品。
[0050] 圖2示出了體現(xiàn)為已使用視覺組件在交互式開發(fā)環(huán)境中構(gòu)建的DAG 200的像素著 色器。DAG 200表示使用Lambert或散射光照模型、基于光源使對(duì)象呈現(xiàn)陰影的像素著色 器。DAG 200具有七個(gè)節(jié)點(diǎn)202A-202G,這些節(jié)點(diǎn)連接以形成在終點(diǎn)節(jié)點(diǎn)202G處結(jié)束的有 向路線。每一節(jié)點(diǎn)202A-202G可具有零個(gè)或更多輸入203C、203E-1、203E-2、203F、203G-1、 203G-2以及零個(gè)或更多輸出2054、2058、20501、20502、2050、205£和205?。節(jié)點(diǎn)的輸出 可用作對(duì)其它節(jié)點(diǎn)的輸入。
[0051] 每一節(jié)點(diǎn)對(duì)其輸入執(zhí)行特定的操作,并生成結(jié)果,該結(jié)果在渲染查看區(qū)域 204A-204G中渲染。與每一節(jié)點(diǎn)相關(guān)聯(lián)的操作可由用著色器語言編寫的代碼片段來表示。 著色器語言是為編程圖形硬件所定制的編程語言。存在公知的若干著色器語言,諸如高級(jí) 著色器語言(HLSL)、Cg、OpenGL(GLSL)和SH,可使用這些著色器語言中的任何一種。
[0052] 例如,節(jié)點(diǎn)202A包含其顏色正在被生成的像素205C的紋理坐標(biāo)。紋理坐標(biāo)表示 像素在2D位圖中的按照其x、y坐標(biāo)的索引。節(jié)點(diǎn)202C從節(jié)點(diǎn)202A接收像素索引203C, 并執(zhí)行紋理采樣操作,該操作讀取2D位圖中的由像素索引指定的位置處的像素的顏色值。 與節(jié)點(diǎn)202C相關(guān)聯(lián)的代碼片段可如下用HLSL編寫:
【權(quán)利要求】
1. 一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括: 利用編輯器來創(chuàng)建定制的圖像濾波器,所述編輯器使開發(fā)者能夠?qū)⑺龆ㄖ频膱D像濾 波器構(gòu)造為有向無環(huán)圖,所述有向無環(huán)圖具有被配置成在終點(diǎn)節(jié)點(diǎn)處終止的一個(gè)或多個(gè)路 線的多個(gè)節(jié)點(diǎn),所述終點(diǎn)節(jié)點(diǎn)表示結(jié)合通過應(yīng)用與每一個(gè)節(jié)點(diǎn)相關(guān)聯(lián)的操作來產(chǎn)生的視覺 效果的像素的顏色;以及 在創(chuàng)建所述定制的圖像濾波器期間渲染每一個(gè)節(jié)點(diǎn)中的表示與節(jié)點(diǎn)相關(guān)聯(lián)的操作的 應(yīng)用的視覺顯示。
2. 如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,所述渲染步驟還包括: 在圖形處理單元上執(zhí)行與每一個(gè)節(jié)點(diǎn)相關(guān)聯(lián)的操作以生成所述視覺顯示。
3. 如權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括: 將對(duì)應(yīng)于節(jié)點(diǎn)的每一個(gè)操作與代碼片段相關(guān)聯(lián);以及 將每一個(gè)代碼片段編譯成可執(zhí)行指令。
4. 如權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括: 在圖形處理單元上執(zhí)行所述可執(zhí)行指令以渲染所述視覺顯示。
5. 如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括: 通過對(duì)所述圖像應(yīng)用所述定制的圖像濾波器來編輯圖像。
6. -種計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),包括: 第一處理器和第一存儲(chǔ)器,所述第一存儲(chǔ)器具有著色器編輯器以及視覺著色器設(shè)計(jì)器 引擎, 所述著色器編輯器具有指令,所述指令當(dāng)在所述第一處理器上執(zhí)行時(shí)使得開發(fā)者能夠 生成表示定制的圖像濾波器的有向無環(huán)圖,所述定制的圖像濾波器具有被配置成將圖像的 多個(gè)像素的第一顏色改為表示定制的視覺效果的第二顏色的指令, 所述視覺著色器設(shè)計(jì)器引擎具有指令,所述指令當(dāng)在所述第一處理器上執(zhí)行時(shí)生成用 于所述有向無環(huán)圖中的每一個(gè)節(jié)點(diǎn)的最終指令集;以及 圖形處理器,所述圖形處理器執(zhí)行用于每一個(gè)節(jié)點(diǎn)的所述最終指令集并渲染通過執(zhí)行 每一個(gè)節(jié)點(diǎn)中的最終指令集而產(chǎn)生的圖形圖像。
7. 如權(quán)利要求6所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,所述有向無環(huán)圖中的每一個(gè) 節(jié)點(diǎn)具有用于顯示通過執(zhí)行與節(jié)點(diǎn)相關(guān)聯(lián)的所述最終指令集而產(chǎn)生的視圖的渲染查看區(qū) 域。
8. 如權(quán)利要求6所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,所述第一處理器和所述圖形 處理器是不同的。
9. 如權(quán)利要求6所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,所述第一存儲(chǔ)器具有圖像編 輯器,所述圖像編輯器具有當(dāng)在所述第一處理器上執(zhí)行時(shí)對(duì)圖像應(yīng)用所述定制的圖像濾波 器的處理器可執(zhí)行指令。
10. 如權(quán)利要求6所述的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),其特征在于,所述著色器編輯器具有處理 器可執(zhí)行指令,所述處理器可執(zhí)行指令使開發(fā)者能夠創(chuàng)建所述有向無環(huán)圖中的節(jié)點(diǎn),將一 個(gè)或多個(gè)節(jié)點(diǎn)的輸出連接到其他節(jié)點(diǎn)的輸入,將運(yùn)算和值關(guān)聯(lián)到節(jié)點(diǎn),以及關(guān)聯(lián)用于節(jié)點(diǎn) 的每一個(gè)操作的指令。
【文檔編號(hào)】G06T15/80GK104488001SQ201380038737
【公開日】2015年4月1日 申請(qǐng)日期:2013年7月19日 優(yōu)先權(quán)日:2012年7月20日
【發(fā)明者】S·馬里森, J-P·杜普來西斯, J·戈希, E·阿坦恩斯 申請(qǐng)人:微軟公司