國立中山大學資訊工程學系...

108
國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中 OpenGL-ES 2.0 頂點處理器 之高效能裁切引擎設計 Design of an Efficient Clipping Engine for OpenGL-ES 2.0 Vertex Shaders in 3D Graphics Systems 研究生:林耿賢 指導教授:蕭勝夫 教授 中華民國 九十八

Transcript of 國立中山大學資訊工程學系...

Page 1: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

國立中山大學資訊工程學系

碩士論文

應用於三維繪圖系統中 OpenGL-ES 2.0 頂點處理器

之高效能裁切引擎設計

Design of an Efficient Clipping Engine for OpenGL-ES 2.0

Vertex Shaders in 3D Graphics Systems

研究生:林耿賢 撰

指導教授:蕭勝夫 教授

中華民國 九十八 年 八 月

Page 2: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES
Page 3: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

畢業學年度 97

學期 2

校院 國立中山大學

系所 資訊工程學系

論文名稱(中) 應用於三維繪圖系統中 OpenGL-ES 2.0 頂點處理器 之高效能裁切引擎設計

論文名稱(英) Design of an Efficient Clipping Engine for OpenGL-ES 2.0 Vertex Shaders in 3D Graphics Systems

學位名稱(中) 碩士

語文別 中文

學號 M963040014

提要開放使用 是

頁數 95

研究生(中)姓 林

研究生(中)名 耿賢

研究生(英)姓 Lin

研究生(英)名 Keng-Hsien

指導教授(中)姓名 蕭勝夫

指導教授(英)姓名 Shen-Fu Hsiao

關鍵字(中) 裁切演算法, 三維繪圖, OpenGL-ES, 頂點處理器

關鍵字(英) Clipping algorithm, 3D graphics, OpenGL-ES, Vertex Shader

Page 4: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

致謝

人生,往往在預想的道路上,發生意想不到的衝擊。

而在這些來不及反應的變化下,很多決定影響了未來幾年的發展與生活型

態。從推薦甄試備取最後一名來到中山,選了蕭老師為指導教授,開始在西子灣

研究生活的兩年。熟悉新的環境,認識新的朋友,一直認為這些都是來自幸運決

定的福氣。在高雄生活的兩年中,為生活加註了一段美好的回憶,而不論在專業

領域,待人處事,感情處理等等方面也都獲得許多,有一起奮鬥作業與研究,一

同嘻鬧的夥伴,分享著許多喜怒哀樂,這些都是很棒的記憶。

感謝老師,在研究上的指導,一直有耐心地教育著。而能與實驗室的大家

相識相聚是種緣份,在此感謝每位實驗室的學長姐與學弟妹們,以及其他實驗室

和外系的同學。跟大家一起討論課業,到不同實驗室詢問研究上的瓶頸,經由提

點與幫助才發現問題所在,也才能順利的完成論文。謝謝這些日子以來陪著我的

大家,也祝福你們,珍惜現在所擁有的美好時光和環境,就不會有遺憾。

感謝家人,幾乎每兩三週就來中山探望,在低潮和困頓時的鼓勵與陪伴,

讓我更有動力去克服不同的挑戰, 面對更多不同的難題。隨著生活發生許多大

大小小的事情,與你們的容忍和支持,我學了很多,成長了很多。

能夠有你們,是我生命中緣份與福氣。

Page 5: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

中文摘要

電腦圖學於三維繪圖的流程中,可分為兩大繪圖處理模組:幾何運算子系

統( Geometry System )和著色子系統( Rendering System )。在幾何運算子系統中,

包含頂點座標轉換( Transformation )、頂點光源計算( Lighting )、刪除背面元件

( Backface-culling )、Outcode 判斷( Pre-clipping )、裁切運算功能( Clipping )。裁

切運算功能可將超出可視範圍外的物件作裁切的動作,可有效地提升繪圖流程的

效能。而在硬體方面,由於裁切演算法的循序性,加入裁切硬體於幾何運算子系

統中往往是設計上的瓶頸。

本論文主要實現 Dual-path 裁切引擎為支援 OpenGL-ES 2.0 規格,置於頂點

處理器後方處理三角形的輸出。加入該裁切硬體於幾何運算系統中,可使整體三

維繪圖流程減少許多不必要的運算,能讓執行繪圖的過程更有效率。對於裁切硬

體中所需求交點的內插運算,本論文利用 pipeline 與共用硬體設計的概念,改善

求交點硬體的面積與執行效能。對於裁切演算法的設計,本論文中提出兩點輸入

/輸出的裁切演算法,讓使用者能依照不同的成本需求,在裁切系統硬體的應用

上有更多的選擇。

關鍵詞︰ 裁切演算法, 三維繪圖, OpenGL-ES, 頂點處理器

Page 6: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

II

Abstract

In computer graphics technique, the 3D graphic pipeline flow has two processing

modules: Geometry module and Rendering module. The geometry module supports

vertex coordinate transformation, vertex lighting computation, backface-culling,

pre-clipping, and clipping functions. Clipping module clips the outside part of objects

by view volume boundaries. Adding clipping module into geometry module will make

3D graphics pipeline flow more efficiency. Due to the sequential parsing nature of

clipping, it causes the challenges to implement clipping function in hardware design.

This paper implements a dual-path clipping engine placed after the Vertex

Shader in geometry module and supports OpenGL-ES 2.0 specification. With the

clipping engine, it reduces the unnecessary operations in 3D graphics pipeline flow

and makes the performance efficient. The pipelined and shared hardware design is

proposed to improve the area cost and throughput of the interpolation operation in

clipping engine. The two vertices in/out clipping method is proposed in this paper.

Users have more different choices of clipping algorithms for hardware

implementation with respect to the performance and hardware limitation.

Keyword: Clipping algorithm, 3D graphics, OpenGL-ES, Vertex Shader.

Page 7: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

III

目錄 頁

第 1 章 概論 .............................................................................................................. 1

1.1 本文大綱............................................................................................... 1

1.2 研究動機............................................................................................... 1

1.3 研究貢獻............................................................................................... 3

第 2 章 研究背景與相關研究 .................................................................................. 4

2.1 電腦圖學與 OpenGL-ES 簡介............................................................. 4

2.2 幾何子系統........................................................................................... 8

2.2.1 支援運算功能................................................................................ 9

2.2.2 硬體模組架構設計...................................................................... 12

2.3 頂點處理器......................................................................................... 14

2.3.1 指令格式設計.............................................................................. 15

2.3.2 SIMD 硬體架構設計................................................................... 17

第 3 章 裁切演算法與硬體架構設計 .................................................................... 21

3.1 Pre-clipping 演算法 ............................................................................ 21

3.2 Clipping 演算法.................................................................................. 27

3.3 修改版本 SH 演算法 (Modified SH Algorithm) .............................. 33

3.4 改善修改版本 SH 演算法 (Improved Modified SH Algorithm) ...... 37

3.5 兩點輸入/輸出裁切演算法 (Proposed Clipping Algorithm) ........... 39

第 4 章 於頂點處理器中支援裁切功能 ................................................................ 48

4.1 使用指令集格式................................................................................. 48

4.2 所支援運算功能................................................................................. 49

4.3 使用之硬體架構................................................................................. 50

4.4 以頂點處理器支援裁切功能............................................................. 52

第 5 章於額外硬體設計支援裁切功能 ................................................................ 56

5.1 裁切系統硬體架構............................................................................. 56

5.2 運算單元硬體設計............................................................................. 62

Page 8: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

IV

5.2.1 浮點數與定點數運算單元.......................................................... 62

5.2.2 設計運算架構與效能分析.......................................................... 69

第 6 章 系統比較與驗證 ........................................................................................ 79

6.1 系統比較............................................................................................. 79

6.2 系統驗證............................................................................................. 82

第 7 章 結論與未來目標 ........................................................................................ 84

7.1 結論..................................................................................................... 84

7.2 未來目標............................................................................................. 85

附錄 A 裁切演算法效能比較分析 ........................................................................ 86

附錄 B 於頂點處理器執行裁切功能指令設計 .................................................... 92

參考文獻 .................................................................................................................... 94

Page 9: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

V

圖目錄 頁

[圖 1-1] X 頂點超出可視範圍過遠情況 ............................................................. 2

[圖 1-2] 三角形需作裁切之範圍示意................................................................ 2

[圖 2-1] OpenGL-ES 運算流程概觀 .................................................................... 5

[圖 2-2] Primitive Assembly 示意圖 .................................................................... 6

[圖 2-3] Rasterization 示意圖 .............................................................................. 6

[圖 2-4] TRIANGLE_SEPARATE ....................................................................... 8

[圖 2-5] TRIANGLE_STRIPS ............................................................................. 8

[圖 2-6] TRIANGLE_FAN ................................................................................... 8

[圖 2-7] OpenGL-ES 1.x 定義之固定功能繪圖運算流程 .................................. 8

[圖 2-8] 頂點座標轉換與頂點光源計算於幾何子系統.................................... 9

[圖 2-9] 頂點座標轉換矩陣範例...................................................................... 10

[圖 2-10] 光線方程式各向量示意圖................................................................ 11

[圖 2-11] [3]設計之幾何子系統於 OpenGL-ES 1.1 應用 ................................ 12

[圖 2-12] [4]加入裁切硬體設計於[3]系統 ....................................................... 13

[圖 2-13] [3][4]系統環境於 FPGA 驗證 ....................................................... …13

[圖 2-14] OpenGL-ES 2.x 定義之可程式化繪圖運算流程 .............................. 14

[圖 2-15] [5]可程式化模組 ................................................................................ 15

[圖 2-16] [5]利用指定表示幾何運算功能 ........................................................ 15

[圖 2-17] 指令集對應組合語言範例................................................................ 16

[圖 2-18] Negative/Swizzle 功能範例 ............................................................... 16

[圖 2-19] Write mask 功能範例 ......................................................................... 16

[圖 2-20] Binary 數系運算架構範例 ................................................................. 17

[圖 2-21] Log 數系運算架構範例 ..................................................................... 17

[圖 2-22] Log Converter 逼近數值示意圖 ........................................................ 18

[圖 2-23] Anti-Log Converter 逼近數值示意圖 ................................................ 18

[圖 2-24] Log Converter 架構圖 ........................................................................ 19

[圖 2-25] Anti-Log Converter 架構圖 ................................................................ 19

[圖 2-26] [19]矩陣運算範例 .............................................................................. 19

[圖 2-27] [19]向量運算範例 .............................................................................. 19

[圖 2-28] [19]基本功能運算範例 .................................................................. …20

[圖 2-29] [19] 4 級 pipeline 架構 ....................................................................... 20

Page 10: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

VI

[圖 2-30] [17] 5 級 pipeline 架構 ....................................................................... 20

[圖 3-1] Outcode 於二維空間的編碼 ................................................................ 21

[圖 3-2] 經由 Outcode 分類的三角形 .............................................................. 21

[圖 3-3] (V1[3]&V2[3]&V3[3])≠0 情況 .......................................................... 22

[圖 3-4] Outcode 於三維空間的編碼 ................................................................ 22

[圖 3-5] Guard Band region and Clip region ...................................................... 23

[圖 3-6] Outcode 無法過濾掉的三角形 ............................................................ 23

[圖 3-7] 由 V1 與可視邊界 Corner point(V4、V5)所構成之直線 L1、L2 ... 23

[圖 3-8] 選擇三角形頂點 V1 作為判斷依據 ................................................... 24

[圖 3-9] 選擇三角形頂點 V3 作為判斷依據 ................................................... 24

[圖 3-10] [4]方法對於三維空間應用之演算法 ................................................ 25

[圖 3-11] CS 演算法裁切線段過程示意圖 ....................................................... 28

[圖 3-12] Sutherland-Hodgman polygon clipping algorithm 示意圖 ................ 29

[圖 3-13] 應用 SH 演算法於二維空間之 pipeline 硬體架構.......................... 29

[圖 3-14] SH 演算法中四種狀況判斷 .......................................................... …30

[圖 3-15] SH 演算法利用 pipeline 硬體概念於二維空間的設計 .................... 30

[圖 3-16] 定義 PE 為一點輸入/輸出的 pipeline 硬體架構於二維空間 ......... 31

[圖 3-17] 定義 PE 為一點輸入/輸出之演算法六種狀況判斷 ........................ 32

[圖 3-18] 一點輸入/輸出之演算法範例於二維空間應用 .............................. 33

[圖 3-19] 應用修改版本 SH 演算法 pipeline 硬體架構於二維空間.............. 33

[圖 3-20] 修改版本 SH 演算法所定義之區間 ................................................ 34

[圖 3-21] 修改版本 SH 演算法範例於二維空間應用 .................................... 36

[圖 3-22] 修改版本 SH 演算法七種狀況判斷 ................................................ 37

[圖 3-23] 以改善修改版本 SH 演算法減少 Input Stall ................................... 38

[圖 3-24] 改善修改版本 SH 演算法所修正的狀況判斷 ................................ 39

[圖 3-25] 兩點輸入/輸出演算法狀況判斷 1_1 ............................................... 40

[圖 3-26] 兩點輸入/輸出演算法狀況判斷 1_2 ............................................... 40

[圖 3-27] 兩點輸入/輸出演算法狀況判斷 1_3 ............................................... 40

[圖 3-28] 兩點輸入/輸出演算法狀況判斷 1_4 ............................................... 41

[圖 3-29] 兩點輸入/輸出演算法狀況判斷 1_5 ........................................... …41

[圖 3-30] 兩點輸入/輸出演算法狀況判斷 2_1 ............................................... 41

[圖 3-31] 兩點輸入/輸出演算法狀況判斷 2_2 ............................................... 42

[圖 3-32] 兩點輸入/輸出演算法狀況判斷 2_3 ............................................... 42

[圖 3-33] 兩點輸入/輸出演算法狀況判斷 2_4 ............................................... 43

Page 11: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

VII

[圖 3-34] 兩點輸入/輸出演算法狀況判斷 2_5 ............................................... 43

[圖 3-35] 裁切演算法設計說明範例................................................................ 44

[圖 3-36] 兩點輸入/輸出演算法範例於二維空間應用 .................................. 44

[圖 3-37] 以 SH 演算法為概念發展之裁切演算法 ........................................ 47

[圖 4-1] 與搭配之頂點處理器系統概觀.......................................................... 50

[圖 4-2] 欲搭配之頂點處理器中 4-way SIMD 向量單元.............................. 51

[圖 4-3] 欲搭配之頂點處理器中特殊運算單元.............................................. 51

[圖 4-4] 欲搭配頂點處理器中切割之 9 級 pipeline ........................................ 52

[圖 4-5] [24] 利用 SIMD Clipping 概念 ........................................................... 53

[圖 4-6] 在頂點處理器中可作裁切功能階段與不同的裁切範圍.................. 53

[圖 4-7] 考量於 Projection 後作 Clipping 指令流程 ....................................... 54

[圖 4-8] 考量於 Viewport 後作 Clipping 指令流程 ......................................... 54

[圖 5-1] PE2 處理中,Stall 住 PE1 與 GM 示意圖 ..................................... …56

[圖 5-2] 頂點處理器與裁切系統 1................................................................... 57

[圖 5-3] 頂點處理器與裁切系統 2................................................................... 58

[圖 5-4] 以 triangle_fan 方式拆解多邊形 ........................................................ 59

[圖 5-5] OutCode 單元硬體架構 ....................................................................... 60

[圖 5-6] PE 控制單元設計 1 .............................................................................. 61

[圖 5-7] PE 控制單元設計 2 .............................................................................. 61

[圖 5-8] Clip 單元硬體架構 ............................................................................... 61

[圖 5-9] 三維空間中求交點示意圖.................................................................. 62

[圖 5-10] 自定加法器寬度................................................................................ 63

[圖 5-11] FADD 架構設計圖 ............................................................................. 64

[圖 5-12] 自定乘法器寬度................................................................................ 65

[圖 5-13] FMUL 架構設計圖 ............................................................................ 65

[圖 5-14] FRCP 架構設計圖 .............................................................................. 67

[圖 5-15] Piecewise 多階架構............................................................................ 68

[圖 5-16] Piecewiseu 一階架構.......................................................................... 68

[圖 5-17] Piecewise 二階架構............................................................................ 68

[圖 5-18] 求交點運算之 Data dependency ....................................................... 69

[圖 5-19] FSM in Independent Hardware Design ............................................... 70

