專利名稱:簡化繪圖系統(tǒng)的腳本文件的方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于一種簡化繪圖系統(tǒng)的腳本文件(script)的方法及其系統(tǒng),且特別是關(guān)于一種保留腳本文件中特定渲染(rendering)指令所相關(guān)的資源內(nèi)輸入指令,并最佳化這些保留的輸入指令的簡化方法及其系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)多媒體技術(shù)的發(fā)展,通過使用計(jì)算機(jī)即能精確地呈現(xiàn)現(xiàn)實(shí)世界中絢麗多彩的物體。通過應(yīng)用程序界面(application program interface,API),程序設(shè)計(jì)人員所設(shè)計(jì)的軟件只需調(diào)用應(yīng)用程序界面內(nèi)的程序,從而讓應(yīng)用程序界面自動(dòng)地與硬件(例如顯示卡)的驅(qū)動(dòng)程序溝通,便能啟動(dòng)圖形處理功能。
一般而言,驅(qū)動(dòng)程序開發(fā)者可以利用記錄器(logger)將繪圖系統(tǒng)的多個(gè)輸入指令記錄為腳本文件,通過播放此腳本文件的渲染程序來重現(xiàn)根源于顯示驅(qū)動(dòng)程序的程序錯(cuò)誤。然而,目前的三維應(yīng)用程序,例如大型游戲、標(biāo)準(zhǔn)檢查程序(benchmark),即使是一張畫面(frame)的渲染也可能包含成千個(gè)繪制圖元(primitive)指令,而一個(gè)有問題的像素渲染(rendering)可能出現(xiàn)在成千個(gè)好的像素渲染之后。此時(shí),當(dāng)開發(fā)者在重新播放腳本文件的渲染程序時(shí),必須運(yùn)轉(zhuǎn)大量無關(guān)于有問題的像素渲染的上彩功能(rendering),例如抖色(Dithering)、霧化(Fogging Haze)、消除邊緣鋸齒(Anti-Aliasing)等。
換而言之,假使開發(fā)者于實(shí)際圖形芯片(graphic chip)中進(jìn)行除錯(cuò)時(shí),歸因于硬件的高速運(yùn)作,不必要的像素渲染不一定會(huì)耗費(fèi)相當(dāng)?shù)臅r(shí)間。然而,在圖形芯片的設(shè)計(jì)時(shí)期,開發(fā)者會(huì)使用軟件來仿真圖形芯片的算法,而在軟件模型上實(shí)現(xiàn)這些像素的渲染是極為緩慢的,因此在有問題的像素渲染指令前,運(yùn)轉(zhuǎn)這些不必要的渲染指令會(huì)造成圖形芯片的開發(fā)較無效率。
此外,由于有問題的渲染可能會(huì)使用到一些可渲染的紋理(render-abletexture)作為輸入,而此可渲染的紋理內(nèi)容為由先前渲染指令所決定,并非簡易地將所有先前渲染指令刪除即可節(jié)省運(yùn)轉(zhuǎn)這些先前渲染指令的時(shí)間。因而針對有問題的渲染,將不必要的渲染指令刪除,以增進(jìn)除錯(cuò)的效率成為目前精進(jìn)及改善的目標(biāo)。
有鑒于此,本發(fā)明設(shè)計(jì)一種簡化器(simplifier)能自動(dòng)地保留腳本文件中有問題的渲染所影響到的輸入指令,并且刪除沒有問題的對象及其渲染,藉以僅對有問題的渲染進(jìn)行分析及除錯(cuò),大大地節(jié)省運(yùn)轉(zhuǎn)不必要輸入指令的時(shí)間,增進(jìn)開發(fā)的效率。
發(fā)明內(nèi)容
本發(fā)明提供一種簡化繪圖系統(tǒng)的腳本文件的方法。此簡化方法為將腳本文件內(nèi)所有輸入指令先分類至其所屬的資源,再找出特定指令屬于的資源,并且保留屬于此資源的輸入指令。通過腳本文件的簡化來保留特定指令所影響到的輸入指令,并最佳化所保留的輸入指令,藉以有效地對這些保留的輸入指令進(jìn)行分析及除錯(cuò)。
本發(fā)明提出一種簡化繪圖系統(tǒng)的腳本文件的方法。此簡化方法為先接收腳本文件,而此腳本文件包含繪圖系統(tǒng)的多個(gè)輸入指令,再將會(huì)改變紋理或緩沖器的內(nèi)容的每一個(gè)輸入指令分類至資源,并稱此輸入指令屬于此資源。接著,找出特定渲染指令屬于的資源,并保留屬于此資源的輸入指令,刪除其余的輸入指令。最后,最佳化所保留的輸入指令。
上述的簡化繪圖系統(tǒng)的腳本文件的方法,在一實(shí)施例中還包括找出所保留的輸入指令使用的多個(gè)著色器(shader),并刪除所保留的輸入指令之中的渲染指令未使用到的著色器的指令。
上述的簡化繪圖系統(tǒng)的腳本文件的方法,在一實(shí)施例中還包括比較所保留的輸入指令所相關(guān)的多個(gè)狀態(tài),并保留最新的狀態(tài),其中這些狀態(tài)包含渲染狀態(tài)、紋理階層狀態(tài)、以及著色器常量三者之任一。
上述的簡化繪圖系統(tǒng)的腳本文件的方法,在一實(shí)施例中在找出特定指令屬于的這些資源,并保留屬于這些資源的輸入指令的步驟中,還包括找出所保留的輸入指令之中的渲染指令屬于的這些資源,并保留屬于這些資源的輸入指令。
上述的簡化繪圖系統(tǒng)的腳本文件的方法,在一實(shí)施例中在最佳化所保留的輸入指令步驟中,包括在所保留的輸入指令之中找出會(huì)更改整個(gè)資源內(nèi)容的任一輸入指令,以及刪除位于被找出的輸入指令之前且與被找出的輸入指令屬于同一資源的輸入指令。
從另一觀點(diǎn)來看,本發(fā)明又提出一種簡化繪圖系統(tǒng)的腳本文件的系統(tǒng)。此簡化系統(tǒng)包括記錄器、簡化器、以及播放器。記錄器用以將繪圖系統(tǒng)的多個(gè)輸入指令記錄為腳本文件。簡化器用以將腳本文件所包含的輸入指令分類,并依據(jù)特定渲染指令來簡化腳本文件。播放器用以獲取并語法分析簡化的腳本文件的每一個(gè)輸入指令,以播放簡化的腳本文件所包含的輸入指令。
上述的簡化繪圖系統(tǒng)的腳本文件的系統(tǒng),在一實(shí)施例中簡化器包括指令分類模塊、指令分析模塊、以及指令消除模塊。指令分類模塊用以將會(huì)改變紋理或緩沖器的內(nèi)容的每一個(gè)輸入指令分類至其所屬的資源,并稱其屬于這些資源。指令分析模塊用以找出特定渲染指令屬于的這些資源,并保留屬于這些資源的輸入指令,刪除其余的輸入指令。指令消除模塊用以從保留的輸入指令中找出會(huì)更改整個(gè)資源內(nèi)容的任一輸入指令,刪除被找出的輸入指令之前且與被找出的輸入指令屬于同一資源的輸入指令。
上述的簡化繪圖系統(tǒng)的腳本文件的系統(tǒng),在一實(shí)施例中簡化器還包括著色器消除模塊。著色器消除模塊用以找出保留的輸入指令所使用的多個(gè)著色器(shader),并刪除保留的輸入指令中的渲染指令未使用到的著色器的指令。
上述的簡化繪圖系統(tǒng)的腳本文件的系統(tǒng),在一實(shí)施例中簡化器還包括比較分析模塊。比較分析模塊用以比較保留的輸入指令中的渲染指令所相關(guān)的多個(gè)狀態(tài),并保留最新的該些狀態(tài),其中這些狀態(tài)包含渲染狀態(tài)、紋理階層狀態(tài)、以及著色器常量三者之任一。
本發(fā)明因采用一種簡化器自動(dòng)地對包含繪圖系統(tǒng)的多個(gè)輸入指令的腳本文件進(jìn)行簡化,通過將輸入指令分類至其所屬的資源、找出特定渲染指令屬于的這些資源及保留屬于這些資源的所有指令、以及將保留的輸入指令最佳化的各步驟,僅保留特定渲染指令所影響到的輸入指令,以能針對有問題的渲染分析及除錯(cuò),亦能減少運(yùn)轉(zhuǎn)不必要指令的時(shí)間,大大增進(jìn)開發(fā)程序的效率。
為讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉本發(fā)明的較佳實(shí)施例,并配合所附圖式,作詳細(xì)說明如下。
圖1繪示為本發(fā)明的一實(shí)施例的簡化繪圖系統(tǒng)的腳本文件的系統(tǒng)。
圖2繪示為本發(fā)明實(shí)施例圖1中簡化器的方塊圖。
圖3繪示為本發(fā)明的另一實(shí)施例的簡化繪圖系統(tǒng)的腳本文件的方法。
101記錄器102簡化器103播放器201指令分類模塊202指令分析模塊203指令消除模塊204著色器消除模塊205比較分析模塊S301~S304本發(fā)明的一實(shí)施例的簡化繪圖系統(tǒng)的腳本文件的方法的步驟具體實(shí)施方式
圖1繪示為本發(fā)明的一實(shí)施例的簡化繪圖系統(tǒng)的腳本文件的系統(tǒng),此實(shí)施例以在三維圖形中的應(yīng)用進(jìn)行詳述,但本發(fā)明并不限于此。請參照圖1,此簡化系統(tǒng)100包含記錄器101、簡化器102、以及播放器103。記錄器101為將繪圖系統(tǒng)的多個(gè)輸入指令記錄為腳本文件。由簡化器102自動(dòng)地掃描此腳本文件,并從腳本文件之中找出及保留會(huì)影響有問題的渲染的輸入指令,刪除其余輸入指令(細(xì)節(jié)后述)。其中有問題的渲染為特定渲染指令所造成之。
在簡化器102將腳本文件簡化后,傳送簡化的腳本文件至播放器103,由播放器103獲取并語法分析簡化的腳本文件所包含的輸入指令,以重新播放簡化的腳本文件的渲染程序。由于此簡化的腳本文件僅包含影響有問題的渲染的輸入指令,因此節(jié)省了播放器103運(yùn)轉(zhuǎn)不必要輸入指令的時(shí)間,亦能有效的對有問題的渲染進(jìn)行分析及除錯(cuò)。
以下便詳細(xì)說明簡化器102依據(jù)腳本文件所包含的輸入指令來進(jìn)行簡化的過程。圖2繪示為本發(fā)明實(shí)施例圖1中簡化器102的方塊圖。請參照圖2,簡化器102包括指令分類模塊201、指令分析模塊202、指令消除模塊203、著色器消除模塊204以及比較分析模塊205。當(dāng)指令分類模塊201接收到記錄器101所記錄的腳本文件后,將會(huì)改變紋理或者緩沖器(例如頂點(diǎn)緩沖器、頂點(diǎn)索引緩沖器)的內(nèi)容的每一個(gè)輸入指令分類至其所屬的資源,亦可稱此輸入指令為屬于這些資源。其中會(huì)改變紋理或者緩沖器的內(nèi)容為包括渲染、紋理或緩沖器的加載、清除、從其一紋理轉(zhuǎn)換(blt)至另一紋理...等處理。
另外,舉例來說,由于特定渲染指令可能會(huì)用到可渲染的紋理(render-able texture),而可渲染的紋理內(nèi)容為由特定渲染指令之前的輸入指令(稱之為先前輸入指令)所決定,因此必須保留這些相關(guān)的先前輸入指令。而指令分析模塊202即為找出特定渲染指令所屬于的這些資源,并且將屬于這些資源的輸入指令保留下來。值得一提的是,假使所保留的輸入指令中具有渲染指令,則找出所保留的輸入指令之中的渲染指令屬于的資源,亦保留屬于這些資源的輸入指令。
接著由指令消除模塊203來最佳化所保留的輸入指令。此最佳化的過程為從所保留的輸入指令中找出會(huì)更改整個(gè)資源內(nèi)容的任一輸入指令,并刪除被找出的輸入指令之前與被找出的輸入指令屬于同一資源的輸入指令。由于被找出的輸入指令會(huì)更改整個(gè)資源內(nèi)容(例如紋理或緩沖器的加載、清除...等),因此無須保留被找出的輸入指令之前的輸入指令。
此外,著色器消除模塊204會(huì)找出所保留的輸入指令使用到的著色器(shader),并且刪除所保留的輸入指令之中的渲染指令未使用到的著色器的創(chuàng)建指令。由于在重新播放腳本文件的渲染程序中,著色器不同于資源,一旦創(chuàng)建了便不會(huì)改變,只須判斷是否需要使用著色器,因此將所保留的輸入指令之中的渲染指令未使用到的著色器的創(chuàng)建指令刪除。而比較分析模塊205為將所保留的輸入指令中的渲染指令所相關(guān)的狀態(tài)做比較,以保留最新的狀態(tài)。而這些狀態(tài)為渲染狀態(tài)(例如光罩是否打開、霧狀是否打開、視角位置...等)、紋理階層狀態(tài)、著色器常量其中之一。
如上述實(shí)施例的說明,在此可以歸納為下列的方法流程。圖3繪示為本發(fā)明的另一實(shí)施例的簡化繪圖系統(tǒng)的腳本文件的方法。請參照圖3,首先,簡化器102接收腳本文件(步驟S301),此腳本文件由記錄器101所記錄之,且包含繪圖系統(tǒng)的多個(gè)輸入指令。而簡化器102將會(huì)改變紋理或者緩沖器的內(nèi)容的輸入指令分類至其所屬的資源(步驟S302),且稱其為屬于此資源。接著,簡化器102依據(jù)特定渲染指令,找出此特定渲染指令屬于的資源,并保留腳本文件中屬于這些資源的輸入指令,刪除其余輸入指令(步驟S303)。最后再最佳化所保留的輸入指令(步驟S304)。
綜上所述,本發(fā)明實(shí)施例為通過簡化器將包含繪圖系統(tǒng)的多個(gè)輸入指令的腳本文件簡化,得以保留特定渲染指令所影響到的輸入指令,并刪除其余的輸入指令。假使保留的輸入指令中具有渲染指令,還可從腳本文件中刪除渲染指令未使用到的著色器的創(chuàng)建指令加以簡化,或者比較這些渲染指令相關(guān)的狀態(tài),僅保留最新狀態(tài)即可。因此,通過簡化的腳本文件,得以針對有問題的渲染進(jìn)行分析及除錯(cuò),而在重新播放簡化的腳本文件的渲染程序過程中,更可節(jié)省運(yùn)轉(zhuǎn)不必要指令的時(shí)間,以及提升開發(fā)程序的效率。
雖然本發(fā)明已以較佳實(shí)施例揭露如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的更動(dòng)與潤飾,因此本發(fā)明的保護(hù)范圍當(dāng)視所附的權(quán)利要求范圍所界定者為準(zhǔn)。
權(quán)利要求
1.一種簡化繪圖系統(tǒng)的腳本文件的方法,包括下列步驟接收腳本文件,其中該腳本文件包含多個(gè)輸入指令;將每一該些輸入指令分類至資源,并稱其屬于該資源;找出特定指令屬于的該資源,并保留屬于該資源的該些輸入指令,刪除其余的輸入指令;以及最佳化所保留的該些輸入指令。
2.根據(jù)權(quán)利要求1所述的簡化繪圖系統(tǒng)的腳本文件的方法,其中,該些輸入指令為會(huì)改變紋理或緩沖器的內(nèi)容的指令,以及該特定指令為渲染指令。
3.根據(jù)權(quán)利要求1所述的簡化繪圖系統(tǒng)的腳本文件的方法,還包括下列步驟找出保留的該些輸入指令所使用的多個(gè)著色器,并刪除所保留的該些輸入指令之中的渲染指令未使用的該些著色器的指令;以及比較所保留的該些輸入指令所相關(guān)的多個(gè)狀態(tài),并保留最新的該些狀態(tài)。
4.根據(jù)權(quán)利要求4所述的簡化繪圖系統(tǒng)的腳本文件的方法,其中該些狀態(tài)包含渲染狀態(tài)、紋理階層狀態(tài)、以及著色器常量三者之任一。
5.根據(jù)權(quán)利要求1所述的簡化繪圖系統(tǒng)的腳本文件的方法,其中找出該特定指令屬于的該資源,并保留屬于該資源的該些輸入指令,還包括下列步驟找出所保留的該些輸入指令中的指令屬于的該些資源,并保留屬于該些資源的該些輸入指令。
6.根據(jù)權(quán)利要求1所述的簡化繪圖系統(tǒng)的腳本文件的方法,其中最佳化所保留的該些輸入指令包括下列步驟于所保留的該些輸入指令中找出會(huì)更改整個(gè)資源內(nèi)容的任一輸入指令;以及刪除位于被找出的該輸入指令之前且與被找出的輸入指令屬于同一資源的該些輸入指令。
7.一種簡化繪圖系統(tǒng)的腳本文件的系統(tǒng),包括記錄器,用以將繪圖系統(tǒng)的多個(gè)輸入指令記錄為腳本文件;簡化器,用以將該腳本文件所包含的該些輸入指令分類,并依據(jù)特定指令簡化該腳本文件;以及播放器,用以獲取并語法分析簡化的該腳本文件的每一該些輸入指令,以播放簡化的該腳本文件所包含的該些輸入指令。
8.根據(jù)權(quán)利要求7所述的簡化繪圖系統(tǒng)的腳本文件的系統(tǒng),其中該簡化器包括指令分類模塊,用以將每一該些輸入指令分類至其所屬的資源,并稱其屬于該資源;指令分析模塊,用以找出特定指令屬于的該資源,并保留屬于該資源的該些輸入指令,刪除其余的輸入指令;以及指令消除模塊,用以從所保留的該些輸入指令中找出會(huì)更改整個(gè)資源內(nèi)容的任一輸入指令,刪除位于被找出的該輸入指令之前且與被找出的輸入指令屬于同一資源的該些輸入指令。
9.根據(jù)權(quán)利要求8所述的簡化繪圖系統(tǒng)的腳本文件的系統(tǒng),其中該些輸入指令為會(huì)改變紋理或緩沖器的內(nèi)容的指令,以及該特定指令為渲染指令。
10.根據(jù)權(quán)利要求7所述的簡化繪圖系統(tǒng)的腳本文件的系統(tǒng),其中該簡化器還包括著色器消除模塊,用以找出保留的該些輸入指令所使用的多個(gè)著色器,并刪除保留的該些輸入指令中的指令未使用的該些著色器的指令;以及比較分析模塊,用以比較所保留的該些輸入指令所相關(guān)的多個(gè)狀態(tài),并保留最新的該些狀態(tài)。
11.根據(jù)權(quán)利要求10所述的簡化繪圖系統(tǒng)的腳本文件的系統(tǒng),其中該些狀態(tài)包含渲染狀態(tài)、紋理階層狀態(tài)、以及著色器常量三者之任一。
全文摘要
在此提出一種簡化繪圖系統(tǒng)的腳本文件的方法及其系統(tǒng)。首先,接收腳本文件,而此腳本文件包含繪圖系統(tǒng)的多個(gè)輸入指令。接著,將每一個(gè)輸入指令分類至資源,且稱其屬于該資源。然后,找出特定指令屬于的該資源,并且保留屬于該資源的該些輸入指令,刪除其余的輸入指令。最后,最佳化所保留的該些輸入指令。
文檔編號(hào)G06T15/00GK101038663SQ20071010327
公開日2007年9月19日 申請日期2007年5月10日 優(yōu)先權(quán)日2007年5月10日
發(fā)明者馮超 申請人:威盛電子股份有限公司