一種基于wp8平臺的相機實時特效渲染方法
【專利摘要】本發(fā)明公開了一種基于WP8平臺的相機實時特效渲染方法,本發(fā)明技術要點包括:創(chuàng)建和初始化顯示容器、顯示容器內(nèi)容提供者、WP8本地相機模型;使用所述相機模型創(chuàng)建相機瀏覽幀容器,所述相機瀏覽幀容器用于向所述相機模型提供實時的影像數(shù)據(jù)流;初始化DirectX3D11設備及上下文環(huán)境;將影像數(shù)據(jù)轉換為紋理數(shù)據(jù)存儲到所述紋理數(shù)據(jù)緩沖區(qū)中;并加載特效濾鏡腳本;使用所述DirectX3D11設備及上下文環(huán)境、所述紋理數(shù)據(jù)與所述特效濾鏡腳本配置移動設備的渲染管線;移動設備的渲染管線完成渲染工作得到實時特效渲染結果;將實時特效渲染結果顯示到屏幕上。
【專利說明】—種基于WP8平臺的相機實時特效渲染方法
【技術領域】
[0001]本發(fā)明涉及相機實時特效渲染技術,尤其是一種基于WP8平臺的相機實時特效渲染方法。
【背景技術】
[0002]隨著越來越多的開發(fā)者加入WP8/WP8.1平臺以及Nokia Lumia系列手機具備超凡的攝影攝像能力的原因,高質量的攝影攝像應用顯得越來越必要,且將會在WP8平臺越來越受歡迎。
[0003]作為當前流行一種視覺畫面呈現(xiàn)方法一實時特效渲在1S、Android平臺十分受歡迎,所見所得的用戶體驗為手機攝影攝像帶來了巨大生機,區(qū)別于1S平臺目前WP8平臺的實時特效渲染的攝影應用主要現(xiàn)狀是這樣的:I)、實時特效渲染攝影類應用非常稀少;2)、實時特效渲染應用的畫面幀率偏低,預覽畫面卡頓;3)、實時特效渲染功能導致Π體驗不流暢。
【發(fā)明內(nèi)容】
[0004]為了解決上述問題,我們提出了一種可用于WP8平臺的相機實時渲染方法,旨在改善現(xiàn)有WP8平臺的相機實時渲染應用畫面幀率卡頓、Π操作不流暢等問題。
[0005]本發(fā)明采用的技術方案包括:
步驟1:在Silverlight端創(chuàng)建和初始化顯示容器;
步驟2:為所述顯示容器創(chuàng)建及初始化顯示容器內(nèi)容提供者;
步驟3:在Silverlight端創(chuàng)建和加載WP8本地相機模型;
步驟4:使用所述相機模型創(chuàng)建相機瀏覽幀容器,所述相機瀏覽幀容器用于向所述相機模型提供實時的影像數(shù)據(jù)流;
步驟5:初始化DirectX3D 11設備及上下文環(huán)境;創(chuàng)建紋理數(shù)據(jù)緩沖區(qū),將影像數(shù)據(jù)轉換為紋理數(shù)據(jù)存儲到所述紋理數(shù)據(jù)緩沖區(qū)中;并加載特效濾鏡腳本;
步驟6:使用所述DirectX3D 11設備及上下文環(huán)境、所述紋理數(shù)據(jù)與所述特效濾鏡腳本配置移動設備的渲染管線;
步驟7:讀取移動設備的方向傳感器數(shù)據(jù),并根據(jù)所述方向傳感器數(shù)據(jù)調整渲染平面紋理坐標數(shù)據(jù),完成相機方向適配;
步驟8:將視口尺寸調整為屏幕分辨率尺寸大小,向移動設備的渲染管線發(fā)出渲染命令;移動設備的渲染管線完成渲染工作得到實時特效渲染結果;
步驟9:所述顯示容器內(nèi)容提供者控制實時特效渲染結果加載到所述顯示容器中; 步驟10:所述顯示容器接收實時特效渲染結果,并將實時特效渲染結果顯示到屏幕上。
[0006]進一步,所述步驟6中的配置內(nèi)容包括:
定義二維渲染平面頂點格式; 創(chuàng)建作為渲染畫布的二維渲染平面幾何體;
創(chuàng)建用于接收渲染管線輸出階段數(shù)據(jù)的渲染目標視圖對象;
根據(jù)所述頂點格式組織并創(chuàng)建頂點著色器,并設置到上下文環(huán)境中;
使用步驟5中的特效濾鏡腳本創(chuàng)建像素著色器并設置到上下文環(huán)境中;根據(jù)特效濾鏡腳本中的常量輸入?yún)?shù)結構創(chuàng)建移動設備管線常量緩沖區(qū)對象并設置到上下文環(huán)境中作為像素著色器的常量輸入?yún)?shù);將所述紋理數(shù)據(jù)設置到上下文環(huán)境中,作為像素著色器的紋理數(shù)據(jù)輸入?yún)?shù)。
[0007]本發(fā)明還提供了一種基于WP8平臺的多特效疊加的相機實時特效渲染方法,包括:
步驟1:在Silverlight端創(chuàng)建和初始化顯示容器;
步驟2:為所述顯示容器創(chuàng)建及初始化顯示容器內(nèi)容提供者;
步驟3:在Silverlight端創(chuàng)建和加載WP8本地相機模型;
步驟4:使用所述相機模型創(chuàng)建相機瀏覽幀容器,所述相機瀏覽幀容器用于向所述相機模型提供實時的影像數(shù)據(jù)流;
步驟5:初始化DirectX3D 11設備及上下文環(huán)境;創(chuàng)建紋理數(shù)據(jù)緩沖區(qū),將影像數(shù)據(jù)轉換為紋理數(shù)據(jù)存儲到所述紋理數(shù)據(jù)緩沖區(qū)中;并加載第I個特效濾鏡腳本;
步驟6:使用所述DirectX3D 11設備及上下文環(huán)境、所述紋理數(shù)據(jù)與所述第I個特效濾鏡腳本配置移動設備的渲染管線;
步驟7:根據(jù)相機預覽幀數(shù)據(jù)尺寸創(chuàng)建離屏渲染目標視圖對象及離屏渲染中間結果對象;向移動設備的渲染管線發(fā)出離屏渲染命令,移動設備的渲染管線完成渲染工作得到離屏特效渲染結果,將所述離屏特效渲染結果存儲到離屏渲染目標視圖對象中;
步驟8:將離屏特效渲染結果從離屏渲染目標視圖對象拷貝到離屏渲染中間結果對象;使用下一個特效濾鏡腳本及離屏渲染中間結果對象作為紋理數(shù)據(jù)更新渲染管線的配置;調整視口尺寸為紋理尺寸,向移動設備的渲染管線發(fā)送離屏渲染命令,移動設備的渲染管線完成渲染工作得到離屏特效渲染結果,將所述離屏特效渲染結果存儲到離屏渲染目標視圖對象中;
重復步驟8直到完成第2個到第η-1個特效濾鏡腳本的特效疊加,然后執(zhí)行以下步驟;步驟9:使用第η個特效濾鏡腳本及重復步驟8得到的η-1個特效疊加的離屏渲染目標視圖對象作為紋理數(shù)據(jù)更新渲染管線的配置;
步驟10:讀取移動設備的方向傳感器數(shù)據(jù),并根據(jù)所述方向傳感器數(shù)據(jù)調整渲染平面紋理坐標數(shù)據(jù),完成相機方向適配
步驟11:將視口尺寸調整為屏幕分辨率尺寸大小,向移動設備的渲染管線發(fā)出渲染命令;移動設備的渲染管線完成渲染工作得到實時特效渲染結果;
步驟12:所述顯示容器內(nèi)容提供者控制實時特效渲染結果加載到所述顯示容器中; 步驟13:所述顯示容器接收實時特效渲染結果,并將實時特效渲染結果顯示到屏幕上。
[0008]進一步,所述步驟6中的配置內(nèi)容包括:
定義二維渲染平面頂點格式;
創(chuàng)建作為渲染畫布的二維渲染平面幾何體; 創(chuàng)建用于接收渲染管線輸出階段數(shù)據(jù)的渲染目標視圖對象;
根據(jù)所述頂點格式組織并創(chuàng)建頂點著色器,并設置到上下文環(huán)境中;
使用步驟5中的第I個特效濾鏡腳本創(chuàng)建像素著色器并設置到上下文環(huán)境中;根據(jù)第I個特效濾鏡腳本中的常量輸入?yún)?shù)結構創(chuàng)建移動設備管線常量緩沖區(qū)對象并設置到上下文環(huán)境中作為像素著色器的常量輸入?yún)?shù);將所述紋理數(shù)據(jù)設置到上下文環(huán)境中,作為像素著色器的紋理數(shù)據(jù)輸入?yún)?shù)。
[0009]進一步,所述步驟8中的使用下一個特效濾鏡腳本及離屏渲染中間結果對象作為紋理數(shù)據(jù)更新渲染管線的配置的步驟進一步包括:
使用所述下一個特效濾鏡腳本創(chuàng)建像素著色器并設置到上下文環(huán)境中;根據(jù)所述下一個特效濾鏡腳本中的常量輸入?yún)?shù)結構創(chuàng)建移動設備管線常量緩沖區(qū)對象并設置到上下文環(huán)境中作為像素著色器的常量輸入?yún)?shù);將所述離屏渲染中間結果對象設置到上下文環(huán)境中,作為像素著色器的紋理數(shù)據(jù)輸入?yún)?shù)。
[0010]所述步驟9進一步包括:
使用所述第η個特效濾鏡腳本創(chuàng)建像素著色器并設置到上下文環(huán)境中;根據(jù)第η個特效濾鏡腳本中的常量輸入?yún)?shù)結構創(chuàng)建移動設備管線常量緩沖區(qū)對象并設置到上下文環(huán)境中作為像素著色器的常量輸入?yún)?shù);將重復步驟8得到的η-1個特效疊加的離屏渲染目標視圖對象設置到上下文環(huán)境中,作為像素著色器的紋理數(shù)據(jù)輸入?yún)?shù)。
[0011]綜上所述,由于采用了上述技術方案,本發(fā)明的有益效果是:
1、本發(fā)明為WP8平臺提供了一種實時特效渲染方法,既能使用Silverlight和DirectX3D圖形渲染框架技術的優(yōu)勢,又能保證使用到WP8所有的新特性。
[0012]2、將DirectX效果框架(EffectsFrameWork)思想應用到相機實時多特效(Pass)渲染功能上,保證了流暢幀率同時也克服了傳統(tǒng)方法對用戶界面造成的嚴重阻塞影響。
[0013]3、使用本地相機預覽幀容器方法,充分降低了預覽幀數(shù)據(jù)獲取時間,從而提升畫面呈現(xiàn)幀率。
[0014]4、充分發(fā)揮了 GPU (圖像處理單元)在圖像渲染方面的優(yōu)勢,讓CPU更加專注于自身用戶界面的處理和響應工作,保證了用戶界面的操作流暢性。
【具體實施方式】
[0015]本說明書中公開的所有特征,或公開的所有方法或過程中的步驟,除了互相排斥的特征和/或步驟以外,均可以以任何方式組合。
[0016]本說明書中公開的任一特征,除非特別敘述,均可被其他等效或具有類似目的的替代特征加以替換。即,除非特別敘述,每個特征只是一系列等效或類似特征中的一個例子而已。
[0017]本發(fā)明基于WP8平臺并使用微軟DirectX3D 11 (簡稱D3D)及Silverlight開發(fā)框架技術提出了一種適用于WP8平臺的實時特效渲染方法,主要適用以下幾種實施場景。
[0018]第一實施例:相機實時特效渲染
I)、在SL(Silverlight)端使用XAML技術創(chuàng)建和初始化顯示容器,更具體的說,一種能接受和顯示實時特效渲染結果到手機屏幕的容器。
[0019]2)、在Native (本地代碼,使用C/C++實現(xiàn))層為顯示容器創(chuàng)建和初始化顯示容器內(nèi)容提供者,顯示容器內(nèi)容提供者用于控制實時特效渲染結果加載到顯示容器的過程,例如控制實時特效渲染結果的幀率等參數(shù)。
[0020]3)、在SL端創(chuàng)建和加載WP8本地相機模型。
[0021]4)、在Native層使用步驟3)中的本地相機模型來創(chuàng)建相機預覽幀容器,該容器用于提供實時的影像數(shù)據(jù)流,在一個更具體的實施例中該容器以提供原始幀的內(nèi)存塊地址的形式提供實時影像數(shù)據(jù)流。
[0022]5)、初始化D3D設備和上下文環(huán)境,創(chuàng)建紋理數(shù)據(jù)緩沖區(qū),取一幀步驟4)中所述的影像數(shù)據(jù),將其轉換為紋理數(shù)據(jù),存儲到紋理數(shù)據(jù)緩沖區(qū)中,加載特效濾鏡腳本(HLSL)。
[0023]6)、使用D3D設備和上下文環(huán)境、紋理數(shù)據(jù)及特效濾鏡腳本配置渲染管線。
[0024]7)、讀取移動設備的方向傳感器數(shù)據(jù)(手機為橫屏或是豎屏),并根據(jù)所述方向傳感器數(shù)據(jù)調整渲染平面紋理坐標數(shù)據(jù),完成相機方向適配。
[0025]8)、調整視口尺寸大小為屏幕分辨率尺寸,向GPU渲染管線發(fā)送渲染命令,渲染管線完成渲染工作得到實時特效渲染結果;
9)、所述顯示容器內(nèi)容提供者控制實時特效渲染結果加載到所述顯示容器中;
10)、所述顯示容器接收實時特效渲染結果,并將實時特效渲染結果顯示到屏幕上。
[0026]在另一個實施例中,所述步驟6)具體的作法是包括:
Stepl:定義二維渲染平面頂點格式,設置平面頂點數(shù)據(jù)(包括紋理坐標和頂點坐標),創(chuàng)建二維渲染平面幾何體,二維渲染平面幾何體用作渲染畫布。
[0027]St印2:創(chuàng)建用于接收渲染管線輸出階段(OM)數(shù)據(jù)的渲染目標視圖(RenderTarget View)對象,命名為RealTime_RTV,根據(jù)Stepl中的頂點數(shù)據(jù)格式組織并創(chuàng)建頂點著色器,并將頂點著色器設置到管線上下文環(huán)境中。
[0028]Step3:使用步驟5中的特效濾鏡腳本創(chuàng)建像素著色器并設置到上下文環(huán)境中; step4:根據(jù)特效濾鏡腳本中的常量輸入?yún)?shù)結構創(chuàng)建移動設備管線常量緩沖區(qū)對象
并設置到上下文環(huán)境中作為像素著色器的常量輸入?yún)?shù);
St印5:將所述紋理數(shù)據(jù)設置到上下文環(huán)境中,作為像素著色器的紋理數(shù)據(jù)輸入?yún)?shù)。第二實施例:將η個特效疊加的相機實時渲染,η為大于或等于2的自然數(shù)首先執(zhí)行第一實施例中的步驟I)、2)、3)、4)、5)、6),然后執(zhí)行以下步驟:
7)、根據(jù)相機預覽幀數(shù)據(jù)尺寸大小創(chuàng)建離屏渲染目標視圖對象,命名為0fTScreen_RTV,以及創(chuàng)建存放中間結果的離屏渲染中間結果對象,命名為TmpDeSt_SRV ;向移動設備的渲染管線發(fā)出離屏渲染命令,移動設備的渲染管線完成渲染工作得到離屏特效渲染結果,將所述離屏特效渲染結果存儲到OfTScreen_RTV中;
8)將離屏特效渲染結果從OffScreen_RTV拷貝到TmpDest_SRV中;使用下一個特效濾鏡腳本及TmpDeSt_SRV作為紋理數(shù)據(jù)更新渲染管線的配置;調整視口尺寸為紋理尺寸,向移動設備的渲染管線發(fā)送離屏渲染命令,移動設備的渲染管線完成渲染工作得到離屏特效渲染結果,將所述離屏特效渲染結果存儲到OfTScreen_RTV中;
重復步驟8直依次將第2個到第η-1個特效濾鏡腳本與第一個特效疊加在一起,然后執(zhí)行以下步驟;
9)使用第η個特效濾鏡腳本及重復步驟8得到的η-1個特效疊加的OffScreen_RTV作為紋理數(shù)據(jù)更新渲染管線的配置; 10)讀取移動設備的方向傳感器數(shù)據(jù),并根據(jù)所述方向傳感器數(shù)據(jù)調整渲染平面紋理坐標數(shù)據(jù),完成相機方向適配
11)將視口尺寸調整為屏幕分辨率尺寸大小,向移動設備的渲染管線發(fā)出渲染命令;移動設備的渲染管線完成渲染工作得到實時特效渲染結果;
12)所述顯示容器內(nèi)容提供者控制實時特效渲染結果加載到所述顯示容器中;
13)所述顯示容器接收實時特效渲染結果,并將實時特效渲染結果顯示到屏幕上。
[0029]在一個更具體的實施例中,所述步驟8中的使用下一個特效濾鏡腳本及離屏渲染中間結果對象作為紋理數(shù)據(jù)更新渲染管線的配置的步驟進一步包括:
使用所述下一個特效濾鏡腳本創(chuàng)建像素著色器并設置到上下文環(huán)境中;根據(jù)所述下一個特效濾鏡腳本中的常量輸入?yún)?shù)結構創(chuàng)建移動設備管線常量緩沖區(qū)對象并設置到上下文環(huán)境中作為像素著色器的常量輸入?yún)?shù);將所述離屏渲染中間結果對象設置到上下文環(huán)境中,作為像素著色器的紋理數(shù)據(jù)輸入?yún)?shù)。
[0030]所述步驟9進一步包括:
使用所述第η個特效濾鏡腳本創(chuàng)建像素著色器并設置到上下文環(huán)境中;根據(jù)所述第η個特效濾鏡腳本中的常量輸入?yún)?shù)結構創(chuàng)建移動設備管線常量緩沖區(qū)對象并設置到上下文環(huán)境中作為像素著色器的常量輸入?yún)?shù);將重復步驟8得到的η-1個特效疊加的離屏渲染目標視圖對象設置到上下文環(huán)境中,作為像素著色器的紋理數(shù)據(jù)輸入?yún)?shù)。
[0031]本發(fā)明并不局限于前述的【具體實施方式】。本發(fā)明擴展到任何在本說明書中披露的新特征或任何新的組合,以及披露的任一新的方法或過程的步驟或任何新的組合。
【權利要求】
1.一種基于WP8平臺的相機實時特效渲染方法,其特征在于,包括: 步驟1:在Silverlight端創(chuàng)建和初始化顯示容器; 步驟2:為所述顯示容器創(chuàng)建及初始化顯示容器內(nèi)容提供者; 步驟3:在Silverlight端創(chuàng)建和加載WP8本地相機模型; 步驟4:使用所述相機模型創(chuàng)建相機瀏覽幀容器,所述相機瀏覽幀容器用于向所述相機模型提供實時的影像數(shù)據(jù)流; 步驟5:初始化DirectX3D 11設備及上下文環(huán)境;創(chuàng)建紋理數(shù)據(jù)緩沖區(qū),將相機預覽幀容器提供的影像數(shù)據(jù)轉換為紋理數(shù)據(jù)存儲到所述紋理數(shù)據(jù)緩沖區(qū)中;并加載特效濾鏡腳本; 步驟6:使用所述DirectX3D 11設備及上下文環(huán)境、所述紋理數(shù)據(jù)與所述特效濾鏡腳本配置移動設備的渲染管線; 步驟7:讀取移動設備的方向傳感器數(shù)據(jù),并根據(jù)所述方向傳感器數(shù)據(jù)調整渲染平面紋理坐標數(shù)據(jù),完成相機方向適配; 步驟8:將視口尺寸調整為屏幕分辨率尺寸大小,向移動設備的渲染管線發(fā)出渲染命令;移動設備的渲 染管線完成渲染工作得到實時特效渲染結果; 步驟9:所述顯示容器內(nèi)容提供者控制實時特效渲染結果加載到所述顯示容器中; 步驟10:所述顯示容器接收實時特效渲染結果,并將實時特效渲染結果顯示到屏幕上。
2.根據(jù)權利要求1所述的一種基于WP8平臺的相機實時特效渲染方法,其特征在于,所述步驟6中的配置內(nèi)容包括: 定義二維渲染平面頂點格式; 創(chuàng)建作為渲染畫布的二維渲染平面幾何體; 創(chuàng)建用于接收渲染管線輸出階段數(shù)據(jù)的渲染目標視圖對象; 根據(jù)所述頂點格式組織并創(chuàng)建頂點著色器,并設置到上下文環(huán)境中; 使用步驟5中的特效濾鏡腳本創(chuàng)建像素著色器并設置到上下文環(huán)境中;根據(jù)特效濾鏡腳本中的常量輸入?yún)?shù)結構創(chuàng)建移動設備管線常量緩沖區(qū)對象并設置到上下文環(huán)境中作為像素著色器的常量輸入?yún)?shù);將所述紋理數(shù)據(jù)設置到上下文環(huán)境中,作為像素著色器的紋理數(shù)據(jù)輸入?yún)?shù)。
3.一種基于WP8平臺的多特效疊加的相機實時特效渲染方法,其特征在于,包括: 步驟1:在Silverlight端創(chuàng)建和初始化顯示容器; 步驟2:為所述顯示容器創(chuàng)建及初始化顯示容器內(nèi)容提供者; 步驟3:在Silverlight端創(chuàng)建和加載WP8本地相機模型; 步驟4:使用所述相機模型創(chuàng)建相機瀏覽幀容器,所述相機瀏覽幀容器用于向所述相機模型提供實時的影像數(shù)據(jù)流; 步驟5:初始化DirectX3D 11設備及上下文環(huán)境;創(chuàng)建紋理數(shù)據(jù)緩沖區(qū),將相機瀏覽幀容器提供的影像數(shù)據(jù)轉換為紋理數(shù)據(jù)存儲到所述紋理數(shù)據(jù)緩沖區(qū)中;并加載第I個特效濾鏡腳本; 步驟6:使用所述DirectX3D 11設備及上下文環(huán)境、所述紋理數(shù)據(jù)與所述第I個特效濾鏡腳本配置移動設備的渲染管線;步驟7:根據(jù)相機預覽幀數(shù)據(jù)尺寸創(chuàng)建離屏渲染目標視圖對象及離屏渲染中間結果對象;向移動設備的渲染管線發(fā)出渲染命令,移動設備的渲染管線完成渲染工作得到離屏特效渲染結果,將所述離屏特效渲染結果存儲到離屏渲染目標視圖對象中; 步驟8:將離屏特效渲染結果從離屏渲染目標視圖對象拷貝到離屏渲染中間結果對象;使用下一個特效濾鏡腳本及離屏渲染中間結果對象作為紋理數(shù)據(jù)更新渲染管線的配置;調整視口尺寸為紋理尺寸,向移動設備的渲染管線發(fā)送渲染命令,移動設備的渲染管線完成渲染工作得到離屏特效渲染結果,將所述離屏特效渲染結果存儲到離屏渲染目標視圖對象中; 重復步驟8直到完成第2個到第η-1個特效濾鏡腳本的特效疊加,然后執(zhí)行以下步驟;步驟9:使用第η個特效濾鏡腳本及重復步驟8得到的η-1個特效疊加的離屏渲染目標視圖對象作為紋理數(shù)據(jù)更新渲染管線的配置; 步驟10:讀取移動設備的方向傳感器數(shù)據(jù),并根據(jù)所述方向傳感器數(shù)據(jù)調整渲染平面紋理坐標數(shù)據(jù),完成相機方向 適配; 步驟11:將視口尺寸調整為屏幕分辨率尺寸大小,向移動設備的渲染管線發(fā)出渲染命令;移動設備的渲染管線完成渲染工作得到實時特效渲染結果; 步驟12:所述顯示容器內(nèi)容提供者控制實時特效渲染結果加載到所述顯示容器中; 步驟13:所述顯示容器接收實時特效渲染結果,并將實時特效渲染結果顯示到屏幕上。
4.根據(jù)權利要求3所述的一種基于WP8平臺的多特效疊加的相機實時特效渲染方法,其特征在于,所述步驟6中的配置內(nèi)容包括: 定義二維渲染平面頂點格式; 創(chuàng)建作為渲染畫布的二維渲染平面幾何體; 創(chuàng)建用于接收渲染管線輸出階段數(shù)據(jù)的渲染目標視圖對象; 根據(jù)所述頂點格式組織并創(chuàng)建頂點著色器,并設置到上下文環(huán)境中; 使用步驟5中的第I個特效濾鏡腳本創(chuàng)建像素著色器并設置到上下文環(huán)境中;根據(jù)第I個特效濾鏡腳本中的常量輸入?yún)?shù)結構創(chuàng)建移動設備管線常量緩沖區(qū)對象并設置到上下文環(huán)境中作為像素著色器的常量輸入?yún)?shù);將所述紋理數(shù)據(jù)設置到上下文環(huán)境中,作為像素著色器的紋理數(shù)據(jù)輸入?yún)?shù)。
5.根據(jù)權利要求3所述的一種基于WP8平臺的多特效疊加的相機實時特效渲染方法,其特征在于,所述步驟8中的使用下一個特效濾鏡腳本及離屏渲染中間結果對象作為紋理數(shù)據(jù)更新渲染管線的配置的步驟進一步包括: 使用所述下一個特效濾鏡腳本創(chuàng)建像素著色器并設置到上下文環(huán)境中;根據(jù)所述下一個特效濾鏡腳本中的常量輸入?yún)?shù)結構創(chuàng)建移動設備管線常量緩沖區(qū)對象并設置到上下文環(huán)境中作為像素著色器的常量輸入?yún)?shù);將所述離屏渲染中間結果對象設置到上下文環(huán)境中,作為像素著色器的紋理數(shù)據(jù)輸入?yún)?shù)。
6.根據(jù)權利要求3所述的一種基于WP8平臺的多特效疊加的相機實時特效渲染方法,其特征在于,所述步驟9進一步包括: 使用所述第η個特效濾鏡腳本創(chuàng)建像素著色器并設置到上下文環(huán)境中;根據(jù)第η個特效濾鏡腳本中的常量輸入?yún)?shù)結構創(chuàng)建移動設備管線常量緩沖區(qū)對象并設置到上下文環(huán)境中作為像素著色器的常量輸入?yún)?shù);將重復步驟8得到的η-1個特效疊加的離屏渲染目標視圖對象設置到上下文環(huán)境中,作為像素著色器的紋理數(shù)據(jù)輸入?yún)?shù)。
7.一種基于WP8平臺的相機實時特效渲染系統(tǒng),其特征在于,包括: 由Silverlight開發(fā)端創(chuàng)建和初始化的顯示容器,用于接收實時特效渲染結果,并將實時特效渲染結果顯示到屏幕上; 顯示容器內(nèi)容提供者,用于加載實時特效渲染結果到所述顯示容器中; 由Silverlight開發(fā)端創(chuàng)建和加載的WP8本地相機模型; 使用本地相機模型創(chuàng)建的相機瀏覽幀容器,用于提供實時的影像數(shù)據(jù)流; DirectX3D 11設備及上下文環(huán)境初始化模塊,用于初始化DirectX3D 11設備及上下文環(huán)境; 由DirectX3D 11開發(fā)端創(chuàng)建的紋理數(shù)據(jù)轉換模塊,用于將影像數(shù)據(jù)轉換為紋理數(shù)據(jù)存儲到紋理數(shù)據(jù)緩沖區(qū)中; 由DirectX3D 11開發(fā)端創(chuàng)建的特效濾鏡腳本加載模塊; 渲染管線配置模塊,用于使用所述DirectX3D 11設備及上下文環(huán)境、所述紋理數(shù)據(jù)與所述特效濾鏡腳本配置移動設備的渲染管線; 相機方向適配模塊,用于 讀取移動設備的方向傳感器數(shù)據(jù),并根據(jù)所述方向傳感器數(shù)據(jù)調整渲染平面紋理坐標數(shù)據(jù); 視口尺寸調整模塊,用于將視口尺寸調整為屏幕分辨率尺寸大??; 渲染命令發(fā)送模塊,用于向移動設備的渲染管線發(fā)出渲染命令; 移動設備的渲染管線,用于完成渲染工作得到實時特效渲染結果; 所述η為大于或等于2的自然數(shù)。
8.一種基于WP8平臺的多特效疊加的相機實時特效渲染系統(tǒng),其特征在于,包括: 由Silverlight開發(fā)端創(chuàng)建和初始化的顯示容器,用于接收實時特效渲染結果,并將實時特效渲染結果顯示到屏幕上; 顯示容器內(nèi)容提供者,用于加載實時特效渲染結果到所述顯示容器中; 由Silverlight開發(fā)端創(chuàng)建和加載的WP8本地相機模型; 使用本地相機模型創(chuàng)建的相機瀏覽幀容器,用于提供實時的影像數(shù)據(jù)流; DirectX3D 11設備及上下文環(huán)境初始化模塊,用于初始化DirectX3D 11設備及上下文環(huán)境; 由DirectX3D 11開發(fā)端創(chuàng)建的紋理數(shù)據(jù)轉換模塊,用于將影像數(shù)據(jù)轉換為紋理數(shù)據(jù)存儲到紋理數(shù)據(jù)緩沖區(qū)中; 由DirectX3D 11開發(fā)端創(chuàng)建的第I個特效濾鏡腳本加載模塊; 渲染管線配置模塊,用于使用所述DirectX3D 11設備及上下文環(huán)境、所述紋理數(shù)據(jù)與所述第I個特效濾鏡腳本配置移動設備的渲染管線; 根據(jù)相機預覽幀數(shù)據(jù)尺寸創(chuàng)建的離屏渲染目標視圖對象及離屏渲染中間結果對象; 離屏渲染命令發(fā)送模塊,用于向移動設備的離屏渲染管線發(fā)出渲染命令; 離屏渲染管線,用于完成渲染工作得到離屏特效渲染結果,將所述離屏特效渲染結果存儲到離屏渲染目標視圖對象中; 多特效疊加模塊,用于重復執(zhí)行以下步驟直到完成第2個到第η-1個特效濾鏡腳本的特效疊加:將離屏特效渲染結果從離屏渲染目標視圖對象拷貝到離屏渲染中間結果對象;使用當前特效濾鏡腳本及離屏渲染中間結果對象作為紋理數(shù)據(jù)更新渲染管線的配置;調整視口尺寸為紋理尺寸,向移動設備的渲染管線發(fā)送渲染命令,移動設備的渲染管線完成渲染工作得到離屏特效渲染結果,將所述離屏特效渲染結果存儲到離屏渲染目標視圖對象中; 第η個特效濾鏡腳本疊加模塊,用于使用第η個特效濾鏡腳本及多特效疊加模塊輸出的離屏渲染目標視圖對象作為紋理數(shù)據(jù)更新渲染管線的配置; 相機方向 適配模塊,用于讀取移動設備的方向傳感器數(shù)據(jù),并根據(jù)所述方向傳感器數(shù)據(jù)調整渲染平面紋理坐標數(shù)據(jù);視口尺寸調整模塊,用于將視口尺寸調整為屏幕分辨率尺寸大?。? 渲染命令發(fā)送模塊,用于向移動設備的渲染管線發(fā)出渲染命令; 渲染管線,用于完成渲染工作得到實時特效渲染結果。
【文檔編號】G06T11/00GK104036534SQ201410296039
【公開日】2014年9月10日 申請日期:2014年6月27日 優(yōu)先權日:2014年6月27日
【發(fā)明者】張學成 申請人:成都品果科技有限公司