[圖 5-20] FSM in Share Hardware Design ......................................................... 71

[圖 5-21] Divide & Share Hardware Design 架構 ............................................ .72

[圖 5-22] Pipeline & Share Hardware Design 構思流程 ................................... 73

Page 12: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

VIII

[圖 5-23] Pipeline & Share Hardware Design 架構 ........................................... 74

[圖 5-24] Pipeline & Share Hardware Design 介面 ........................................... 77

[圖 5-25] 共用 Piecewise 二階倒數硬體架構於 Clip 模組示意圖 ................. 77

[圖 5-26] Pipeline & Share Hardware Design 於 SignRCP 單元示意圖 .......... 78

[圖 6-1] [22]裁切演算法六種狀況判斷 ............................................................ 81

[圖 6-2] TA 狀況三角形經裁切硬體輸出之結果範例 ..................................... 82

[圖 6-3] TC 狀況三角形經裁切硬體輸出之結果範例 1 ................................. 82

[圖 6-4] TC 狀況三角形經裁切硬體輸出之結果範例 2 ................................. 83

表目錄 頁

[表 2-1] 轉換矩陣功能...................................................................................... 10

[表 2-2] 光線方程式各項係數定義.................................................................. 11

[表 2-3] [3]各硬體架構 pipeline 排程 ........................................................... …13

[表 2-4] [5]制定之指令集 .................................................................................. 15

[表 2-5] 利用 Log 簡化複雜的運算 ................................................................. 18

[表 3-1] Pre-clipping [4] VS Outcode method 效能比較(Angelus benchmark) 25

[表 3-2] Pre-clipping [4] 使用 V1,V2,V3 作判斷的效能比較 (Angelus

benchmark) .......................................................................................................... 26

[表 3-3] 應用不同裁切演算法之比較.......................................................... …46

[表 4-1] 自定之指令集格式.............................................................................. 48

[表 4-2] 頂點處理器支援裁切功能問題與可能解決辦法.............................. 55

[表 5-1] Angelus benchmark 於前一版裁切系統中求交點情況 ................. …59

[表 5-2] Clipping Engine 合成數據與各單元面積比例 ................................... 59

[表 5-3] OutCode 單元合成數據與各單元面積比例 ....................................... 60

[表 5-4] Clip 單元合成數據與各單元面積比例 ............................................... 61

[表 5-5] FADD 硬體各單元使用面積 ............................................................... 64

[表 5-6] FMUL 硬體各單元使用面積 .............................................................. 66

[表 5-7] FRCP 硬體各單元使用面積 .............................................................. ..68

[表 5-8] Processing schedule of Divide & Share Hardware Design ................... 71

[表 5-9] Processing schedule of Pipeline & Share Hardware Design ................ 73

[表 5-10] Pipeline & Share Hardware Design 於 FRCP 硬體單元使用面積 . ..75

Page 13: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

IX

[表 5-11] 對於求交點運算之不同硬體架構設計比較表 ................................ 76

[表 5-12] 設計之 PE data path 和 delay 與前一版比較表 ............................... 76

[表 6-1] 所設計之裁切引擎與前一版比較表.................................................. 79

[表 6-2] 與其他論文裁切系統的比較表.......................................................... 80

方程式目錄 頁

[方程式 2-1] 光線方程式.................................................................................. 11

[方程式 5-1] 求交點內插公式.......................................................................... 62

[方程式 5-2] 內插公式參數 t 值求法 .............................................................. 62

[方程式 5-3] 重新定義[方程式 5-1]................................................................. 69

Page 14: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

1

第 1 章 概論

1.1 本文大綱

本論文主要分六大章節。第一章為論文摘要與研究動機。第二章為相關研

究背景,包含電腦圖學與 OpenGL-ES 規格、幾何子運算功能與架構、頂點處

理器功能與架構設計等等介紹。第三章為相關裁切演算法研究與應用於硬體架

構設計,包含 Pre-clipping 功能、裁切功能演算相關研究與在硬體實作上的困

難點,最後一節提出新的裁切演算法判斷。第四章為探討以頂點處理器支援裁

切功能之效益。第五章為探討以額外硬體實作裁切引擎的效益評估,選擇適合

的裁切演算法應用於所規劃之硬體,並介紹內部運算單元設計方式。第六章為

比較其他各種不同架構設計之效能,以及對於自行設計裁切系統的驗證方式。

第七章為本論文的結論,並提出未來可供改進的研究方向。

1.2 研究動機

隨著三維電腦繪圖技術的成長,愈來愈多電子產品應用其技術呈現三維空

間的物件,三維繪圖技術同時也是許多領域需求的輔助工具。目前許多可攜式

電子產品利用三維繪圖的技術繪製物件,其應用方向主要為低功耗、低面積方

面的低成本設計為主要的考量。由於三維繪圖需要大量的運算,對於目前許多

交談式和即時性的應用已無法達到 Real Time 的需求,故在許多應用中開始以

硬體的設計支援三維繪圖的運算,以提供的三維加速模組改進繪圖的速度。在

三維電腦繪圖的流程中,裁切功能為將超出可視範圍不需顯示的影像進行裁

切,加入裁切功能至三維繪圖流程的運算,可對於需求來選擇擺放的位置。而

裁切功能主要可達到的改善為以下兩點所述:

Page 15: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

2

1. 減少後端處理單元硬體方面的負擔,如[圖 1-1]中,X 頂點距離可視範

圍過遠,需要較大的位元數表示之,經裁切後可去掉 X 頂點的表示。

2. 減少後端不必要的運算,如[圖 1-2]中,藍色範圍為看不見的區塊,經

由裁切後可消除後端處理藍色範圍的運算。

因此加入裁切功能後,可有效地提升整體繪製三維物件的效率與減少硬體

方面不必要的負擔。由於裁切演算法為循序性較不易利用硬體作平行化或管線

化的應用,因此研究方向為提出相關裁切演算法設計,配合頂點處理器的運算

輸出,以支援 OpenGL-ES 2.0 規格作為設計考量。隨著不同系統規格的需求,

設計者可選擇較適當的硬體架構與演算法設計作為搭配,以達到繪圖加速與低

成本的需要。

[圖 1-1]:X 頂點超出可視範圍過遠情況

[圖 1-2]:三角形需作裁切之範圍示意

x

Page 16: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

3

1.3 研究貢獻

˙根據 OpenGL-ES 2.0 規格實現 Dual-path 裁切引擎,將不需裁切與需裁切

的三角形分類輸出,能有效改善裁切運算的輸出,並支援 24-bit 定點數與

IEEE 754 浮點數的資料運算格式。

˙對於裁切演算法設計,提出兩點輸入/輸出演算法,定義處理單元輸入和

輸出格式以線段為單位。利用些微硬體成本的負擔,提高裁切硬體的執行

效率,提供使用者在應用上有不同的選擇。

˙對於裁切演算法中求交點運算,提出 Pipelined and Shared 硬體架構,以內

插法求三角形與裁切邊界的交點,以管線化與共用硬體的設計概念,改善

硬體方面的成本且減少運算需要的處理時間。

Page 17: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

4

第 2 章 研究背景與相關研究

本章節首先介紹電腦圖學與 OpenGL-ES 相關規格,接著介紹幾何子運算系

統(Geometry Module)於 OpenGL-ES 1.0 版的應用與其支援的運算功能。另外介紹

不同頂點處理器(Vertex Shader)的發展與種類,於其中 SIMD 硬體架構的設計與

所支援的功能比較。

2.1 電腦圖學與 OpenGL-ES 簡介

電腦圖學(Computer Graphics)為一門探討如何以電腦技術顯示圖形的技術。

近年來,隨著電腦效能的提升,電腦圖學已被普遍地應用於不同的領域作為輔助

的工具,其中以多媒體的相關應用最為廣泛,所繪製的圖形也由傳統二維空間發

展到三維空間。而三維圖像的顯示應用更能反映出日常生活中許多不同的實物,

描繪出逼真的效果。如今半導體科技的進步,可利用超大型積體電路(VLSI)的技

術實現系統於晶片中,所應用的範圍也從個人工作電腦延伸至小型的嵌入式系統

裡,如目前可攜式電子產品中的應用中,由於此類的應用對於功率消耗、電路面

積、以及執行速度上有較嚴格的限制,因此低功耗和低面積方面的低成本設計變

成主要的課題,未來的方向也都朝著設計特定功能的電路於單晶片中作為矽智財

(Intellectual Properties),並整合至整體環境中。

在電腦繪圖中,利用 OpenGL[1]所提供之 API,可應用在許多不同的作業系

統平台上,目前市面上販售的顯示卡也都具備支援 OpenGL 的功能。對於嵌入式

系統的需求,所萃取的 OpenGL-ES(OpenGL for Embedded Systems)[2]為 OpenGL

的子集合,為支援較低階、低容量的繪圖 API。對於大部分可攜式的行動裝置與

不同的嵌入式系統,皆以 OpenGL-ES 所提供之 API 作為繪圖的規格與標準。

OpenGL 物件的組成單位為元件(Primitives),元件可選擇以點、線、或多邊形為

構成物件的要素,而在 OpenGL-ES 中,刪去了四邊形以上的多邊形元件。

Page 18: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

5

在 OpenGL 定義中,多邊形的頂點輸入順序有方向性的定義,在預設的情況

下,逆時針代表正面、順時針代表背面。以一個觀察者的角度而言,逆時針與順

時針的表示方式為代表正面與背面,定義頂點順序與方向性為 winding,這樣的

機制影響了在作 culling 功能(將背面看不見的物件刪除不作多餘的運算)的判斷。

[圖 2-1]:OpenGL-ES 運算流程概觀

[圖 2-1]為 OpenGL-ES 運算流程示意圖。其流程根據不同的處理單元可分為

兩大部份:幾何子系統(Geometry Module)和著色子系統(Rendering Module)。於

幾何子運算系統中,主要有 Per-Vertex Operations、Primitive Assembly、Primitive

Processing 三部份,皆以頂點為單位作運算。

˙Per-Vertex Operations

在此處理階段中,以一個頂點為單位。主要為 T&L 的運算:

■ 頂點座標轉換(Transformation)

■ 頂點光源運算(Lighting)

Page 19: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

6

˙Primitive Assembly

每個頂點經過所需的運算後,於此階段組合頂點成構成物件之線段或三

角形,如[圖 2-2]所示之。

[圖 2-2]:Primitive Assembly 示意圖

˙Primitive Processing

在取得頂點所構成之元件後,此階段可對於元件作以下的處理:

■ 裁切(Clipping),刪除可視範圍外的元件。

■ 刪除背面元件(Culling),將使用者看不見不需顯示的元件刪除。

■ 座標正規化(Perspective Division),若在 Per-Vertex Operation 階段

中,投影(Projection)的方式採用 Perspective Projection,則會因為物

件的距離遠近改變物件的大小,則需要作 Perspective Division 的動

作將物件的座標正規化。

在前端處理完頂點與元件的運算後,這些資料於後端運算包括了依照各三角

形的頂點資訊求出三角形內部的交點,並產生像素(Pixel),如[圖 2-3]。並依照頂

點資訊中包含的材質座標貼上材質,最後將呈像顯示於螢幕上。

[圖 2-3]:Rasterization 示意圖

Page 20: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

7

如前述所提,在三維繪圖管線化流程中主要分為幾何子系統與著色子系統來

處理物件的運算。在幾何子系統中,由於包括不同座標系統轉換的運算,在精確

度的需求下,頂點座標需要比較大的表示範圍,因此座標表示需包含小數位數。

而在著色子系統中,由於螢幕座標為整數型態,且對於繪圖後端的著色子系統,

對於效能需要較高輸出(Throughput),故皆以整數形式表示資料。三維繪圖中加

速硬體模組設計需配合不同系統的需求作適合的設計方式,於此章的後兩節將介

紹對於不同 OpenGL-ES 規範所設計的硬體架構與其支援的功能。

除了以點、線為構成物件要素,在物件呈像上,由於任何多邊形皆可以利用

三角形組合而成,因此 OpenGL-ES 選擇以三角形為基本的元件,對於三維模組

的硬體加速模組設計,也都以三角形為輸入的元件。三角形的繪製方式有著不同

的模式定義:

˙TRIANGLE_SEPARATE Mode

每三個頂點構成一個三角形,各三角形頂點皆獨立不共享,如[圖 2-4]所示。

˙TRIANGLE_STRIPS Mode

三角形串列模式,以新進的頂點和前一個三角形的最後兩點構成一個新的三

角形,如[圖 2-5]所示。

˙TRIANGLE_FAN Mode

三角形扇形模式,各個三角形皆繞著第一個頂點為中心作扇形狀,新進的頂

點和第一個頂點與前一個三角形的最後一個頂點構成一個新的三角形,如

[圖 2-6]所示。

Page 21: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

8

[圖 2-4]:TRIANGLE_SEPARATE [圖 2-5]:TRIANGLE_STRIPS

[圖 2-6]:TRIANGLE_FAN

2.2 幾何子系統

OpenGL-ES 1.x 規格中定義了固定功能的繪圖運算流程(Fixed pipeline),亦

即在不同的管線階段(Pipeline stages)中作不同的運算功能,如[圖 2-7]所示。其中

前端的運算如前面所述之頂點座標轉換與頂點光源計算,包括點、線段、三角形

等等元件的處理至 Primitive Assembly 的階段。

[圖 2-7]:OpenGL-ES 1.x 定義之固定功能繪圖運算流程

Page 22: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

9

2.2.1 支援運算功能

[圖 2-8]:頂點座標轉換與頂點光源計算於幾何子系統

[圖 2-8]為幾何子系統中的運算流程,如以下介紹:

˙頂點座標轉換 (Transformation)

在三維繪圖的流程中,對於所要繪製的物件,首先會定義物件的大小和

位置,透過將頂點座標 (X,Y,Z,W)與 Modelview 矩陣相乘達到效果,

Modelview 矩陣中元素包括了將物件縮放、旋轉、平移等等動作。經過

Viewing 矩陣相乘可指定觀察者或攝影機的位置。透過 Projection 矩陣相乘

將物件投影於定義的可視範圍(View Volume)中,可分兩種投影方式:垂直投

影(Orthogonal Projection)和透視投影(Perspective Projection),若選擇以透視

投影的方式作,則之後需再作座標正規化的動作(Perspective Division)。最後

將欲顯示的畫面,利用 Viewport mapping 矩陣運算達到畫面對於顯示螢幕縮

放的效果。各矩陣的大小皆為 4 x 4 矩陣,在轉換頂點座標的過程中,共有

三種不同的座標系統變換:本地座標(Object space)、世界座標(World space)、

觀察座標(Camera space)。[圖 2-9]為不同功能的轉換矩陣內容範例,[表 2-1]

為不同功能矩陣轉換說明及整理。

Page 23: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

10

Modelview Transformation

⎥⎥⎥⎥

⎢⎢⎢⎢

1000000000000

SzSy

Sx

⎥⎥⎥⎥

⎢⎢⎢⎢

⎡ −

1000010000cossin00sincos

θθθθ

⎥⎥⎥⎥

⎢⎢⎢⎢

1000100010001

tztytx

縮放(Scale) 旋轉(Rotation) 平移(Translation)

Viewing Transformation

⎥⎥⎥⎥

⎢⎢⎢⎢

•−•−•−

10000

0

0

PnnnnPvvvvPuuuu

zyx

zyx

zyx

Projection Transformation

垂直投影(Orthogonal Projection) 透視投影(Perspective Projection)

Perspective Division Viewport Mapping Transformation

[圖 2-9]:頂點座標轉換矩陣範例

[表 2-1]:轉換矩陣功能

Transformations Functions

Model Transformation 在場景縮放、旋轉、移動物體

Viewing Transformation 指定觀察者或攝影機的位置

Projection Transformation 調整可視範圍大小,投影物件

Perspective Division 將座標正規化(除以 w 值)

Viewport Transformation 將輸出作相對於視窗的縮放

Page 24: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

11

˙頂點光源計算 (Lighting)

OpenGL 中定義顏色組合共分四個元素:紅色(Red)、綠色(Green)、藍

色(Blue)、透明度(Alpha value)。其中 R、G、B 值為 0~255 的整數值以 8-bit

表示,該顏色成分愈高則數值愈高,如(0,0,0)表黑色、(255,255,255)表白色、

