繪圖方法及其裝置的製作方法
2023-06-08 14:10:01
專利名稱:繪圖方法及其裝置的製作方法
技術領域:
本發明有關於繪圖方法,且特別有關於一種用於使用者定義剪裁平面(User-Defined Clip Plane,UDCP)的繪圖方法及其裝置。
背景技術:
在空間中,不同的多邊形將會投影至一投影平面,如投影平面來在屏幕上進行顯示。當多個多邊形同時投影至投影平面上的相同屏幕像素時,則距離投影平面最近的,即距離視點最近的多邊形將會顯示於投影平面上。圖1為一示意圖,其表示一Z-緩存器(Z-Buffer)原理。Z-緩存器用以比較空間中多邊形投影於屏幕像素時距離投影平面的遠近。如圖1表示,空間中有三個多邊形(101、102與103),其中多邊形(101、102與103)上分別的像素點(I、J與K)將同時投影落在投影平面100的像素(x,y)上。將(x,y)分別代入多邊形(101、102與103)的平面方程式,可以分別得到多邊形(101、102與103)至投影平面100的距離,即Z值。通過比較每一平面的Z值,可以發現多邊形101距離投影平面100最近,因此,投影平面100的像素(x,y)上必須顯示多邊形101上像素點I的顏色。
此外,在繪圖設計中,使用者可以自行定義特定的剪裁平面來檢查在不同剖面下的物體結構,或是限制物體的繪製範圍。舉例來說,圖2表示一3D矩形200。當一矩形200被一前向(Face Forward)的使用者定義剪裁平面300切過時,如圖3所示,則矩形200被切割為使用者定義剪裁平面300前可檢查的一部分210與使用者定義剪裁平面300後無法檢查的一部分220。注意的是,前向使用者定義剪裁平面表示剪裁平面前的物體可以被檢查,而剪裁平面後的物體無法檢查。而後向(Face Backward)使用者定義剪裁平面表示剪裁平面後的物體可以被檢查,而剪裁平面前的物體無法檢查。
對於一欲繪製的三角形而言,公知方法必須計算三角形的每一頂點至使用者定義剪裁平面的距離。再利用每一頂點至使用者定義剪裁平面的距離來內插得到三角形中每一像素點至使用者定義剪裁平面的距離。最後,若像素點至使用者定義剪裁平面的距離為負值,即代表此像素點位於使用者定義剪裁平面的反側,則此像素點被丟棄,不被繪製。圖4為一示意圖,其表示公知用於使用者定義剪裁平面的繪圖方法。如圖所示,若一三角形包括A、B與C三個頂點,則可以分別依據A、B與C至使用者定義剪裁平面UDCP的距離dA、dB與dC來計算像素間的單位距離差(dx與dy),並利用單位距離與頂點位置來內插得到每一像素點(P1、P2與Pk)至使用者定義剪裁平面UDCP的距離。在此例子中,假設使用者定義剪裁平面UDCP為一正向剪裁平面,則像素點P1與P2將會被繪製。另外,由於像素點Pk至使用者定義剪裁平面UDCP的距離為負值,則像素點Pk將不會被繪製。
在公知繪圖過程中,由於每一頂點與內部像素點的值都必須分別計算其至投影平面與使用者定義剪裁平面的距離,當同時具有多個使用者定義剪裁平面時,則必須花費許多資源來進行相關計算,從而降低整體繪圖程序的效率。
發明內容
有鑑於此,本發明提供一種用於使用者定義剪裁平面的繪圖方法及其裝置。
依據本發明實施例的繪圖方法,首先,計算一使用者定義剪裁平面至一投影平面的距離,並依據該距離設定一緩存器。計算一三角形的頂點至投影平面的距離,並依據頂點至投影平面的距離計算三角形中一像素點至投影平面的距離。將像素點至投影平面的距離與緩存器中相應的一值進行對比。若像素點至投影平面的距離大於緩存器中的值時,不繪製像素點。
依據本發明實施例的繪圖方法,首先,計算一第一使用者定義剪裁平面至一投影平面的距離,並依據距離設定一第一緩存器,並計算一第二使用者定義剪裁平面至投影平面的距離,並依據距離設定一第二緩存器。之後,計算一三角形的多個頂點至投影平面的距離,並依據頂點至投影平面的距離計算三角形中一像素點至投影平面的距離。將像素點至投影平面的距離與第一緩存器中相應的一第一值進行對比。若像素點至投影平面的距離大於第一緩存器中的第一值時,不繪製像素點。將像素點至投影平面的距離與第二緩存器中相應的一第二值進行對比。若像素點至投影平面的距離小於第二緩存器中的第二值時,不繪製像素點本發明上述方法可以通過程序代碼方式收錄於實體媒體中。當程序代碼被機器加載且執行時,機器變成用以實行本發明的裝置。
為使本發明的上述目的、特徵和優點能更明顯易懂,下文特舉實施例,並配合附圖,進行詳細說明如下。
圖1為一示意圖,其表示一Z-緩存器原理。
圖2表示一3D矩形。
圖3表示圖2中被一使用者定義剪裁平面切過的3D矩形。
圖4為一示意圖,其表示公知用於使用者定義剪裁平面的繪圖方法。
圖5為一示意圖,其表示依據本發明實施例的裝置。
圖6為一流程圖,其表示依據本發明實施例的繪圖方法。
符號說明100-投影平面;101、102、103-多邊形;I、J、K-像素點;200-矩形;210-可檢查矩形;220-不可檢查矩形;300、UDCP-使用者定義剪裁平面;A、B、C-頂點;P1、P2、Pk-像素點;dA、dB、dC-距離;500-裝置;510-頂點著色引擎;520-裝配引擎;530-原始引擎;540-像素著色引擎;550-突發引擎;S601、S602、…、S610-操作步驟。
具體實施例方式
圖5為一示意圖,其表示依據本發明實施例的裝置。
依據本發明實施例的裝置500包括一頂點著色引擎(Vertex ShaderEngine,VSE)510、一裝配引擎(Setup Engine,SE)520、一原始引擎(PrimitiveEngine,PE)530、一像素著色引擎(Pixel Shader Engine,PSE)540、與一突發引擎(Burst Engine,BE)550。
頂點著色引擎510計算物體中每一三角形的頂點至一投影平面的距離。頂點著色引擎510亦計算物體中每一三角形的頂點至所有使用者定義剪裁平面的距離。值得注意的是,頂點著色引擎510可以通過計算一三角形的頂點至使用者定義剪裁平面的距離的一正負號位符號位(Sign Bit),並依據每一頂點分別相應的正負號位符號位判斷是否繪製三角形。在一實施例中,當一三角形中所有頂點所相應的正負號位符號位都是負值時,則此三角形可以忽略,不進行後續處理。裝配引擎520依據三角形的頂點至投影平面的距離計算三角形中像素間的單位距離差(dx與dy)。原始引擎530利用單位距離差與頂點位置來內插得到三角形中每一像素點至投影平面的距離。像素著色引擎540用以將像素點至投影平面的距離與兩緩存器中的值進行對比,以過濾出一些不需要繪製的像素點。突發引擎550則將剩下的像素點進行繪製。值得注意的是,在完整的繪圖裝置中,頂點著色引擎510、裝配引擎520、原始引擎530、像素著色引擎540與突發引擎550亦各自具有其它功能與操作,並不限定於此。
另外,兩緩存器包括一近平面(Near Plane)緩存器與一遠平面(Far Plane)緩存器(圖5中未表示)。在一實施例中,近平面緩存器與遠平面緩存器的大小等於屏幕的大小。近平面緩存器依據後向的使用者定義剪裁平面至投影平面的距離來設定。當有多個後向的使用者定義剪裁平面時,則近平面緩存器中相應投影平面中一投影像素的值可以設定為距離投影平面最遠的使用者定義剪裁平面上相應的像素點的距離。遠平面緩存器依據前向的使用者定義剪裁平面至投影平面的距離來設定。當有多個前向的使用者定義剪裁平面時,則遠平面緩存器中相應投影平面中一投影像素的值可以設定為距離投影平面最近的使用者定義剪裁平面上相應的像素點的距離。值得注意的是,在繪圖過程中,遠平面緩存器即為Z-緩存器,換言之,遠平面緩存器將會依據Z-緩存器原理進行更新,Z-緩存器原理的細節在此省略。
圖6為一流程圖,其表示依據本發明實施例的繪圖方法。注意的是,在此實施例中僅以一物體的一三角形進行說明。物體的其它三角形可以依據相同方式進行操作與運算。
首先,如步驟S601,依據使用者定義剪裁平面設定近平面與遠平面緩存器。其中,近平面緩存器依據後向的使用者定義剪裁平面至投影平面的距離來設定。當有多個後向的使用者定義剪裁平面時,則近平面緩存器中相應投影平面中一投影像素的值可以設定為距離投影平面最遠的使用者定義剪裁平面上相應的像素點的距離。注意的是,當沒有後向的使用者定義剪裁平面時,則近平面緩存器中的值可以設定為0。另外,遠平面緩存器依據前向的使用者定義剪裁平面至投影平面的距離來設定。當有多個前向的使用者定義剪裁平面時,則遠平面緩存器中相應投影平面中一投影像素的值可以設定為距離投影平面最近的使用者定義剪裁平面上相應的像素點的距離。注意的是,當沒有前向的使用者定義剪裁平面時,則遠平面緩存器中的值可以設定為1。
如步驟S602,分別計算三角形的頂點至投影平面與每一使用者定義剪裁平面的距離。注意的是,計算頂點至使用者定義剪裁平面的距離可以是計算該距離的正負號位符號位。之後,如步驟S603,判斷頂點至使用者定義剪裁平面的距離是否都是負值。換言之,判斷頂點是否都位於前向的使用者定義剪裁平面之後,或是後向的使用者定義剪裁平面之前。若是,如步驟S604,丟棄此三角形,不進行繪製。若否,如步驟S605,依據頂點至投影平面的距離利用內插法計算三角形中每一像素點至投影平面的距離。針對每一像素點,如步驟S606,判斷像素點至投影平面的距離是否大於遠平面緩存器中相應的值。若是,如步驟S607,丟棄此像素點,不進行繪製。若否,如步驟S608,判斷像素點至投影平面的距離是否小於近平面緩存器中相應的值。若是,如步驟S607,丟棄此像素點,不進行繪製。若否,如步驟S609,判斷是否三角形中所有的像素點都已經檢查過。若否,流程回到步驟S606,繼續檢查另一個像素點。若是,如步驟S610,繪製三角形中剩餘的像素點。值的注意的是,在繪圖過程中,遠平面緩存器將會依據Z-緩存器原理進行更新,且依據Z-緩存器原理,投影至相同投影像素的不同像素點中,最靠近投影平面的像素點會被繪製。
本發明的方法與系統,或特定類型或其中部份,可以以程序代碼的類型包含於實體媒體,如軟盤、光碟、硬碟、或是任何其它機器可讀取(如計算機可讀取)儲存媒體,其中,當程序代碼被機器,如計算機加載且執行時,此機器變成用以參與本發明的裝置。本發明的方法與裝置也可以以程序代碼類型通過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸類型進行傳送,其中,當程序代碼被機器,如計算機接收、加載且執行時,此機器變成用以參與本發明的裝置。當在一般用途處理器實用時,程序代碼結合處理器提供一操作類似於應用特定邏輯電路的獨特裝置。
本發明雖以優選實施例公開如上,然其並非用以限定本發明,任何本領域技術人員,在不脫離本發明的精神和範圍的情況下,可進行更動與修改,因此本發明的保護範圍以所提出的權利要求所限定的範圍為準。
權利要求
1.一種繪圖方法,包括下列步驟計算一第一使用者定義剪裁平面至一投影平面的距離,並依據該距離設定一第一緩存器;計算一第一三角形的多個頂點至該投影平面的距離,並依據該多個頂點至該投影平面的距離計算該第一三角形中一第一像素點至該投影平面的距離;將該第一像素點至該投影平面的距離與該第一緩存器中相應的一第一值進行對比;以及若該第一像素點至該投影平面的距離大於該第一緩存器中的該第一值時,不繪製該第一像素點。
2.如權利要求1所述的繪圖方法,還包括下列步驟計算一第二使用者定義剪裁平面至該投影平面的距離,並依據該距離設定一第二緩存器;將該第一像素點至該投影平面的距離與該第二緩存器中相應的一第二值進行對比;以及若該第一像素點至該投影平面的距離小於該第二緩存器中的該第二值時,不繪製該第一像素點。
3.如權利要求1所述的繪圖方法,還包括下列步驟計算每一該多個頂點至該第一使用者定義剪裁平面的距離;以及若每一該多個頂點至該第一使用者定義剪裁平面的距離皆為負值時,不繪製該第一三角形。
4.如權利要求3所述的繪圖方法,其中計算每一該多個頂點至該第一使用者定義剪裁平面的距離計算每一該多個頂點至該第一使用者定義剪裁平面的距離的一正負號位符號位,並依據每一該多個頂點分別相應的該正負號位符號位判斷是否繪製該第一三角形。
5.如權利要求1所述的繪圖方法,還包括依據該多個頂點至該投影平面的距離利用一內插法計算該第一像素點至該投影平面的距離。
6.如權利要求1所述的繪圖方法,還包括計算一第二三角形的多個頂點至該投影平面的距離,並依據該多個頂點至該投影平面的距離計算該第二三角形中至少一第二像素點至該投影平面的距離;以及若該第二像素點至該投影平面的距離小於該第一緩存器中相應的該第一值時,將該第一值設定為該第二像素點至該投影平面的距離。
7.一種繪圖方法,包括下列步驟計算一第一使用者定義剪裁平面至一投影平面的距離,並依據該距離設定一第一緩存器;計算一第二使用者定義剪裁平面至該投影平面的距離,並依據該距離設定一第二緩存器;計算一第一三角形的多個頂點至該投影平面的距離,並依據該多個頂點至該投影平面的距離計算該第一三角形中一第一像素點至該投影平面的距離;將該第一像素點至該投影平面的距離與該第一緩存器中相應的一第一值進行對比;若該第一像素點至該投影平面的距離大於該第一緩存器中的該第一值時,不繪製該第一像素點。將該第一像素點至該投影平面的距離與該第二緩存器中相應的一第二值進行對比;以及若該第一像素點至該投影平面的距離小於該第二緩存器中的該第二值時,不繪製該第一像素點。
8.如權利要求7所述的繪圖方法,還包括下列步驟計算每一該多個頂點至該第一使用者定義剪裁平面的距離;以及若每一該多個頂點至該第一使用者定義剪裁平面的距離皆為負值時,不繪製該第一三角形。
9.如權利要求8所述的繪圖方法,其中計算每一該多個頂點至該第一使用者定義剪裁平面的距離計算每一該多個頂點至該第一使用者定義剪裁平面的距離的一正負號位符號位,並依據每一該多個頂點分別相應的該正負號位符號位判斷是否繪製該第一三角形。
10.如權利要求7所述的繪圖方法,還包括下列步驟計算一第二三角形的多個頂點至該投影平面的距離,並依據該多個頂點至該投影平面的距離計算該第二三角形中至少一第二像素點至該投影平面的距離;以及若該第二像素點至該投影平面的距離小於該第一緩存器中相應的該第一值時,將該第一值設定為該第二像素點至該投影平面的距離。
11.一種繪圖裝置,包括一第一裝置,用以計算一第一使用者定義剪裁平面至一投影平面的距離,並依據該距離設定一第一緩存器;一第二裝置,用以計算一第一三角形的多個頂點至該投影平面的距離,並依據該多個頂點至該投影平面的距離計算該第一三角形中一第一像素點至該投影平面的距離;以及一第三裝置,用以將該第一像素點至該投影平面的距離與該第一緩存器中相應的一第一值進行對比,且若該第一像素點至該投影平面的距離大於該第一緩存器中的該第一值時,不繪製該第一像素點。
12.如權利要求11所述的繪圖裝置,還包括一第四裝置,用以計算一第二使用者定義剪裁平面至該投影平面的距離,並依據該距離設定一第二緩存器;以及一第五裝置,用以將該第一像素點至該投影平面的距離與該第二緩存器中相應的一第二值進行對比,且若該第一像素點至該投影平面的距離小於該第二緩存器中的該第二值時,不繪製該第一像素點。
13.如權利要求11所述的繪圖裝置,還包括一第六裝置,用以計算每一該多個頂點至該第一使用者定義剪裁平面的距離;以及一第七裝置,用以若每一該多個頂點至該第一使用者定義剪裁平面的距離皆為負值時,不繪製該第一三角形。
14.如權利要求11所述的繪圖裝置,還包括一第八裝置,用以計算一第二三角形的多個頂點至該投影平面的距離,並依據該多個頂點至該投影平面的距離計算該第二三角形中至少一第二像素點至該投影平面的距離;以及一第九裝置,用以若該第二像素點至該投影平面的距離小於該第一緩存器中相應的該第一值時,將該第一值設定為該第二像素點至該投影平面的距離。
全文摘要
一種繪圖方法。首先,計算一使用者定義剪裁平面至一投影平面的距離,並依據該距離設定一緩存器。計算一三角形的頂點至投影平面的距離,並依據頂點至投影平面的距離計算三角形中一像素點至投影平面的距離。將像素點至投影平面的距離與緩存器中相應的一值進行對比。若像素點至投影平面的距離大於緩存器中的值時,不繪製像素點。
文檔編號G06T15/10GK1687971SQ20051007384
公開日2005年10月26日 申請日期2005年5月25日 優先權日2005年5月25日
發明者宋廉祥 申請人:威盛電子股份有限公司