1 00:00:00,300 --> 00:00:04,951 我們現在對合理時間內計算光的效果有些概念 2 00:00:05,031 --> 00:00:10,567 這門課我們概觀地來看繪圖加速器如何繪製物件 3 00:00:10,609 --> 00:00:15,395 這個硬體通常叫作 GPU(Graphics Processing Unit) 4 00:00:15,426 --> 00:00:19,752 GPU 使用柵格化(Rasterization)或掃瞄轉換(Scan Conversion)繪圖 5 00:00:19,776 --> 00:00:22,523 它們依照我提過的簡化來最佳化 6 00:00:22,610 --> 00:00:25,793 我們從頭到尾來看一條繪圖管線 7 00:00:25,881 --> 00:00:29,113 管線的用意就是分別處理各個物件 8 00:00:29,138 --> 00:00:32,556 第一步即應用程式將物件送往 GPU 9 00:00:32,580 --> 00:00:35,130 送什麼物件?通常是 3D 三角形 10 00:00:35,162 --> 00:00:38,480 每個三角形由空間中三個點定義 11 00:00:38,505 --> 00:00:41,486 應用程式將立方體被轉換成一些三角形 12 00:00:41,510 --> 00:00:43,917 球體被轉換成一堆三角形 13 00:00:43,954 --> 00:00:48,503 在第一步,應用程式決定哪些三角形送往接下來的管線 14 00:00:48,765 --> 00:00:53,091 管線的第二階段,這些三角形經過攝影機視角變換 15 00:00:53,116 --> 00:00:55,406 還有物件本身的座標變換 16 00:00:55,430 --> 00:01:00,354 物件的座標變換指對位置、方向甚至大小的修改 17 00:01:00,385 --> 00:01:03,025 舉例來說,假設你在繪製一個彈跳中的球 18 00:01:03,063 --> 00:01:05,365 球的每一格的座標變換 19 00:01:05,390 --> 00:01:08,188 會讓球沿著路徑移動 20 00:01:08,212 --> 00:01:10,491 攝影機的視角變換效果相當直白 21 00:01:10,516 --> 00:01:14,628 當物件移動到這一格所該在的位置後,還在攝影機視野裡嗎? 22 00:01:14,660 --> 00:01:18,313 即物件是否在視錐內 23 00:01:18,361 --> 00:01:22,697 如果不在,那我們就不用處理這個物件,因為它不會影響到螢幕上任何像素 24 00:01:22,776 --> 00:01:25,220 這種情況,我們會說這物件整個被裁切(Clip)掉了 25 00:01:25,281 --> 00:01:29,846 這個方塊被整個裁切掉,因為它在視錐之外 26 00:01:29,932 --> 00:01:34,229 攝影機與物件的座標變換會算出每個三角形在螢幕上的位置 27 00:01:34,270 --> 00:01:37,390 如果三角形部分或全部在視錐裡 28 00:01:37,428 --> 00:01:41,684 這個三角形三個點會被送往下一個叫做柵格化的階段 29 00:01:41,711 --> 00:01:44,539 如果三角形稍微超出範圍,則會被裁切 30 00:01:44,563 --> 00:01:46,475 變成更多的三角形 31 00:01:46,476 --> 00:01:50,846 這個過程會找出所有像素,其中心點在三角形內 32 00:01:50,887 --> 00:01:52,862 換個角度說,它在「填滿」三角形 33 00:01:52,911 --> 00:01:59,000 這裡柵格化辨識出這個三角形涵蓋了這幾個像素中心點 34 00:01:59,000 --> 00:02:03,193 這些位置接著被用來展示三角形的圖像在螢幕上