(255,0,0)表紅色。而 Alpha 值定義範圍為 0.0~1.0 間,以 8-bit 表示,0 表完全

透明,1 表完全不透明,而 0.7 則表 70%不透明。而計算頂點光源的方式為

利用常用的光線方程式計算[方程式 2-1][表 2-2][圖 2-10],共分三種光源來源

計算:周遭光線(Ambient)、漫射光線(Diffuse)、反射光線(Specular),在固定

功能繪圖流程中,只支援一種頂點光源計算。

[方程式 2-1]光線方程式

[表 2-2]:光線方程式各項係數定義

[圖 2-10]:光線方程式各向量示意圖

Page 25: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

12

在處理完以頂點為單位的運算之後,藉由 Primitive Assembly 可將處理後的

頂點組合為線段或是三角形,接著可作以下的處理:

˙刪除背面元件 (Culling)

Culling 的技術為將位於觀察者後方看不見的元件作刪除的動作,可以

有效減少多餘的運算。而在 OpenGL 定義中,使用者可決定是否要繪製該物

件的正面及背面,透過 Culling 的機制判斷頂點順逆時針的順序即可滿足使

用著的需求,達到時間與資源上的節省。

˙裁切功能 (Clipping)

Clipping 的技術為將位於可視範圍外的元件作刪除,必要時需要求出元

件與可視邊界的交點取代原本位於範圍外的頂點,這樣的技術同樣地也能對

於整體三維繪圖的處理效率提供一個很好的方案。

2.2.2 硬體模組架構設計

[3]研究提出對於 OpenGL-ES 1.x 規範,設計幾何子系統運算單元於固定管

線繪圖流程,對於不同功能的需求皆需以相對應的硬體進行運算。該幾何子系統

硬體架構共分為 3 個 pipeline stages,每個 stage 定義 16 個 cycle 的處理時間[圖

2-11][表 2-3]。支援的功能為頂點座標轉換需求的 4 x 4 矩陣相乘運算、根據[方

程式 2-1]的頂點光源計算、Culling 功能、Pre-clipping 功能。[4]則對於[3]所設計

之架構,根據自行設計的演算法,加入了裁切硬體的設計以改善繪圖的效率[圖

2-12] [圖 2-13]。

[圖 2-11]:[3]設計之幾何子系統於 OpenGL-ES 1.1 應用

Page 26: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

13

[表 2-3]:[3]各硬體架構 pipeline 排程

[圖 2-12]:[4]加入裁切硬體設計於[3]系統

[圖 2-13]:[3][4]系統環境於 FPGA 驗證

Page 27: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

14

2.3 頂點處理器

OpenGL-ES 2.x 規格[2][6]中主要為可程式化的三維繪圖硬體設計與支援的

資料格式。頂點處理器(Vertex Shader)與像素處理器(Pixel Shader)因應而生,在可

程式化的硬體架構中,主要的作法為利用 4 份相同的 SIMD 硬體。與 OpenGL-ES

1.x 規格比較起來,頂點處理器與像素處理器除了需要讀取運算所需要的常數值

和頂點資料外,還需要讀入待作的指令,設計者可依據 OpenGL-ES Shading

Language[7]自定指令的格式,使 SIMD 硬體支援不同的運算功能,達到可程式

化的效果。此外在 OpenGL-ES 2.x 中,頂點包含更多屬性(Vertex Attributes),除

了頂點座標和顏色等等基本屬性外,支援更多的材質座標、霧化座標、以及第二

組顏色屬性等等[5]。支援的資料格式也由原本 OpenGL-ES 1.x 的定點數運算修

改為 IEEE 單精準度浮點數與定點數同時支援的格式運算。近年來,許多研究也

開始將頂點處理器與像素處理器作合併的 Unified Shader 設計[8][9][10],配合不

同系統資源的需求,設計者對於不同的應用可搭配較適當的架構與方法。

[圖 2-14]:OpenGL-ES 2.x 定義之可程式化繪圖運算流程

Page 28: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

15

2.3.1 指令格式設計

對於頂點處理器中需要的指令集格式與功能,可由使用者根據需求所設定。

如 NVIDIA 公司提出的頂點引擎(Vertex Engine)[5]應用於 GeForce3 GPU 上,[圖

2-15]為所提出之可程式化模組,[表 2-4]為 NVIDIA 公司制定之指令集,共 17 道

不同的指令行為。由於 driver 端已作了指令的最佳化,因此沒有作 branch 指令

的設計。在這樣的指令集設定下,簡單 if/then/else 判斷行為可以由 SLT、SGE 兩

道指令組合而成。如同 2.2.1 節所述,頂點處理器的架構也是對於支援相同的幾

何運算功能,因此各種不同需要執行的運算改由指令表示,如[圖 2-16]應用範例。

[表 2-4]:[5] 制定之指令集

[圖 2-15]:[5]可程式化模組

[圖 2-16]:[5]利用指定表示幾何運算功能

Page 29: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

16

[圖 2-17]:指令集對應組合語言範例

在指令集的設計上,為組合語言的敘述與暫存器的定義。如[圖 2-17]範例

中,使用者需設定 Opcode 對於不同的指令行為,運算元的來源暫存器以及運算

結果寫回之暫存器位置定義,或立即值所佔位元空間。甚至,指令中可加入其他

位元以支援更強大的功能,如[圖 2-18]中,對該值取負值(negative)或選擇頂點屬

性(swizzle)功能,或是加入 write mask[圖 2-19],可提供寫回暫存器時有更多的選

擇。此外,於指令控制中加入 hazard 和 data forwarding 的機制,也能有效地提升

系統的執行效率。

[圖 2-18]:Negative/Swizzle 功能範例

[圖 2-19]:Write mask 功能範例

Page 30: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

17

2.3.2 SIMD 硬體架構設計

在頂點處理器 SIMD 的硬體架構設計上,可分為兩種不同的數系設計,[圖

2-20]、[圖 2-21]提供兩種不同數系運算架構的範例比較。

[圖 2-20]:Binary 數系運算架構範例 [圖 2-21]:Log 數系運算架構範例

˙Binary 數系(Normal number system):

此類之頂點處理器架構為一般二進位硬體的架構設計,但在支援一些特

殊運算如 log 轉換、指數運算、三角函數運算等等功能時,所需要花費的硬

體面積會變的相當可觀。對於限制性較高的嵌入式系統裝置而言,支援太複

雜的運算會造成硬體上有很大的負擔。除了運算單元的設計外,其他如與

CPU 操作的模式[11]、VLIW 架構與快取記憶體設計方式[12][13],都是可選

擇的改善方法。亦或是另外設計特殊處理單元架構支援特殊運算功能。甚至

另外分離出功能,以其他硬體支援類似頂點光源計算的複雜運算[8][9][10],

配合 binary 數系和 log 數系部分的混搭方式計算,使整體系統獲得更完善的

效能與成本。

Page 31: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

18

˙Log 數系(Logarithmic number system)[21]:

此類之頂點處理器架構為利用 log 轉換的機制,保持原本簡單如加減法

的運算於 binary 數系運作,另外將一些複雜的運算功能簡化成簡單的運算

[表],之後還需將運算結果由 log 數系轉回 binary 數系。這樣的設計方式可

免除 binary 數系於硬體面積方面的缺點,並減少運算的處理時間。但由於運

算過程會經過兩次的數系轉換,在硬體精確度會有相當的誤差。因此設計以

log 數系架構於頂點處理器時,在轉換的單元設計必須小心誤差的產生是否

符合系統的需求。於 2005 年起,由韓國 KAIST 團隊所提出之 log 數系頂點

處理器架構中[12-20],減少誤差為利用 piecewise 線性逼近的方法,建立轉

換數系單元中(Log Converter[圖 2-24], Anti-Log Converter[圖 2-25])所需要的

表格資料,且依據不同誤差的容忍度,等份或不等份地切割不同數量的區間

[圖 2-22] [圖 2-23]。

[表 2-5]:利用 Log 簡化複雜的運算

[圖 2-22]:Log Converter 逼近數值示意圖 [圖 2-23]:Anti-Log Converter 逼近數值示意圖

Page 32: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

19

[圖 2-24]:Log Converter 架構圖 [圖 2-25]:Anti-Log Converter 架構圖

在這些 log 數系的架構設計中,主要支援的運算功能大都為:

˙矩陣運算,MAT (matrix-vector multiplication)

[圖 2-26]:[19]矩陣運算範例

˙向量運算,VEC (vector operations),其中包括,

■ 乘法,Multiplication

■ 除法,Division

■ 除以平方根,Divide by square-root

■ 乘累加,Multiply-add

■ 向量內積,Dot-product

[圖 2-27]:[19]向量運算範例

Page 33: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

20

˙基本功能運算,ELM (elementary functions) ,其中包括,

■ 三角函數相關計算,Trigonometric functions, ex. sinθ, cosθ

■ 指數運算,Power function

■ Log 基底置換,Logarithm, ex. logbx

[圖 2-28]:[19]基本功能運算範例

由於矩陣運算所需要的 cycle 數較多,因此不同研究中提出切 4 級 pipeline

stages[19],或是加入第 5 級加法器的設計[17],對於矩陣運算的處理時間,可由

4 個 cycle 變為 2 個 cycle 的改善。

[圖 2-29]:[19] 4 級 pipeline 架構 [圖 2-30]:[17] 5 級 pipeline 架構

Page 34: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

21

第 3 章 裁切演算法與硬體架構設計

3.1 Pre-clipping 演算法

[圖 3-1]:Outcode 於二維空間的編碼 [圖 3-2]:經由 Outcode 分類的三角形

Pre-clipping 為作裁切功能的前置作業,透過 Pre-clipping 機制可將欲處理的

三角形分為三大類:1. 三角形在可視範圍內(Triangle accept case, TA),2. 三角形

在可視範圍外(Triangle reject case, TR),3. 三角形部份在可視範圍內(Triangle clip

case, TC)。經過 Pre-clipping 的判斷後,可將為於可視範圍外的三角形(TR)移除

不作,減少裁切模組需處理的三角形個數,能有效地減輕裁切模組的負擔。而目

前最為常用的 Pre-clipping 演算法為 Outcode algorithm,其演算法判斷敘述如下:

[圖 3-1]為應用 Outcode 於二維空間的編碼示意圖。二維空間藉由 Xmax、

Xmin、Ymax、Ymin 四個可視邊界切割成九個區域,每個區域皆有不同的編碼,

中間區塊則為可視範圍(View volume)。靠近可視範圍一邊定義為 Visible side,編

碼為 1,另一邊定義為 Invisible side,編碼為 0,故四邊可視邊界共需 4-bit 的編

碼空間,中間區塊編碼定義為 0000,依此方式定義出不同的區域。對於三角形

中三個頂點(V1, V2, V3)需算出位於哪個區域內,若發生(V1[i]&V2[i]&V3[i]) ≠ 0

的情況(i 為 4-bit 編碼中的相對位置),則此三角形的三個頂點皆位於某一可視邊

界的 Invisible side,則必定不在可視範圍中,同[圖 3-2]中黃色三角形(TR)或[圖

3-3]中所示意。Outcode 利用簡單的邏輯運算方式可過濾出位於任何一條可視邊

界外的三角形,如此一來裁切硬體中只需處理 TA 與 TC 兩種類的三角形,可以

有效減少裁切硬體的負擔。

Page 35: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

22

[圖 3-3]:(V1[3]&V2[3]&V3[3])≠0 情況 [圖 3-4]:Outcode 於三維空間的編碼

延伸 Outcode 的判斷至三維空間應用,如[圖 3-4]所示。在三維空間中,可

視範圍由六個平面所構成,並分割成共 27 個區域,故需要共 6-bit 的編碼空間。

以二維的角度來看,可視為 Front、Middle、Back 三大區塊的編碼。在三維應用

中,利用 Outcode 方式與二維相同,對於每個頂點同位置的編碼作邏輯 And 運

算後若等於 1,表示該三角形位於某一裁切平面之外,屬 TR 類的三角形,則直

接捨棄該三角形不輸出至後端的運算單元。

另一種加強 Pre-clipping 方式為 Guard Band[24],該方法的設計目標為減輕

裁切硬體的負擔,由後端的硬體來支援運算。在後端硬體可負擔的情況下,在可

視範圍外再多設置一個 Guard Band region,如[圖 3-5]所示。因此 Guard Band 可

支援的最大範圍即後端硬體承受最大的負擔為底限。由於設置了 Guard Band

region,故 Guard Band region 和 Clip region 皆需要求出對於這兩區域中頂點的

Outcode 編碼,相對地也增加了編碼空間與判斷的硬體與次數,故 Guard Band

的使用時機為硬體方面可允許的考量方式。在[圖 3-5]中為線段的判斷情況:若

該線段部份位於 Clip region 內且完全位於 Guard Band region 內,則判斷該線段

落在可視範圍中;若該線段完全位於 Clip region 外,則判斷該線段落在可視範圍

外;若該線段部份位於 Clip region 內且部分超出 Guard Band region 外,則判斷

該線段需要作裁切。經過 Guard Band 的判斷後,線段 1 和線段 2 視為 TA 的狀

況,線段 3 和線段 5 視為 TR 的狀況,而線段 4 則為需要作裁切的情況。

Page 36: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

23

[圖 3-5]:Guard Band region and Clip region [圖 3-6]:Outcode 無法過濾掉的三角形

Outcode 透過簡單的判斷方式可過濾出某一可視邊界外的三角形(即該三角

形三個頂點皆位於某一可視邊界外),但對於某些應捨棄掉不需經過裁切硬體的

三角形,Outcode 則無法辨別之。如[圖 3-6]所示,該三角形三個頂點位於不同的

可視邊界外,單純以傳統的 Outcode 判斷方法則無法辨認出該三角形為 TR 狀況

(應捨棄之),此類的三角形送往裁切硬體作處理,將會增加裁切硬體的負擔,因

此[4]提出了新的判斷方法來改善 Pre-clipping 的設計方式:在二維空間中,求出

該三角形頂點 V1 的 Outcode 編碼以得知 V1 的所在區域,接著對於 V1 與兩個可

視範圍的 Corner point 求出直線 L1 與直線 L2,若該三角形的另兩個頂點 V2 和

V3 同時位於 L1 或 L2 的 Drop side,則該三角形屬 TR 的狀況,應刪除掉而不進

行之後的運算,如[圖 3-7]所示。

[圖 3-7]:由 V1 與可視邊界 Corner point(V4、V5)所構成之直線 L1、L2

Page 37: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

24

[圖 3-8]:選擇三角形頂點 V1 作為判斷依據 [圖 3-9]:選擇三角形頂點 V3 作為判斷依據

選擇的頂點 V1 若位於不同的區域中,則會有不同相對應的 Corner point 與

V1 構成直線 L1、L2,產生出不同的 Drop side。若 V1 位於可視範圍內,則該三

角形必定部份位於可視範圍中,故需要作裁切的動作。同樣的作法也可用於三角

形的頂點 V2、V3,產生出不同判斷直線與不同的 Drop side,並對於三角形的另

兩個頂點作是否位於同一個 Drop side 的判斷。

所提出的分類方式依舊無法完全分辨出所有應刪除的三角形,若以[圖 3-8]

中選擇三角形頂點 V1 作為判斷依據可辨認出該三角形為捨棄狀況;若以[圖 3-9]

中選擇的三角形頂點 V3 作判斷依據,則三角形另兩個頂點 V1 和 V2 位於不同

的 Drop side,故該三角形將視為需要作裁切,但實際上應刪除該三角形。經實

驗證明此分類方法若只選擇頂點 V1 作判斷,與傳統的 Outcode 分類相比[表

3-1],可以減少約 35%的三角形輸出。若加入頂點 V2 作判斷,即先以 V1 判斷

一次,再以 V2 判斷一次,則可以達到比 Outcode 輸出少 42%的三角形個數。若

V1、V2、V3 皆各作一次判斷,其縮減的三角形輸出約與用兩頂點 V1、V2 判斷

差不多,如[表 3-2]比較。由於作愈多次判斷會花費較多的硬體面積與時間,故

在 Pre-clipping 應用上,可依使用者需求選擇在實作上面積和執行效率間的效益。

考慮應用此方式於三維空間,可利用相同的方式對於三維空間作三次判斷後

始得結果,其演算法過程同二維空間判斷:1. 求得 V1 頂點的 Outcode 編碼,得

知其所在的區域,2. 求得 V1 與兩個 Corner point 所構成之直線,3. 判斷另兩頂

點是否位於相同的 Drop side,如[圖 3-10]所述。

Page 38: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

25

[圖 3-10]:[4]方法對於三維空間應用之演算法

[表 3-1]:Pre-clipping [4] VS Outcode method 效能比較 (Angelus benchmark)

pre-clipping Outcode

method

Proposed

method

Outcode

method Proposed

method

frame total

triangle pass

triangle clipped

triangle

clipped

triangle

reduce

clipped

triangle

number

reduce clipped

triangle % dropped

triangle dropped

triangle

1 62872 272 635 407 228 35.90551181 61965 62193

2 62872 272 617 383 234 37.92544571 61983 62217

3 62872 258 631 389 242 38.3518225 61983 62225

4 62872 323 547 311 236 43.14442413 62002 62238

5 62872 325 539 308 231 42.85714286 62008 62239

6 62872 337 581 363 218 37.52151463 61954 62172

7 62872 344 613 397 216 35.2365416 61915 62131

8 62872 350 591 368 223 37.73265651 61931 62154

9 62872 354 563 351 212 37.65541741 61955 62167

40 62872 14640 2350 1794 556 23.65957447 45882 46438

41 62872 15620 2351 1761 590 25.09570396 44901 45491

42 62872 16256 2190 1638 552 25.20547945 44426 44978

43 62872 16669 2164 1646 518 23.93715342 44039 44557

44 62872 17306 2180 1705 475 21.78899083 43386 43861

45 62872 18558 2244 1787 457 20.36541889 42070 42527

46 62872 19505 1938 1493 445 22.96181631 41429 41874

47 62872 20516 2001 1573 428 21.38930535 40355 40783

70 62872 123 3132 2475 657 20.97701149 59617 60274

71 62872 131 3470 2576 894 25.76368876 59271 60165

72 62872 123 3822 2827 995 26.03349032 58927 59922

73 62872 128 3638 2793 845 23.22704783 59106 59951

74 62872 192 1660 1170 490 29.51807229 61020 61510

Page 39: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

26

87 62872 2120 1940 1370 570 29.3814433 58812 59382

88 62872 829 1502 1038 464 30.89214381 60541 61005

89 62872 206 1455 1042 413 28.38487973 61211 61624

90 62872 151 1530 1098 432 28.23529412 61191 61623

[表 3-2]:Pre-clipping [4] 使用 V1,V2,V3 作判斷的效能比較 (Angelus benchmark)

Outcode

method Method 1 Method 2 Method 3 Method 1 Method 2 Method 3

frame Clipped

triangle

reduce

clipped

triangle

number

reduce

clipped

triangle

number

reduce

clipped

triangle

number

reduce

clipped

triangle %

reduce

clipped

triangle %

reduce

clipped

triangle %

1 635 228 298 298 35.90 46.93 46.93

2 617 234 315 315 37.92 51.05 51.05

3 631 242 321 321 38.35 50.87 50.87

4 547 236 318 318 43.14 58.14 58.14

5 539 231 317 317 42.86 58.81 58.81

6 581 218 305 305 37.52 52.50 52.50

7 613 216 298 298 35.24 48.61 48.61

8 591 223 313 313 37.73 52.96 52.96

9 563 212 300 300 37.66 53.29 53.29

40 2350 556 799 799 23.66 34 34

41 2351 590 856 856 25.10 36.41 36.41

42 2190 552 798 798 25.21 36.44 36.44

43 2164 518 753 753 23.94 34.80 34.80

44 2180 475 697 697 21.79 31.97 31.97

Page 40: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

27

45 2244 457 687 687 20.37 30.61 30.61

46 1938 445 649 649 22.96 33.49 33.49

47 2001 428 602 602 21.39 30.08 30.08

70 3132 657 809 822 20.98 25.83 26.24

71 3470 894 1125 1127 25.76 32.42 32.48

72 3822 995 1225 1229 26.03 32.05 32.16

73 3638 845 1094 1102 23.23 30.07 30.29

74 1660 490 678 678 29.52 40.84 40.84

87 1940 570 773 773 29.38 39.85 39.85

88 1502 464 648 648 30.89 43.14 43.14

89 1455 413 579 579 28.38 39.79 39.79

90 1530 432 601 601 28.24 39.28 39.28

※ Method1: 利用 V1 點作判斷 Method2: 利用 V1 點與 V2 點作判斷

Method3: 利用 V1 點、V2 點、V3 點作判斷

3.2 Clipping 演算法

在經過 Pre-clipping 硬體將完全在可視範圍外的三角形過濾掉後,裁切硬體

只需處理完全在可視範圍中與需要作裁切動作共兩類三角形。若裁切演算法判斷

該三角形為完全於可視範圍中,則不需作任何運算,將該三角形直接輸出即可;

若該三角判斷為部份位於可視範圍內,則進行裁切,需要求得該三角形與可視邊

界的交點。對於裁切演算法的設計,[1]提到不同的線段裁切演算法,如:

˙Cohen-Sutherland (CS) line clipping algorithm

此演算法利用 Outcode 判斷方法求得三角形各頂點位於哪個區域,同樣

將欲處理的線段分類成 TA/TR/TC 三種不同的狀況作處理:TA 類的三角形

Page 41: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

28

則直接輸出;TR 類的三角形則直接刪去;TC 類的三角形則須對於每一個

可視邊界循序地判斷是否需要求交點,以二維空間為例,如[圖 3-11]所示的

過程,該 TC 線段須作四次可視邊界的判斷,若與該可視邊界有交集則需求

出交點,判斷完該線段與所有可視邊界的關係後,才輸出處理後的線段。

[圖 3-11]:CS 演算法裁切線段過程示意圖

˙Cyrus-Beck (CB) line clipping algorithm

此演算法設計主要精神為將線段以線段方程式表示之,以減少判斷與可

視邊界的次數,但其計算參數的複雜度於硬體面積方面較為需求。

˙Liang-Barsky (LB) line clipping algorithm

此演算法為改善 CB 裁切演算法,比 CB 裁切演算法較早偵測出處理的

線段是否為完全位於可視範圍外,以減少不必要的運算。

˙Sutherland-Hodgman (SH) polygon clipping algorithm

以上三種裁切演算法皆為線段裁切演算法,另外[1]中提到了一種應用

於多邊形裁切演算法稱為 Sutherland-Hodgman (SH) polygon clipping

algorithm。此演算法主要的概念為採用了 Divide and Conquer 概念,對於欲

處理的多邊形依次作單一可視邊界的判斷,若超出可視範圍則需求交點,這

樣的設計方法於硬體中可利用 pipeline 的架構實現。[圖 3-12]為應用 SH 演

算法於二維空間範例:該多邊形首先作右方可視邊界的判斷,接著依次為下

方可視邊界、左方可視邊界、上方可視邊界判斷後才得到裁切完成的多邊形。

Page 42: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

29

[圖 3-12]:Sutherland-Hodgman polygon clipping algorithm 示意圖

[圖 3-13]:應用 SH 演算法於二維空間之 pipeline 硬體架構

[圖 3-13]為應用 SH 演算法於二維空間所設計之 pipeline 硬體架構,二維空

間中共有四個可視邊界(Xmax, Xmin, Ymax, Ymin),因此需要四個處理單元

(Processing Element),分別作四組不同邊界的判斷。而 SH 演算法實際處理多邊

形裁切時,將多邊形拆成許多個線段分別處理,如[圖 3-14]所述,每次處理的線

段(sp)只對單一可視邊界作裁切判斷,其演算法分成四個狀況輸出:

Case1:若該線段兩頂點 s、p 皆位於可視邊界內,則輸出頂點 p。

Case2:若該線段頂點 s 位於可視邊界內,頂點 p 位於可視邊界外,則只輸出

該線段與可視邊界的交點 i。

Case3:若該線段頂點 s、p 皆位於可視邊界外,則無輸出。

Case4:若該線段頂點 s 位於可視邊界外,頂點 p 位於可視邊界內,則依序輸

出該線段與可視邊界的交點 i 和頂點 p。

Page 43: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

30

[圖 3-14]:SH 演算法中四種狀況判斷

根據以上四種 SH 演算法的判斷方式,理論上這樣的設計可應用於 pipeline

硬體的架構,[圖 3-15]中為利用傳統 SH 演算法設計 pipeline 架構於二維空間中

模擬裁切功能的範例。

[圖 3-15]:SH 演算法利用 pipeline 硬體概念於二維空間的設計

[圖 3-15]範例中,PE1 為針對右方可視邊界對於多邊形作裁切、PE2 為針對

上方可視邊界對於多邊形作裁切、PE3 為針對左方可視邊界對於多邊形作裁切、

PE4 為針對下方可視邊界對於多邊形作裁切。裁切的過程為:PE1 將輸入的三角

形裁切成四邊形後,PE2 再將輸入的四邊形裁切成五邊形(PE2 處理四邊形時,

PE1 可接收下一組待處理的三角形),接著 PE2 輸出的五邊形再經由 PE3、PE4

的裁切後,得到一組七邊形的最終輸出。但此作法有極大的缺點為每個 PE 的輸

入/輸出皆為該多邊形所有的頂點,即一組 Vertex list。由於每個 PE 處理所需花

費的時間為該多邊形的線段個數,若依照 pipeline 的概念實作,每個 pipeline stage

所需花費的時間為求交點與判斷頂點位於可視邊界內外部的處理時間。如此一

來,這樣的設計無論在硬體空間的需求和處理時間的耗費都需要極大的成本。

Page 44: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

31

由於 SH 演算法所提之四種狀況判斷為對於輸入的線段作判斷,可能的輸出

為無輸出、輸出一個點、輸出兩個點共三種可能,對於 PE 輸入/輸出格式的設計

於硬體方面設計較為複雜且不易實作。因此[4]修改每個 PE 的輸入/輸出格式皆

為一個頂點,藉由 SH 演算法所提出的概念,定義 PE 為一點輸入/輸出的狀況判

斷,[圖 3-16]為利用此演算法判斷的硬體架構示意圖。

[圖 3-16]:定義 PE 為一點輸入/輸出的 pipeline 硬體架構於二維空間

定義 PE 為一點輸入/輸出的狀況判斷共六種,每個 PE 一次只作單一可視邊

界的裁切判斷,其裁切判斷狀況敘述如下:

Case1:若要處理的只有一個頂點,且此頂點位於裁切直線 inside 的位置,

則輸出該頂點。

Case2:若要處理的只有一個頂點,且此頂點位於裁切直線 outside 的位置,

則無輸出。

Case3:若要處理的有兩個頂點,新進來的頂點稱為 Vn,之前進來的頂點稱

為 Vm。若 Vm 在裁切直線 outside 的位置,Vn 在裁切直線 inside 的位置,

則輸出線段 VmVn 與裁切直線的交點 Vi。

Case4:若要處理的有兩個頂點,新進來的頂點稱為 Vn,之前進來的頂點稱

為 Vm。若 Vm 在裁切直線 inside 的位置,Vn 在裁切直線 outside 的位置,

則分為 Case4.1 與 Case4.2 兩種判斷:

Case4.1:若線段 VmVn 為三角形的最後一個線段或之前處理過的線段

裡有 Case 3 的情形且與線段 VmVn 為同一個三角形,則依序輸出 Vm

以及線段 VmVn 與裁切直線的交點 Vi (由於發生此狀況需輸出兩個頂

點,該 PE 需 stall 一次)。

Page 45: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

32

Case4.2:若線段 VmVn 沒有符合 Case 4.1 的情形,則輸出線段 VmVn

與裁切直線的交點 Vi。

Case5:若要處理的有兩個頂點,新進來的頂點稱為 Vn,之前進來的頂點稱

為 Vm。若 Vm 在裁切直線 inside 的位置,Vn 在裁切直線 inside 的位置,則

分為 Case5.1、Case5.2、Case5.3 三種判斷:

Case5.1:若之前處理過的線段裡有 Case 3 的情形且與線段 VmVn 為同

一個三角形,則輸出頂點 Vm。

Case5.2:若之前處理過的線段裡沒有 Case 3 的情形而且線段 VmVn 為

三角形的最後一個線段,則無輸出。

Case5.3:若線段 VmVn 沒有符合 Case 5.1 的情形也沒有符合 Case 5.2

的情形,則輸出頂點 Vn。

Case6:若要處理的有兩個頂點,新進來的頂點稱為 Vn,之前進來的頂點稱

為 Vm。若 Vm 在裁切直線 outside 的位置,Vn 在裁切直線 outside 的位置,

則無輸出。

[圖 3-17]:定義 PE 為一點輸入/輸出之演算法六種狀況判斷

Page 46: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

33

[圖 3-18]:一點輸入/輸出之演算法範例於二維空間應用

[圖 3-18]為在二維空間中應用一點輸入/輸出演算法的範例與硬體架構示意

圖。該範例為包括一個 Corner point 於三角形內部,橫座標為時間軸,縱座標為

不同的 PE(處理不同的裁切直線判斷),該三角形於所提出的設計共需花 11 個

stage 的處理時間。於裁切硬體中,PE 間的資料傳遞型式增加訊號的判斷,修正

了傳統 pipeline 的傳輸方式。若應用此裁切硬體於三維空間,則需要六個 PE 來

處理六個裁切平面。

3.3 修改版本 SH 演算法 (Modified SH Algorithm)

[圖 3-19]:應用修改版本 SH 演算法 pipeline 硬體架構於二維空間

Page 47: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

34

[圖 3-20]:修改版本 SH 演算法所定義之區間

此節介紹修改版本 SH 演算法(Modified SH algorithm)[4],根據 3.2 節中所提

的定義 PE 一點輸入/輸出演算法作修改。在一點輸入/輸出演算法中,各 PE 只對

於單一可視邊界作裁切判斷,修改版本 SH 演算法則定義各 PE 同時對於兩平行

可視邊界作裁切判斷(如 Xmax 和 Xmin,Ymax 和 Ymin),各 PE 仍維持一點輸

入/輸出的格式。這樣的設計方式對於硬體設計方面,可使裁切系統縮減一半 PE

的個數,如[圖 3-19]所示,與原本一點輸出/輸入方法相比少了兩個 PE 的面積。

由於 PE 對於同時作兩平行裁切直線的判斷設計,於二維空間中可被分割成

三個區間:Out1 region、In region、Out2 region,[圖 3-20]為示意圖。且原本一點

輸入/輸出演算法的判斷狀況需要作簡單的修改。修改版本 SH 演算法狀況判斷敘

述如下:

Case1:若要處理的只有一個頂點,且此頂點位於裁切直線 inside 的位置,

則輸出該頂點。

Case2:若要處理的只有一個頂點,且此頂點位於裁切直線 outside 的位置,

則無輸出。

Case3:若要處理的有兩個頂點,新進來的頂點稱為 Vn,之前進來的頂點稱

為 Vm,若 Vm、Vn 皆位於 Out1 region 或 Vm、Vn 皆位於 Out2 region,則

無輸出。

Page 48: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

35

Case4:若要處理的有兩個頂點,新進來的頂點稱為 Vn,之前進來的頂點稱

為 Vm,若 Vm、Vn 其中之一位於 Out1 region,其中之一位於 Out2 region,

則依序輸出線段 VmVn 與兩裁切直線的兩交點 Vo 與 Vp。

Case5:若要處理的有兩個頂點,新進來的頂點稱為 Vn,之前進來的頂點稱

為 Vm,若 Vm 位於 Out1 region 或 Out2 region,Vn 位於 In region,則輸出

線段 VmVn 與裁切直線的交點 Vi。

Case6:若要處理的有兩個頂點,新進來的頂點稱為 Vn,之前進來的頂點稱

為 Vm,若 Vm 位於 In region,Vn 位於 Out1 region 或 Out2 region,則分為

Case6.1、Case6.2 兩種判斷:

Case6.1:若線段 VmVn 為多邊形的最後一個線段或之前處理過的線段

裡有Case 5的情形且與線段VmVn為同一個多邊形則依序輸出頂點Vm

和線段 VmVn 與裁切直線的交點 Vi。(由於發生此狀況需輸出兩個頂

點,該 PE 需 stall 一次)。

Case6.2:若線段 VmVn 沒有符合 Case 6.1 的情形,則輸出線段 VmVn

與裁切直線的交點 Vi。

Case7:若要處理的有兩個頂點,新進來的頂點稱為 Vn,之前進來的頂點稱

為 Vm,若 Vm 位於 In region,Vn 位於 In region,則分為 Case7.1、Case7.2

三種判斷:

Case7.1:若之前處理過的線段裡有 Case 5 的情形且與線段 VmVn 為同

一個多邊形,則輸出頂點 Vm。

Case7.2:若之前處理過的線段裡沒有 Case 5 的情形而且線段 VmVn 為

多邊形的最後一個線段,則無輸出。

Case7.3:若線段 VmVn 沒有符合 Case 7.1 的情形也沒有符合 Case 7.2

的情形,則輸出頂點 Vn。

Page 49: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

36

[圖 3-21]:修改版本 SH 演算法範例於二維空間應用

[圖 3-21]為在二維空間中應用修改版本 SH 演算法範例與硬體架構示意圖。

與[圖 3-18]相同範例作比較,該三角形於所提出的設計共需花 9 個 stage 的處理

時間。於裁切硬體中,PE 間資料傳遞型式同樣地增加訊號的判斷,修正了傳統

pipeline 的傳輸方式。若應用此裁切硬體於三維空間,則只需三個 PE 來處理六

個裁切平面,如此設計雖增加了幾個狀況的判斷,但可以縮減一半 PE 的個數。

Page 50: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

37

[圖 3-22]:修改版本 SH 演算法七種狀況判斷

3.4 改善修改版本 SH 演算法 (Improved Modified

SH Algorithm)

3.3 節中所提的修改版本 SH 演算法(Modified SH algorithm)對於硬體方面提

供了更有效率的設計,但其中還是有可作改善的部分。改善修改版本 SH 演算法

(Improved Modified SH algorithm)[4],對於線段 VmVn 為(In,In)及(In,Out)的狀況

作了修正,可減少修改版本 SH 演算法中處理各三角形間的 Input Stall。[圖 3-23]

Page 51: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

38

為比較修改版本SH演算法(Original version)與改善修改版本SH演算法(Improved

version)的差異:在第四個 cycle 處理第一個三角形的最後一個線段時,於修改版

本 SH 演算法的判斷會停止輸入,而改善修改版本 SH 演算法的判斷則可避免掉

此現象以減少每個三角形之間的 Input Stall。若對於需要畫 N 個三角形的物件,

以改善修改版本演算法可減少 N-1 個 cycle 的處理時間。

time

PE1 vertex

process12 edge

process

23 edge

process

31 edge

process1vertex

process12 edge

process

23 edge

process31 edge

process

Original version

time

PE1 vertex

process12 edge

process

23 edge

process

31 edge

process

12 edge

process

23 edge

process

31 edge

process

Improved version

1

2

3 1

2

3

1 2 3 1 2 3

1 2 3 1 2 3

Inputstall

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

[圖 3-23]:以改善修改版本 SH 演算法減少 Input Stall

而改善修改版本 SH 演算法為對於修改版本 SH 演算法作 Case6 與 Case7 的

部份修改,修改的狀況判斷如下:

Improved Case6:若要處理的有兩個頂點,新進來的頂點稱為 Vn,之前進來

的頂點稱為 Vm,若 Vm 位於 In region,Vn 位於 Out1 region 或 Out2 region,

則依序輸出頂點 Vm 和線段 VmVn 與裁切直線的交點 Vi。(由於發生此狀況

需輸出兩個頂點,該 PE 需 stall 一次)。

Improved Case7:若要處理的有兩個頂點,新進來的頂點稱為 Vn,之前進來

的頂點稱為 Vm,若 Vm 位於 In region,Vn 位於 In region,則依序輸出頂點

Vm 和頂點 Vn。

Page 52: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

39

[圖 3-24]:改善修改版本 SH 演算法所修正的狀況判斷

雖然改善修改版本 SH 演算法透過減少了三角形間的 Input Stall,達到縮減

繪製整體物件的處理時間,但應用此演算法的判斷方式處理 TA 狀況的三角形,

會有點重複輸出的現象(如附錄 A 所述),反而會增加其處理的時間。而目前的研

究發現,實際上不需作裁切動作的三角形個數是大於需作裁切動作的三角形個

數,因此對於包含較多需作裁切動作的三角形的物件,較適合選擇此演算法實作。

3.5 兩點輸入/輸出裁切演算法 (Proposed Clipping

Algorithm)

3.3節中所提的修改版本 SH演算法(Modified SH algorithm)為設定每個 PE中

處理兩平行裁切直線且定義每次 PE 的輸入/輸出為一個頂點。此節為提出一新演

算法判斷方式(Proposed clipping algorithm),同樣設定每個 PE 中處理兩平行裁切

直線,但定義每次 PE 的輸入/輸出為兩個頂點。於硬體實作方式如同[圖 3-19]所

示,同樣地也和修改版本 SH 演算法定義 Out1 region、In region、Out2 region 三

個區域,如[圖 3-20]。所提出的判斷方式如下所述:

Page 53: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

40

判斷方式分兩大類各五種不同狀況的輸出判斷:

Condition 1:該 PE 處理的線段為多邊形的第一邊或之前無輸出,以此判斷

Case 1:若輸入線段 VmVn 為 Out1->Out1 或 Out2->Out2,則無輸出。

[圖 3-25]:兩點輸入/輸出演算法狀況判斷 1_1

Case 2:若輸入線段 VmVn 為 Out1->Out2 或 Out2->Out1,則輸出線段

VmVn 與兩裁切直線的兩交點所構成之線段 I1I2。

[圖 3-26]:兩點輸入/輸出演算法狀況判斷 1_2

Case 3:若輸入線段 VmVn 為 Out1->In 或 Out2->In,則輸出線段 VmVn

與某一裁切直線的交點和頂點 Vn 所構成之線段 I1Vn。

[圖 3-27]:兩點輸入/輸出演算法狀況判斷 1_3

Page 54: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

41

Case 4:若輸入線段 VmVn 為 In->Out1 或 In->Out2,則輸出頂點 Vm

和線段 VmVn 與某一裁切直線的交點所構成之線段 VmI1。

[圖 3-28]:兩點輸入/輸出演算法狀況判斷 1_4

Case 5:若輸入線段 VmVn 為 In->In,則輸出頂點 Vm 和頂點 Vn 所構

成之線段 VmVn。

[圖 3-29]:兩點輸入/輸出演算法狀況判斷 1_5

Condition 2:不為 Condition 1 情況,其他狀況以此判斷

Case 1:若輸入線段 VmVn 為 Out1->Out1 或 Out2->Out2,則無輸出。

[圖 3-30]:兩點輸入/輸出演算法狀況判斷 2_1

Page 55: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

42

Case 2:若輸入線段 VmVn 為 Out1->Out2 或 Out2->Out1,則需輸出兩

線段 PreI1 和 I1I2,其中 Pre 為前一次輸出線段的第二個頂點,I1 和 I2

為線段 VmVn 與兩裁切直線的兩交點。(由於發生此狀況需輸出兩個頂

點,該 PE 需 stall 一次)。

[圖 3-31]:兩點輸入/輸出演算法狀況判斷 2_2

Case 3:若輸入線段 VmVn 為 Out1->In 或 Out2->In,則需輸出兩線段

PreI1 和 I1Vn,其中 Pre 為前一次輸出線段的第二個頂點,I1 為線段

VmVn 與某一裁切直線的交點。(由於發生此狀況需輸出兩個頂點,該

PE 需 stall 一次)。

[圖 3-32]:兩點輸入/輸出演算法狀況判斷 2_3

Case 4:若輸入線段 VmVn 為 In->Out1 或 In->Out2,則輸出線段 PreI1,

其中 Pre 為前一次輸出線段的第二個頂點,I1 為線段 VmVn 與某一裁

切直線的交點。

Page 56: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

43

[圖 3-33]:兩點輸入/輸出演算法狀況判斷 2_4

Case 5:若輸入線段 VmVn 為 In->In,則輸出線段 PreVn,其中 Pre 為

前一次輸出線段的第二個頂點。

[圖 3-34]:兩點輸入/輸出演算法狀況判斷 2_5

※ 每個 PE 最後需要再輸出多邊形的最後一邊,即線段 PreFirst。其中

Pre 前一次輸出線段的第二個頂點,First 為紀錄每個 PE 輸出第一個

線段的第一個頂點。

演算法各種狀況的設計需以輸出完整的多邊形,以及不破壞頂點的順逆時針

順序為考量,因此線段中兩頂點有先後之分,位於各種區域有不同的輸出判斷。

此外,為保證多邊形不會有缺少輸出線段的狀況發生(即裁切後產生之新的線

Page 57: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

44

段),加入包含 Pre 頂點的輸出判斷,如[圖 3-35]為有無包含加入 Pre 頂點輸出判

斷的差異,影響到整個裁切演算法執行的正確性。以裁切 X 平面為例,作線段

12 與線段 23 的裁切時可得到線段 14 與線段 53;加入 Pre 頂點輸出判斷則會多

輸出線段 45,才能得到完整裁切的多邊形。

[圖 3-35]:裁切演算法設計說明範例

[圖 3-36]:兩點輸入/輸出演算法範例於二維空間應用

Page 58: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

45

如[圖 3-36]中二維空間應用範例,PE1 第一次輸出的線段 14,則 First 為 1;

PE2 第一次輸出的線段 84,則 First 為 8。在各 PE 最後輸出多邊形的最後一邊時,

該 PE 為 Idle 狀態不作任何判斷處理。經 PE1 裁切後所得的多邊形最後一邊為線

段 71,而 PE2 裁切後所得的多邊形最後一邊為線段 b8。

[圖 3-36]為在二維空間中應用兩點輸入/輸出演算法的範例。與[圖 3-18]、[圖

3-21]相同範例作比較,該三角形於所提出的設計共需花 8 個 stage 的處理時間。

以所提出的範例與一點輸入/輸出演算法比較,該三角形的處理時間少了一個

stage 的處理時間,此外本演算法的判斷較為簡潔,因此在硬體實作上較易實作,

減少許多 flag 的判斷,但對於硬體空間的需求較高,如[表 3-3][圖 3-37]為應用不

同裁切演算法設計的比較。

[表 3-3]為四種延伸 SH 演算法概念設計之裁切演算法比較。Stage 單位為 PE

處理一次輸出判斷的處理時間,若輸出判斷不需要求新的交點則直接輸出,若遇

到需求新的交點的狀況則需花費求一個新交點的運算時間,而求交點所需的運算

時間取決於設計者對於硬體運算單元設計的硬體架構。在 Improved modified SH

algorithm 設計中,雖然該演算法對於 Modified SH Algorithm 作了狀況判斷的修

改,改善了三角形間的 input stall,但修改的輸出判斷對於 TA 狀況三角形的處理

時間反而增加許多。由[表 3-2]中顯示出本論文提出之裁切演算法對於處理一個

三角形的 Best case 與 Worst case 皆有較佳的輸出效率,但每個 PE 單元比起其他

演算法需多保留兩個頂點暫存器的空間,而一個頂點暫存器空間取決於使用者定

義之支援頂點屬性的多寡。

以下為[表 3-3]比較的前提假設:

˙以二維空間應用為例

˙假設各演算法運用最大 PE 使用度達到最佳 pipeline 效益

˙假設各 PE 內部皆只有一個求交點的運算單元,即 data path 相同

˙假設裁切引擎輸入效率符合各演算法的需求

Page 59: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

46

[表 3-3]:應用不同裁切演算法之比較

※ PE: Processing Element Altered SH Algorithm : 一點輸入/輸出裁切演算法

Modified SH Algorithm : 修改版本 SH 演算法

Improved Modified SH Algorithm : 改善修改版本 SH 演算法

Proposed Clipping Algorithm : 兩點輸入/輸出裁切演算法

※ Algorithms processing flow of best case and worst case triangles are shown detailed in part I and

part II in appendix A.

Page 60: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

47

[圖 3-37]:以 SH 演算法為概念發展之裁切演算法

為了利用自行設計之演算法實作裁切功能,考慮了將裁切功能利用頂點處理

器內部的硬體架構,以指令執行的方式實現裁切功能,但評估後在硬體面積與執

行效能上效益不彰,此部分將於第四章討論。因此考量以額外硬體的設計實現裁

切功能,利用 Dual-path 的硬體架構設計區分不需裁切的三角形(Triangle in accept

case,TA)與需裁切的三角形(Triangle in clipping case,TC)兩類,以達到較佳的輸出

效率,此部分將於第五章討論。於額外硬體實作裁切功能,在裁切演算法的選擇

上,根據[表 3-3]的分析結果,可知 Modified SH Algorithm 與 Proposed Clipping

Algorithm 有較好的輸出效益。而 Improved SH Algorithm 中對於 TA 類的三角形

雖然可利用 Dual-path 架構不作裁切判斷直接輸出,避免掉 Improved SH

Algorithm 處理 TA 類花費過多處理時間的情形,但 TC 類的三角形若包含不需裁

切的線段,同樣地會發生頂點重複輸出的現象,造成效能下降,如附錄 A 中 Part

III 所列之 TC 類三角形所示。由於希望設計的系統能在 FPGA 上執行,而 FPGA

板子有其硬體大小的限制,因此以面積為考量的情況下,在 Dual-path 架構中選

擇的裁切演算法為利用 Modified SH Algorithm 實現。

Page 61: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

48

第 4 章 於頂點處理器中支援裁切功能 設計裁切功能於三維繪圖流程中:1. 可利用頂點處理器之硬體架構支援,

以指令描述執行裁切運算,如此一來可省去裁切系統的面積;2. 或是以額外硬

體設計裁切系統,對於裁切的運算功能設計較適合的硬體架構,處理頂點處理器

所輸出的頂點。本章首先介紹欲搭配之頂點處理器概觀,並於最後討論若以頂點

處理器支援裁切功能需要的負擔。

4.1 使用指令集格式

[表 4-1]:自定之指令集格式

Function Opcode Description 資料搬移 MVI Data Move

MVR Register Value Move LD Load The Value Of Memory ST Store The Value Into The Memory

基本算術運算 ADD Floating Add MUL Floating Multiply MAD Floating Multiply And Add DP 4,3,2,Or 1 Items Dot Product SHRL Right Or Left Shifter Amount SHRLi Right Or Left Shifter by immediate value

基本邏輯運算 XOR XOR operation AND AND operation OR OR operation

特殊函數運算 RCP Reciprocal RSQ Reciprocal Square Root LOG2 Log Bias 2 POW2 Exponent Bias 2 DSQ Division Square Root DIV Division

數值比較運算 MIN Min MAX Max BLE Set On Less Than Or Equal

Page 62: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

49

BGE Set On Greater Than Or Equal 分支指令 CAL Function Call

BEQ Branch If Equal BNEQ Branch If Not Equal

欲搭配之頂點處理器總共支援 27 個指令[表 4-1],其中有屬於暫存器運算的

指令,用來組合成各種運算,也有屬於分支的指令。且此頂點處理器是可以同時

支援 Floating-point、Fixed-point 和 Vector 及 Scale 模式,所以在指令格式中定義

了這些欄位,可以得知輸入進來的格式是屬於那一種。

4.2 所支援運算功能

欲搭配之頂點處理器架構提供的功能:

˙支援 OpenGL-ES 1.x 幾何子系統[3]部份功能

■ 矩陣運算(Modelview、Projection、Vertex Normal Transformation)

以 DP;DP;DP;DP;指令

或 MUL;MAD;MAD;MAD;指令完成

■ 座標正規化(Perspective Division)

以 DIV 指令完成

■ 光源計算(Lighting)

以 DP 指令完成內積運算

以 LOG;MUL;EXP 指令完成指數運算

以 MAD;MAD;MAD 指令完成各項加總

■ 向量運算(Vector)

以 ADD 指令完成

■ 外積運算(Cross Product)

以 MUL;MAD 指令完成

■ 正規化運算(Normalization)

以 DP;DSQ 指令完成

Page 63: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

50

˙其他加入的功能

■ 取絕對值(Absolute Value)

■ Matrix Transformation

■ 三個值的正規化運算(3-Component Normalize)

■ 求行列式值(Determinant of a 3x3 Matrix)

4.3 使用之硬體架構

[圖 4-1]:與搭配之頂點處理器系統概觀

[圖 4-1]為整個系統架構的介面,紅色框內包含欲使用之頂點處理器架構。

其中包括了 4-way SIMD 向量單元[圖 4-2]、特殊運算單元(Special Function unit)

[圖 4-3]、周邊硬體配置如 double buffer 的設計 VAB0、VAB1、VOB0、VOB1、

以及儲存指令與常數值所需要的記憶體空間。

Page 64: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

51

[圖 4-2]:欲搭配之頂點處理器中 4-way SIMD 向量單元

[圖 4-3]:欲搭配之頂點處理器中特殊運算單元

Page 65: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

52

[圖 4-4]:欲搭配頂點處理器中切割之 9 級 pipeline

4.4 以頂點處理器支援裁切功能

由 4.1 節可知,欲使用之頂點處理器無支援刪除背面功能(Culling)與裁切功

能(Clipping),是由於頂點處理器以處理頂點為單位,而刪除背面元件功能與裁

切功能以處理三角形為單位,因此以頂點處理器支援此兩項功能必須每處理完三

個頂點資料才可以執行,必須多出空間存放頂點資料,造成系統上的負擔。另外

因為裁切演算法中主要為狀況的判斷,需求交點時才會需要運算,因此支援裁切

硬體會有許多 branch 的指令發生,也因為 data dependency 的關係造成系統

pipeline 執行效能下降。在[24]中提出以 SIMD 方式作裁切功能的概念,以類似

3.2 節中 SH 的裁切演算法,利用多份硬體對於多邊形不同線段作同一裁切直線

的裁切,最後提出演算法判斷將各線段裁切後的輸出,組合成一裁切後的多邊形

[圖 4-5],但其中並無提到硬體實作的部分。

Page 66: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

53

[圖 4-5]:[24] 利用 SIMD Clipping 概念

然而在欲使用之頂點處理器中,可以作裁切動作的階段如[圖 4-6]所示,在

不同的處理階段作裁切會有不同的裁切範圍判斷。而裁切範圍數值則需透過軟體

端給予,並儲存在頂點處理器中的 constant memory。[圖 4-7]、[圖 4-8]分別為考

量在 Projection 與 Viewport 階段後作裁切的指令個數與流程。

Clip Boundaries 3D Operations

[圖 4-6]:在頂點處理器中可作裁切功能階段與不同的裁切範圍

Page 67: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

54

[圖 4-7]:考量於 Projection 後作 Clipping 指令流程

[圖 4-8]:考量於 Viewport 後作 Clipping 指令流程

Page 68: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

55

若以現有指令描述裁切演算法,則可能用到的指令為 MVI, MVR, BEQ,

ADD, MAD, DIV, BGE, BLT, CAL, NOP 等等。由於 OpenGL-ES 2.x 所支援之頂

點屬性較多,在每次搬移一個頂點至暫存器時,會用到多道 MOV 指令,同樣會

使系統執行效能下降,而且增加 Instruction memory 的空間。若 Instruction memory

的空間不夠儲存整個裁切演算法需要的指令,則遇到 branch 情況時,有可能發

生找不到下一道指令的問題。由於頂點處理器為針對三維幾何運算功能所設計之

架構,因此裁切演算法所需要的判斷以及簡單的求交點運算,交由傳統的 CPU

執行或以額外硬體支援較為妥當。其他研究也顯示出對於裁切硬體的設計皆使用

額外硬體支援[27]。[表 4-2]為此節討論整理表,而附錄 B 為於頂點處理器執行裁

切功能指令設計。因此本論文為考慮利用額外硬體的設計來實現裁切系統所需的

架構與運算功能。

[表 4-2]:頂點處理器支援裁切功能問題與可能解決辦法

可能遭遇的問題 可能解決的辦法

頂點的儲存空間 增加頂點處理器暫存器個數或記憶體大小

指令的儲存空間 增加 Instruction Memory 空間

指令集的設計 可設計對於裁切功能較適合的指令

Branch 指令與 data dependency 作指令最佳化排序

Page 69: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

56

第 5 章於額外硬體設計支援裁切功能 本章節為介紹利用額外硬體設計裁切模組,首先介紹整個裁切系統的構造與

選擇實作的演算法所搭配的硬體,以及整個裁切系統的行為模式設定。接著為內

部運算單元的硬體設計方式,藉由利用共用硬體與 pipeline 概念,有效縮減硬體

面積的使用同時增加硬體輸出的效能。

5.1 裁切系統硬體架構

所設計之裁切系統為配合頂點處理器支援 OpenGL-ES 2.0 規格的三維繪

圖,如第四章中所述之頂點處理器與規格。在三維繪圖的流程中[圖 5-2],在

Projection 階段作完後即可進行裁切的功能,以避免後端進行不必要的運算。但

對於額外硬體設計的裁切系統,最好的擺放位置為頂點處理器處理完畢的階段之

後,即物件所有的頂點皆作完 Viewport mapping,才進行裁切判斷。在前一版對

於支援 OpenGL 1.0 所設計的裁切引擎中[3],對於欲處理的 TA 與 TC 三角形(TR

狀況的三角形已在之前的階段刪除),皆走同一條 pipeline 路徑。[4][23]研究顯示

出,物件部份 frame 所構成之三角形多數為 TA 狀況,在前一版裁切系統設計中,

若某個 PE 發生了求交點的情況,則該處理中的 PE 需 Stall 之前的 PE,甚至是

Stall 到 GM 的部分,此現象造成了之後許多待處理且為 TA 狀況的三角形只能等

待進行裁切中的三角形作完後才能作處理。這樣的現象會使整個系統在運算中產

生不必要的等待時間,[圖 5-1]為該現象的示意圖。因此,為了改善系統因為等

待裁切功能運算所浪費掉的時間,以 Dual path 的概念設計了裁切系統的架構。

PE1 PE2 PE3

Clipping Engine

StallStall

[圖 5-1]:PE2 處理中,Stall 住 PE1 與 GM 示意圖

Page 70: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

57

所規劃之系統關係圖如[圖 5-2]所述:

由於頂點處理器所支援的功能主要為Transformation

與 Lighting 兩大功能(T&L)。在頂點處理器將構成物

件的頂點運算至 Viewport mapping 階段完畢後一次

輸出一個頂點至裁切系統。裁切系統每次由頂點處

理器拿到一個頂點,並作該頂點目前於三維空間的

Outcode 判斷,作完三個頂點(一個三角形)後,即可

判斷該三角形是否需要作裁切,若為 TA 狀況的三角

形則走綠色路徑至 FIFO 中,若為 TC 狀況的三角形

則走紅色路徑至 Clip 中,作求交點的運算判斷。最

後以 Mux 單元選擇輸出。Converter 單元將 Clip 單

元輸出裁切後的多邊形,以 triangle_fan 的模式拆解

成若干個三角形,再輸出至 Mux 單元,如[圖 5-4]。

[表 5-2]為此架構以 UMC 90nM 製程合成之數據。

[圖 5-2]:頂點處理器與裁切系統 1

在裁切系統運作中,由於 TA 狀況的三角形不需要作運算,故 Clip 進行求交

點的運算時,TA 狀況的三角形可以同時經由綠色路徑輸出,而 Outcode 單元、

FIFO單元、Clip單元、Mux單元皆為並行運作。若在Clip單元進行運算中,Outcode

欲輸出 TC 狀況的三角形至 Clip 單元,則 Clip 單元需發出 Stall 訊號告知 Outcode

停止輸出,此時 Outcode 單元也需發出 Stall 訊號告知頂點處理器,要求停止輸

出。若頂點處理器輸出的速度大於裁切系統消耗的速度,可能發生 FIFO 單元過

載的情況,則 FIFO 單元需發出 Stall 訊號告知 Outcode 單元,再往前 Stall 住頂

點處理器。不過由於頂點處理器的計算時間通常較久,故 FIFO 單元滿載的情況

會較少發生。其他可考量的設計方式為,在 Outcode 單元中加入適當的 buffer 或

加大 FIFO 單元的大小,可減少頂點處理器 Stall 的情況,即利用硬體面積換取整

體三維繪圖系統的執行效率。

Page 71: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

58

在系統架構中,Outcode 功能即 Pre-clipping

的功能,若能愈早進行,則能減少的運算就愈

多,系統也將會更有效率。[圖 5-3]為考慮增加

Outcode 指令於頂點處理器中,在 Projection 處

理後作 Outcode1 判斷,可提早過濾出 TR 狀況

的三角形並刪除。而在裁切系統中所使用的

Outcode2 單元中,由於 TR 類的三角形已被刪

除,故 Outcode2 單元僅作 TA 和 TC 類的三角形

分類動作並送往 FIFO 單元和 Clip 單元中。不過

設計判斷類的指令於頂點處理器中可能拖慢系

統的速度,且頂點處理器需收集三個頂點為一

三角形後才可作 Outcode 判斷,故這樣的設計方

式需以不同的測試資料評估出所減少的運算時

間是否比 Outcode 指令多花費的時間來得多。

[圖 5-3]:頂點處理器與裁切系統 2

在裁切系統中的 Clip 單元,如前述所提,為處理 TC 狀況的三角形。在前一

版的裁切系統中,為應用 3.4 節的改善修改版本 SH 演算法,因此裁切系統中為

三個 PE 單元的構造。在這版所計劃的裁切系統中,由於大部份的判斷狀況皆不

需求交點,會發生求交點的情況佔極少數,如[表 5-1]中跑 Angelus 測試資料所顯

示之數據,發現欲繪製的三維物件中需要求交點的情形為極小的機率。由於各

PE 的行為模式皆相同,差在作不同裁切平面的範圍,因此在 Clip 單元中,考慮

從原本三個 PE 單元,修改成只使用一個 PE 單元,輪流對於不同的裁切平面作

裁切動作。藉由應用一個 PE 單元,使 Clip 的運算較慢,配合求交點狀況較少的

現象,在空間的使用上可以縮減原本硬體面積的三分之二。同時 FIFO 單元可並

行運作,輸出 TA 狀況的三角形。故此裁切系統利用 Dual path 的設計概念,除

了達到較好的輸出效率外,在硬體面積上也有不錯的表現。

Page 72: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

59

[表 5-1]:Angelus benchmark 於前一版裁切系統中求交點情況

PE A case B case C case D case E case Total case

PE1 21306525

(97.75%)

173722

(0.8%)

50452

(0.23%)

109444

(0.5%)

156083

(0.72%)

21796226

(100%)

PE2 10232630

(97.51%)

142590

(1.36%)

20949

(0.2%)

60662

(0.58%)

36595

(0.35%)

10493426

(100%)

PE3 5976101

(98.38%)

59874

(0.99%)

14933

(0.25%)

23598

(0.39%)

76

(0.00125%)

6074582

(100%)

※ A case:No vertex out or one inside vertex out

B case:One intersection vertex out

C case:Two inside vertex out

D case:One inside vertex out and one intersection vertex out

E case:Two intersection vertex out

[表 5-2]:Clipping Engine 合成數據與各單元面積比例

[圖 5-4]:以 triangle_fan 方式拆解多邊形

Page 73: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

60

在 OutCode 單元中,由於考慮到頂點處理器的處理時間較長,因此內部利用

兩個 Compare 單元依次求出該頂點相對於 X 平面、Y 平面、Z 平面所構成三維

空間的 outcode 編碼。當 Outcode 由頂點處理器收集三個頂點並完成該三角形的

狀況判斷後,即輸出至 FIFO 單元或 Clip 單元。

[圖 5-5]:OutCode 單元硬體架構

[表 5-3]:OutCode 單元合成數據與各單元面積比例

在 Clip 單元中,應用一個 PE 的概念作不同平面的裁切動作。當發生 PE 有

兩組輸出且需 stall 的情況時,由於該 PE 下次需被切換,故對於 stall 的情況需準

備兩組輸出的暫存器的空間。如[圖 5-6]中,三組 PE 分別裁切 X 平面、Y 平面、

Z 平面,控制單元執行 PE 的順序為 1->2->3->1->2->3->1->2….,總共需花費六

組輸出的暫存器空間。為了減少暫存器的使用以節省空間,可改寫控制單元執行

PE 的順序為 1->2->3->2->1->2->3->2….,可縮減兩組輸出暫存器的空間,如[圖

5-7]所示意。

Page 74: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

61

[圖 5-6]:PE 控制單元設計 1 [圖 5-7]:PE 控制單元設計 2

[圖 5-8]:Clip 單元硬體架構

[表 5-4]:Clip 單元合成數據與各單元面積比例

在 FIFO 單元中,為接收一組由 OutCode 單元輸出 TA 狀況的三角形,再依

次輸出頂點至 Mux 單元。由於當 Clip 單元有輸出時 FIFO 單元無法輸出,故在

FIFO 內部置放兩個三角形(六個頂點)的暫存器空間。

在 Mux 單元中,輸入與輸出格式皆設定為一個頂點。輸出判斷方式為:1.

當 FIFO 單元正在輸出一組三角形時,Clip 單元需等待 FIFO 輸出完畢才可作輸

出,避免破壞三角形頂點的輸出順序;2. 其他狀況,Clip 單元比 FIFO 單元有較

高的輸出優先權。

Page 75: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

62

5.2 運算單元硬體設計

5.2.1 浮點數與定點數運算單元

此系統的架構設計為針對 OpenGL-ES 2.0 規格所設定,因此所支援的資料格

式為 IEEE 754 單精準度浮點數運算定義,並應用於[圖 5-8] PE 中內部的運算單

元。由於頂點處理器指令格式定義為可同時支援定點數與單精準度浮點數的運

算,因此在裁切系統的運算單元構思上,設計了能同時支援定點數與單精準度浮

點數的運算。而裁切功能唯一所需要的運算為求線段與某裁切平面的交點,求交

點的公式如下:

[方程式 5-1]:求交點內插公式

在[方程式 5-1]求交點的公式中,由於每個頂點所包含許多屬性(Attribute),

如頂點座標(X,Y,Z,W)、頂點顏色(R,G,B,A)、以及多個頂點材質座標(S,T,R,Q)等

等,在應用此內插公式透過 X、Y、Z 其中一個座標屬性算出參數 t 值後,其餘

的屬性皆以相同的參數 t 值算出。[圖 5-9]為三維空間中兩頂點與裁切平面求交點

的示意圖,配合[方程式 5-2]以 X 座標求出參數 t 值後,對於交點 Pi 其餘的屬性

(Y,Z,W,R,G,B,A,S,T,R,Q…)皆以同樣的 t 值代入[方程式 5-1]計算,其中的 P0 與

P1 分別代表頂點 P0 與 P1 中不同的屬性值。

[圖 5-9]:三維空間中求交點示意圖 [方程式 5-2]:內插公式參數 t 值求法

01

0w

01

0w

01

0w

111000

t zz

t yy

t x x

)z,y,P1(x )z,y,P0(x

zzzzyyyyxxxx

w

w

w

−−==

−−==

−−==

平面求交點若跟

平面求交點若跟

平面求交點若跟

為線段的兩端點座標

Page 76: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

63

透過[方程式 5-1]可以知道求交點時,需要的運算功能為加法、乘法、與除

法,由於除法器於硬體設計中佔了極大的面積,故考慮除法的運算動作改成乘以

一個倒數值,因此求交點的硬體運算單元需包括加法器、乘法器、與求倒數的單

元。以下分別介紹所設計之各個運算單元的架構與功能:

■ Floating-point Adder (FADD)

˙支援 24-bit 定點數格式

˙主要支援 IEEE 754 Single Precision Floating-point 格式,另外參考了

[25],修正對於特殊狀況的判斷:

Denormal:flushed to zero

Infinity:e=255, as a value

NotANumber:e=255, as a value

由於 Denormal、Infinity、NotANumber 的特殊定義對於三維繪圖較

無太大的意義,故重新定義以數值表示,除了能增加數值的表示範圍

外,也可以減少硬體中所需要作的判斷。當硬體中發生了特殊表示的數

值時,會以 Violate 訊號拉起通知軟體端發生特殊表示的情況。

˙加法器位元寬度

[圖 5-10]:自定加法器寬度

使用 28-bit 的有號數加法器,作浮點數運算時最高位元為 0 表示正

數,加上 1-bit 的整數一與 23-bit 的小數部份,另外補上 3-bit 的 GRS

作之後 Rounding 單元中進位判斷所需的位元。作定點數運算時則最高

24 位元為定點數表示,後 4 位元補上 0。

Page 77: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

64

˙實作架構

[圖 5-11]:FADD 架構設計圖

˙合成數據 (5.25ns delay with UMC 90nM technology)

[表 5-5]:FADD 硬體各單元使用面積

Modules Gate Count (K) Percentage (%)

Unpack 0.33 4.71%

Align 1.41 20.11%

SCPS 0.93 13.27%

SignAdder(28-bit) 0.63 8.99%

Normalize1 1.85 26.39%

Rounding 0.37 5.28%

Normalize2 0.16 2.28%

Sub 0.47 6.70%

Mux0 0.02 0.29%

Add 0.16 2.28%

Pack 0.38 5.42%

Control 0.24 3.42%

FADD (Top Module) 7.01 100.00%

Page 78: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

65

■ Floating-point Multiplier (FMUL)

˙支援 24-bit 定點數格式

˙主要支援 IEEE 754 Single Precision Floating-point 格式,同樣參考了

[25],修正對於特殊狀況的判斷:

Denormal:flushed to zero

Infinity:e=255, as a value

NotANumber:e=255, as a value

˙乘法器位元寬度

[圖 5-12]:自定乘法器寬度

使用 25-bit 的有號數乘法器,作浮點數運算時最高位元為 0 表示正數,

加上 1-bit 的整數一與 23-bit 的小數部份。作定點數運算時則最高 24 位

元為定點數表示,後 1 位元補上 0。

˙實作架構

[圖 5-13]:FMUL 架構設計圖

Page 79: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

66

˙合成數據 (3.67ns delay with UMC 90nM technology)

[表 5-6]:FMUL 硬體各單元使用面積

Modules Gate Count (K) Percentage (%)

Unpack 0.36 4.53%

Pack 0.29 3.65%

Control 0.19 2.39%

SignMultiplier

(25-bit x 25-bit)6.16 77.48%

Normalize1 0.23 2.89%

Rounding 0.42 5.28%

Normalize2 0.20 2.52%

FMUL (Top Module) 7.95 100.00%

■ Floating-point Reciprocal (FRCP)

˙支援 24-bit 定點數格式

˙主要支援 IEEE 754 Single Precision Floating-point 格式,同樣參考了

[25],修正對於特殊狀況的判斷:

Denormal:flushed to zero

Infinity:e=255, as a value

NotANumber:e=255, as a value

Page 80: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

67

˙實作架構

[圖 5-14]:FRCP 架構設計圖

求倒數單元以Piecewise的方法設計[26] (即實作架構中SignRCP單

元),可選擇不同階數的方法實作之,硬體部分包括加法器、乘法器、

查表所需的 ROM、甚至會用到平方器。[圖 5-15]為應用多階 Piecewise

的示意圖。在實作上,考量一階與二階的架構,配合 24-bit 精準度的選

擇,如[圖 5-16][圖 5-17]。由於 Piecewise 一階架構所需的表格大小較二

階架構表格大出許多,透過合成數據發現,同樣對於 24-bit 精準度需

求,一階架構 FRCP 共花費 41.8k 的 gate count,而二階架構 FRCP 只需

11.54k gate count 的大小。故實作上選擇二階架構為倒數單元的主軸。

Page 81: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

68

m x_lo

rom_a0 rom_a1

mul01

sign extend

sign extend

multiop_add

rom_a0rom_a2

qur01

mul02

sign extend

[圖 5-15]:Piecewise 多階架構 [圖 5-16]:Piecewise 一階架構 [圖 5-17]:Piecewise 二階架構

˙合成數據 (4.33ns delay with UMC 90nM technology)

[表 5-7]:FRCP 硬體各單元使用面積

Modules Gate Count (K) Percentage (%)

Unpack 0.17 1.47%

Pack 0.16 1.39%

Control 0.05 0.43%

ROM0 0.80 6.93%

ROM1 1.24 10.75%

ROM2 0.62 5.37%

SignMultiplier1

(22-bit x 18-bit)2.69 23.31%

SignMultiplier2

(16-bit x 18-bit)2.06 17.85%

Squarer (17-bit) 1.92 16.64%

Adder(29-bit CSA) 1.59 13.78%

FRCP (Top Module) 11.54 100.00%

˙加法器與乘法器位元寬度

在應用 Piecewise 二階架構的倒數硬體中,需要一個 22-bit x 18-bit

大小與一個 16-bit x 18-bit 大小的乘法器、一個 17-bit 的平方器、以及

三個 29-bit 的 CSA(with 5 inputs)。

Page 82: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

69

5.2.2 設計運算架構與效能分析

如 5.1 節所述,若求交點運算單元花費愈多時間計算,則愈有可能發生裁切

系統消耗三角形速度太慢,造成前端頂點處理器必須 Stall 住的情況。因此本節

為對於根據求交點運算單元需要的運算,於硬體方面作面積與時間上的最佳化。

由於求交點計算公式有其資料運算的優先順序,如[方程式 5-3]與[圖 5-18]中所

示。因此在硬體方面需考慮資料運算的先後次序,以下為討論不同硬體設計中,

以計算 OpenGL-ES 1.0 為規格(即每個頂點屬性只包括 X,Y,Z,W,R,G,B,A,U,V),於

面積上的使用和該架構的產能。

[方程式 5-3]:重新定義[方程式 5-1] [圖 5-18]:求交點運算之 Data dependency

■ Independent Hardware Design

此 Data path 的設計方式為內部包括了一個 FADD、一個 FMUL、一個

FRCP 單元,每次可同時進行加法、乘法、以及倒數的運算。因此求交點運

算可分為五個步驟:

F–G (FADD)

1 / (F–G) (FRCP), D–E (FADD)

(D–E) / (F–G) (FMUL), B–C (FADD)

(B–C) * (D–E) / (F–G) (FMUL)

A + (B–C) * (D–E) / (F–G) (FADD)

Page 83: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

70

[圖5-19]為在 Independent Hardware

Design中 final state machine的最佳化設

計。每個頂點共十個屬性,因此

state3~state5 需跑九次,完成交點運算

共需 5 + 3 x 8 = 29 cycles。由於 FADD

單元所需之 delay 為 5.25ns,為所有運

算單元中花費最多處理的時間,故每個

state 需 5.25ns 的計算時間,求一個交點

需要 29 x 5.25 = 152.25 ns。

[圖 5-19]:FSM in Independent Hardware Design

而整體 Independent Hardware Design 面積共為 7.01k(FADD) + 7.95k(FMUL)

+ 11.54k(FRCP) = 26.5k gate count 的大小。

■ Shared Hardware Design

此 Data path 的設計方式為共用倒數硬體內的加法器與乘法器來作加法

與乘法,在此以二階的架構為共用硬體範例,每次只能作一次運算功能(加

法、乘法、求倒數)。因此求交點運算可分為七個步驟:

F – G (FADD)

1 / (F – G) (FRCP)

D – E (FADD)

(D – E) / (F – G) (FMUL)

B – C (FADD)

(B – C) * (D – E) / (F – G) (FMUL)

A + (B – C) * (D – E) / (F – G) (FADD)

Page 84: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

71

[ 圖 5-20] 為 在 Share Hardware

Design 中 final state machine 的最佳化

設計。每個頂點共十個屬性,同樣

state3~state5 需跑九次,完成交點運算

共需 7 + 3 x 8 = 31 cycles。由於 FADD

單元所需之 delay 為 5.25ns,為所有運

算單元中花費最多處理的時間,故每個

state 需 5.25ns 的計算時間,求一個交

點需要 31 x 5.25 = 162.75 ns。

[圖 5-20]:FSM in Share Hardware Design

而整體 Shared Hardware Design 面積共為 7.01k(FADD) + 7.95k(FMUL) +

11.54k(FRCP) – 0.63k(28-bit Adder) – 6.16k(25-bit x 25-bit Multiplier) =

19.71k gate count 的大小。

■ Divided & Shared Hardware Design

此 Data path 的設計方式同樣為共用倒數硬體內的加法器與乘法器來作

加法與乘法加上部份修改,並將倒數硬體架構切割成三個部分,在此以二階

的架構為共用硬體範例[圖 5-21]。因此求交點運算可排程如下:

[表 5-8]:Processing schedule of Divide & Share Hardware Design

HW

Units

Final State Machine States

0 1 2 3 4 5 6 7

ROM &

Squarer 1/(F-G)

FMUL 1/(F-G) (D-E)/(F-G) (B-C)*(D-E)/(F-G) A+(B-C)*(D-E)/(F-G)

FADD (F-G) (D-E) 1/(F-G) (B-C)

Page 85: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

72

[表 5-8]中的排程為對於求單一頂點其中之一屬性所需花費的時間。每

個頂點共十個屬性,同樣 cycle5~cycle7 需跑九次,因為在二階架構中有兩

份乘法器與加法器可供使用,故完成一個交點運算共需 7 + 3 x (8/2) = 19

cycles。由於 FADD 單元所需之 delay 為 5.25ns,為所有運算單元中花費最

多處理的時間,故每個 state 需 5.25ns 的計算時間,求一個交點需要 19 x 5.25

= 99.75 ns。

[圖 5-21]:Divided & Shared Hardware Design 架構

如[圖 5-21]所示,Divided & Shared Hardware Design 架構被切割成 ROM

and Square Part、Multiplier Part、Adder Part。在 Multiplier Part 中,Mul01、

Mul02 單元由原本使用定點數和兩個輸出(sum row and carry row)的乘法

器,改使用浮點數和一個輸出的 FMUL 取代之。在 Adder Part 中,multiop_add

單元由原本 5 input 的 CSA,改使用兩個 FADD 取代之。

而整體Divided & Shared Hardware Design面積為 Share Hardware Design

面積加上多工器的面積與置換掉原本運算單元所增加的面積,因此總面積會

比 Share Hardware Design 較大。

Page 86: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

73

■ Pipelined & Shared Hardware Design

[圖 5-22]:Pipelined & Shared Hardware Design 構思流程

此 Data path 的設計方式一樣為共用倒數硬體內的加法器與乘法器來作

加法與乘法,並加入 pipeline 的作法,將倒數硬體架構切割成三個 stage,在

此以二階的架構為共用硬體範例[圖 5-17]。設計概念如[圖 5-22]所示,將原

本倒數硬體中的乘法器改成單一輸出,再將原本多數相加的加法器以兩個加

法器(綠色)取代之,接者加入兩個加法器(紅色)以支援 A+(B-C)*t 的運算,

意即在計算出參數 t 值後,透過 pipeline 的概念,每個 cycle 可輸出兩個頂

點的屬性。因此求交點運算可排程如下:

[表 5-9]:Processing schedule of Pipelined & Shared Hardware Design

Page 87: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

74

[表 5-9]所述之排程中,前 5 個 cycle 為計算參數 t 值所需的時間,再計

算出參數 t 後,從第 6 個 cycle 到第 13 個 cycle,為計算剩餘的九個頂點屬

性 Y,Z,W,R,G,B,A,U,V,每個 cycle 皆有兩個屬性的輸出,故完成一個交點運

算共需 13 cycles。由於三個 stage中處理時間最長的為FADD單元,故 pipeline

stage 的 cycle time 為 5.25ns,求一個交點需要 13 x 5.25 = 68.25 ns。

X_Lo

rom_a0 rom_a1 rom_a2

squr01

mul02

m

MUX

add01 add02

MUX

mul01

MUX

MUX

add04

MUX

MUX2

add03

MUX

MUX1

MUX0

FADD FADD

MFMULMFMUL

MFADD

MFADD

[圖 5-23]:Pipeline & Share Hardware Design 架構

Page 88: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

75

[圖 5-23]為整體 Pipelined & Shared Hardware Design 架構,該架構之介

面如[圖 5-24],為了實作上的方便,設計以 FADD 單元、MFADD 單元、FMUL

單元、MFMUL 單元、ROM 表格、以及平方器等等構成之。其中紅色路徑

為求倒數時所走的路徑,藍色路徑為計算頂點屬性時所走的 pipeline 路徑,

粉紅色路徑為 pipeline 架構中對於 bypass 需求所設定的路徑,斜線部分則為

浮點數運算時所需的單元。如之前所述,原本於倒數硬體中的兩個輸出乘法

器置換成一個輸出乘法器(MFMUL),而原本於倒數硬體中的五輸出多數加

法器(CSA)置換成兩個兩數加法器(MFADD)。各子單元介紹如下:

˙FADD:同 5.2.1 節的架構,使用 28-bit 兩數加法器

˙MFADD:Modified FADD,使用 29-bit 兩數加法器配合原本倒數硬體

多數加法器所需之大小,並加入一個多工器

˙FMUL:同 5.2.1 節的架構,使用 25-bit x 25-bit 的乘法器

˙MFMUL:Modified FMUL,使用 25-bit x 25-bit 的乘法器並加入兩個

多工器,而原本倒數硬體的乘法器位元寬度較小,不足的位數則於低位

元部分補 0 至 25-bit 的寬度。

˙合成數據 (90ns delay with UMC 90nM technology)

[表 5-10]:Pipeline & Share Hardware Design 於 FRCP 硬體單元使用面積

Modules Gate Count (K) Percentage (%)

Unpack 0.16 0.34%

Pack 0.19 0.41%

Control 0.03 0.06%

SignRCP

(Pipeline & Share Hardware Design)46.01 98.29%

FRCP (Top Module) 46.81 100.00%

Page 89: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

76

[表 5-11]:對於求交點運算之不同硬體架構設計比較表

Designs

FADD,FMUL,FRCP_D1 FADD,FMUL,FRCP_D2

Area

(k gate count)

Delay

(ns)

Area

(k gate count)

Delay

(ns)

Independent HW Design 56.76 152.25 ns 26.5 152.25 ns

Shared HW Design ≈ 49.97 162.75 ns ≈ 19.71 162.75 ns

Divided & Shared HW Design ≈ > 49.97 152.25 ns ≈ > 19.71 99.75 ns

Pipelined & Shared HW Design none none 46.81 68.25 ns

[表 5-11]為利用 Piecewise 一階與二階倒數硬體架構,與 FADD、FMUL 單

元設計,對於求交點運算公式的需求,配合不同的硬體建構方式,比較其 data path

與 PE 計算一個交點所需花費的時間。由其中可以發現,以 Pipelined & Shared HW

Design 於 Piecewise 二階倒數硬體的應用提供了最佳的硬體面積使用效率,在處

理時間上也提供了最快的速度。與前一版所設計的裁切系統[4]相比,該系統中

一個 PE 所需的 data path 空間為 50k,pipeline cycle time 為 6ns,計算一個交點總

共需要 19 cycles,故求交點所花時間為 19 x 6 = 114 ns,如[表 5-12]比較。

[表 5-12]:設計之 PE data path 和 delay 與前一版比較表

Designs PE data path 求交點 cycle 求交點時間 支援資料運算格式

Previous PE Design [4] 50k 19 114 ns 32-bit Fixed-point

This work 46.81k 13 68.25 ns

1. 24-bit Fixed-point

2. IEEE 754 Single Precision

Floating-point

Page 90: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

77

[圖 5-24]:Pipeline & Share Hardware Design 介面

[圖 5-25]:共用 Piecewise 二階倒數硬體架構於 Clip 模組示意圖

Page 91: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

78

[圖 5-26]:Pipeline & Share Hardware Design 於 SignRCP 單元示意圖

Page 92: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

79

第 6 章 系統比較與驗證

6.1 系統比較

與前一版裁切系統硬體比較[4],此版的裁切引擎為支援 OpenGL-ES 2.0 的

規格,支援較多的頂點屬性,且資料格式支援定點和浮點數運算。在面積的表現

上,由於 PE 使用個數的改善,較前一版來的小;在執行效率上,由於 Dual path

架構與改善求交點處理時間的架構設計,也較前一版來的有效率。在功能上的差

異,前一版的幾何運算系統將 Outcode 的功能包含在 geometry module 內,並支

援 culling 功能;而在論文所設計的系統則細分處理單位:以頂點為單位作處理

與以三角形為單位作處理,故 Outcode 的功能被擺放於裁切硬體模組內,但不支

援 culling 的功能,如[表 6-1]。[表 6-2]為與其他論文裁切系統的比較。

[表 6-1]:所設計之裁切引擎與前一版比較表

Clipping Module Previous Version[4]

(with OpenGL-ES 1.0)

This Work

(with OpenGL-ES 2.0)

Data flow One Way Design (worse efficiency) Dual Way Design (better efficiency)

Hardware components

(area) 3 process elements (larger area) 1 process element (smaller area)

Clipping throughput of

an intersection point

(delay)

19 cycles

(worse throughput)

13 cycles

(better throughput)

OutCode function

(pre-clipping) Designed in the Geometry Module Designed out of the Vertex Shader

Culling function Designed in the Geometry Module Do not support

Page 93: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

80

[表 6-2]:與其他論文裁切系統的比較表

Clipping

Engine

Hardware

Architecture

Area

(gate counts)

Support Clip

Boundaries

Throughput

(M-Triangles/ sec)

Process/Cycle time

[22] Single Path 155.89 k X, Y, Z planes 11

(33M-Vertices/sec)

0.13um/6ns

[23] Dual Path 79 k

+ 3 kB SRAM

Z planes none 0.18um/6ns

[4] Single Path 213.2 k X, Y, Z planes none 0.18um/6ns

This work Dual Path 165.17 k X, Y, Z planes 10.9

(32.7M-Vertices/sec)

90nm/6ns

[22]中利用的裁切演算法為拿到完整的三角形才能進行裁切動作,每次裁切

動作只對於一個可視邊界作裁切,裁切出的多邊形後,再對下一個可視邊界進行

裁切判斷。該裁切演算法缺點為只能以多邊形為單位作 pipeline 的硬體設計,由

於每次判斷的輸入與輸出單位皆為多邊形,因此[22]提出 vertex location tree 作多

個頂點的管理。而該演算法每次判斷需要對於目前的多邊形中的每一個點,作對

於目前裁切的可視邊界是否位於內部或外部的判斷,會增加處理的時間。該演算

法總共六種輸出判斷,其中對於 Case-D 的判斷又多作了兩種額外狀況的判斷以

保證演算法的正確性,但發生額外狀況需要的檢查又會增加了裁切引擎的處理時

間,或是增加運算單元的使用。以下為[22]設計之裁切演算法描述,[圖 6-1]為該

裁切演算法之示意圖。

Case-A:當所有頂點皆位於目前的裁切可視邊界內部時,不需求交點。

Case-B:當只有一個頂點位於目前的裁切可視邊界外部時,需要求兩個交點

取代外部的頂點。

Page 94: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

81

Case-C:當有兩個頂點位於目前的裁切可視邊界外部時,需要求兩個交點取

代外部的兩個頂點。

Case-D:當有三個或三個以上的頂點位於目前裁切可視邊界外部時,位於外

部順位第二的頂點需被刪除,重複動作直到化簡 Case-D 至 Case-C。

Case-D exception 1:當 Case-D 發生,且多邊形的第二個頂點與最後一個頂

點位於目前裁切可視邊界外部,則刪除多邊形的第一個頂點。

Case-D exception 2:當 Case-D 發生,且多邊形的第二個頂點位於目前裁切

可視邊界內部,而最後一個頂點位於外部,則刪除多邊形的第一個

頂點。

[圖 6-1]:[22]裁切演算法六種狀況判斷

Page 95: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

82

6.2 系統驗證

對於獨立 Clipping Engine 的驗證,於 RTL 階段中設計了不同狀況的三角形

作驗證:一個 TA 狀況的三角形,兩個 TC 狀況的三角形以確保跑過裁切演算法

的所有情況。如[圖 6-2]、[圖 6-3]、[圖 6-4]所示。

1

2

3

1

2

3

1

2

3

[圖 6-2]:TA 狀況三角形經裁切硬體輸出之結果範例

1

2

3

8

4

5

9 10

7

11

[圖 6-3]:TC 狀況三角形經裁切硬體輸出之結果範例 1

Page 96: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

83

[圖 6-4]:TC 狀況三角形經裁切硬體輸出之結果範例 2

[圖 6-2]為 TA 狀況之三角形,裁切硬體依序輸入頂點 123,輸出同樣的三角

形 123 至後端的繪圖模組。[圖 6-3]為一組 TC 狀況且包含角落點在內的三角形,

經裁切演算後得一組七邊形,並利用 triangle_fan 的組合方式分解成三角形

8_4_5、三角形 8_5_9、三角形 8_9_10、三角形 8_10_7、三角形 8_7_11 共五個

三角形,依序地按照這五組三角形的順序輸出頂點。[圖 6-4]為另一組 TC 狀況的

三角形,該三角形包括整個裁切範圍於內部,故輸出為裁切範圍的四個角落點,

該四邊形被分解為三角形 4_5_7 和三角形 4_7_6 輸出頂點。

對於整體幾何子運算系統的驗證,所設計之頂點處理器與裁切引擎利用硬體

模擬的方式輸入測試資料,將處理後的頂點資料寫檔並輸入至後端,著色子系統

則利用軟體的方式實現三維物件的繪圖,並利用虹晶科技提供的開發板 SCDK

進行幾何子運算系統的驗證。

Page 97: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

84

第 7 章 結論與未來目標

7.1 結論

本論文實作之裁切硬體為支援 OpenGL-ES 2.0,置於頂點處理器後方處理三

角形的輸出。加入該裁切硬體使整體三維繪圖流程減少許多不必要的運算,能讓

執行整體三維繪圖過程更有效率。裁切硬體架構中 Dual-path 的設計改善裁切硬

體的輸出效率,同時對於 TA 和 TC 狀況的三角形輸出時間都作更好的輸出判斷,

增加了處理的效能。

總括裁切演算法與硬體實作的效能,主要可分三大方向作改善:

1. 裁切次數,於硬體方面影響 PE 個數。

2. 裁切判斷狀況,於硬體方面影響所需的空間。

3. 求交點時需花費的時間。

其中 1. 2.項可由裁切演算法的設計,改善硬體面積的使用,而第 3.項可根

據需求的時間,設計適合的運算單元,可用的概念如對於不同硬體中共用相同運

算單元的設計,可有效地減少硬體面積的浪費;亦或是利用 pipeline 的設計,增

加硬體輸出的效能等等可行的方式。如此配合演算法和硬體架構的設計方式,可

期望對於系統所要求的規格達到最完善的輸出效率、硬體面積使用率、硬體功耗

控制等等需求。

Page 98: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

85

7.2 未來目標

對於所設計的裁切演算法,當發生欲求出交點為裁切範圍的角落點時,還是

會花掉求交點的時間求出角落點,而角落點為已知,因此求角落點的行為會造成

不必要的運算,可針對當欲求的交點為角落點時的額外判斷,修改裁切演算法,

使其在應用上更加有效率。或是設計其他判斷方式改善 Improved Modified SH 演

算法,以期能同時減少三角形的 input stall 且不影響其他狀況的輸出效能。

對於所設計的 Dual path 架構中,Clip 單元可依使用者的需求和成本,在演

算法與硬體實作架構作不同的選擇。由於在整體系統中,頂點處理器為處理一個

頂點為單位,裁切硬體為處理一個三角形為單位,未來可在裁切硬體中加入其他

以三角形為處理單位的功能運算如 culling 功能,可選擇將相對於觀察者的視角,

將物件看不見的部份刪除,同樣地能減少後端不必要的運算,進而提升整體三維

繪圖的效率。

隨著 OpenGL-ES 規格的成長,可支援的頂點屬性更多,對於一個頂點的存

放空間也隨之變大。因此在儲存空間的配置,對於所支援的頂點屬性可設計適合

的存取方式與儲存單元,以減少硬體面積的浪費和提升處理效率。

Page 99: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

86

附錄 A 裁切演算法效能比較分析

˙I. Triangle in trivial accept case (TA triangles):Best case

1. Altered SH Algorithm (6 stages)

2. Modified SH Algorithm (4 stages)

Page 100: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

87

3. Improved Modified SH Algorithm (14 stages)

4. Proposed Clipping Algorithm (4 stages)

˙II. Triangle in clipping case (TC triangles):Here gives a worst case

Page 101: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

88

1. Altered SH Algorithm (11 stages)

2. Modified SH Algorithm (9 stages)

Page 102: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

89

3. Improved Modified SH Algorithm (9 stages)

(As same as the Modified SH Algorithm)

4. Proposed Clipping Algorithm (8 stages)

Page 103: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

90

˙III. Triangle in clipping case (TC triangles):Here gives a general case

1. Altered SH Algorithm (8 stages)

2. Modified SH Algorithm (6 stages)

Page 104: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

91

3. Improved Modified SH Algorithm (10 stages)

4. Proposed Clipping Algorithm (5 stages)

PE:Processing element

Stage behavior:1. Discriminate vertex location against each clipping boundary

2. Output by case judgment

˙No output

˙Need to find intersecton point

˙Stalling for ouputs or next PE’s stall signal

Green highlighted:Output judgments of each stage of each PE

Page 105: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

92

附錄 B 於頂點處理器執行裁切功能指令設計

1. Find a vertex location by clipping boundary

BGE R1, R2, R1, R1; //compare with maximum

MVI // in Out1 region

BLT R1, R3, R1, R1; //compare with minimum

MVI //in Out2 region

MVI //in In region

(There are two vertices have to find their vertex location against clipping

boundary before clipping algorithm case judgment.)

2. Case judgment decision

BEQ R1, R2, R3, R4; //V1,V2 location judgment

CAL // calling interpolation for counting a new vertex

or move the input vertex to output register

(These instructions only work for 1 case judgment. With our clipping algorithm

case judgments, there are totally 9 cases or 10 cases to implement.)

Page 106: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

93

3. Interpolation of counting an intersection point

ADD R7, R3, R4; //D-E

ADD R8, R5, R6; //F-G

ADD R9, R1, R2; //B-C

NOP //NOP x 7

DIV R10, R7, R8; //t = R10

NOP //NOP x 8

MAD R0, R9, R10; //A + (B-C) x t

ADD R9, R1, R2; //B-C

NOP //NOP x 7

(The last three instructions have to do 8 times for other vertex attributes of the

intersection point.)

4. Move a vertex register (4 x 128-bit)

MVR R4, R0; //move {X, Y, Z, W}

MVR R5, R1; //move {Nx, Ny, Nz, 0}

MVR R6, R2; //move {R, G, B, A}

MVR R7, R3; //move {U, V, 0, 0}

x 8

Page 107: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

94

參考文獻 [1]. M. Segal and K. Akeley, The OpenGL Graphics System: A Specification, Ver.

2.0, Oct. 2004. [2]. A. Munshi, OpenGL ES Common/Common-Lite Profile Specification, Ver. 1.1,

Nov. 2004. [3]. S.-F Hsiao and T.-Y. Huang, “Hardware Design, Integration, and Verification of

Geometry Engine in 3D Graphics”, National Sun-Yet San University, July 2006. [4]. S.-F Hsiao and T.-C Tien, “Hardware Design and Verification of Clipping

Algorithm in 3D Graphics Geometry Engine”, National Sun-Yet San University, July 2008.

[5]. M.-J Kilgard, ”A User-Programmable Vertex Engine” NVIDIA Corporation, pp.149-158.

[6]. A. Munshi, OpenGL ES Common Profile Specification 2.0, Ver. 1.06, July 2005. [7]. R.-J Simpson, The OpenGL-ES Shading Language, Ver. 1.0. [8]. J.-H Woo, et al., “A 195mW, 9.1 M Vertices/s Fully Programmable 3-D

Graphics Processor for Low-Power Mobile Devices”, IEEE Journal of Solid-State Circuits (JSSC), Vol. 43, No. 11, pp.2370-2380, Nov. 2008.

[9]. J.-H Woo, et al., “A 152mW Mobile Multimedia SoC with Fully Programmable 3D Graphics and MPEG4/H.264/JPEG”, Symposium on VLSI Circuits Digest of Technical Papers, pp.220-221, 2007.

[10]. J.-H Woo, et al., “A 195 mW/152 mW Mobile Multimedia SoC with Fully Programmable 3-D Graphics and MPEG4/H.264/JPEG”, IEEE Journal of Solid-State Circuits (JSSC), Vol. 43, No. 9, pp.2047-2056, Sep. 2008.

[11]. J.-H Sohn, et al., “A 155-mW 50-Mvertices/s Graphics Processor with Fixed-Point Programmable Vertex Shader for Mobile Applications”, IEEE Journal of Solid-State Circuits (JSSC), Vol. 41, No. 5, pp.1081-1091, MAY 2006.

[12]. H. Kim, et al., “A 231MHz, 2.18mW 32-bit Logarithmic Arithmetic Unit for Fixed-Point 3D Graphics System”, IEEE Asian Solid-State Circuits Conference (ASSCC), pp.305-308, 2005.

[13]. B.-G Nam, H. Kim, and H.-J Yoo, “A Low-Power Unified Arithmetic Unit for Programmable Handheld 3-D Graphics Systems”, IEEE Custom Integrated Circuits Conference (CICC), pp.535-538, 2006.

[14]. H. Kim, et al., “A 231-MHz, 2.18-mW 32-bit Logarithmic Arithmetic Unit for Fixed-Point 3-D Graphics System”, IEEE Journal of Solid-State Circuits (JSSC), Vol. 41, No. 11, pp.2373-2381, Nov. 2006.

Page 108: 國立中山大學資訊工程學系 碩士論文etd.lib.nsysu.edu.tw/ETD-db/ETD-search-c/getfile?URN=etd-0901109...國立中山大學資訊工程學系 碩士論文 應用於三維繪圖系統中OpenGL-ES

95

[15]. B.-G Nam, H. Kim, and H.-J Yoo, “A Low-Power Unified Arithmetic Unit for Programmable Handheld 3-D Graphics Systems”, IEEE Journal of Solid-State Circuits (JSSC), Vol. 42, No.8, pp.1767-1777, Aug. 2007.

[16]. B.-G Nam and H.-J Yoo, “A 28.5mW 2.8GFLOPS Floating-Point Multifunction Unit for Handheld 3D Graphics Processors”, IEEE Asian Solid-State Circuits Conference (ASSCC), Nov. pp.376-379, 2007.

[17]. B.-G Nam and H.-J Yoo, “A Low-Power Vector Processor Using Logarithmic Arithmetic for Handheld 3D Graphics Systems”, ESSCIRC, pp.232-235, 2007.

[18]. B.-G Nam, et al., “A 52.4mW 3D Graphics Processor with 141Mvertices/s Vertex Shader and 3 Power Domains of Dynamic Voltage and Frequency Scaling”, IEEE International Solid-State Circuits Conference (ISSCC), pp.278-603, 2007.

[19]. B.-G Nam, H. Kim, and H.-J Yoo, “Power and Area-Efficient Unified Computation of Vector and Elementary Functions for Handheld 3D Graphics Systems”, IEEE Transactions on Computers, Vol.57, No.4, pp.490-504, Apr. 2008.

[20]. B.-G Nam, et al.,”Cost-Effective Low-Power Graphics Processing Unit for Handheld Devices”, IEEE Communications Magazine, pp.152-158, Apr. 2008.

[21]. I. Koren, “Computer Arithmetic Algorithms”, 2nd ed, 2002. [22]. J. Bae, D. Kim, and L.-S. Kim, “An 11M-Triangles/sec 3D Graphics Clipping

Engine for Triangle Primitives”, Proc. IEEE Intl. Symp. on Circuits and Systems (ISCAS), Vol. 5, May 2005.

[23]. J.-H. Kim, et al., “Clipping-Ratio-Independent 3D Graphics Clipping Engine by Dual-Thread Algorithm”, Proc. IEEE Intl. Symp. on Circuits and Systems (ISCAS), May 2008.

[24]. B.-O Schneider and J.-V Welzen, “Efficient Polygon Clipping for an SIMD Graphics Pipeline”, IEEE Transactions on Visualization and Computer Graphics, Vol. 4, No. 3, July-Sep, pp.272-285, 1998.

[25]. H.-J Oh, et al., “A Fully Pipelined Single-Precision Floating-Point Unit in the Synergistic Processor Element of a CELL Processor”, IEEE Journal of Solid-State Circuits (JSSC), Vol. 41, No. 4, pp.759-771, Apr. 2006.

[26]. S.-F Hsiao and P.-C Wei,”Implementation of Arithmetic Component Generator in 3D Graphics Geometry System”, National Sun-Yet San University, July 2006.

[27]. D. Kim, et al., “An SoC with 1.3Gtexels/s 3D Graphics Full Pipeline Engine for Consumer Applications”, IEEE International Solid-State Circuits Conference (ISSCC), pp.190-592, 2005.