0:00:00.300,0:00:04.951 我們現在對合理時間內計算光的效果有些概念 0:00:05.031,0:00:10.567 這門課我們概觀地來看繪圖加速器如何繪製物件 0:00:10.609,0:00:15.395 這個硬體通常叫作 GPU(Graphics Processing Unit) 0:00:15.426,0:00:19.752 GPU 使用柵格化(Rasterization)或掃瞄轉換(Scan Conversion)繪圖 0:00:19.776,0:00:22.523 它們依照我提過的簡化來最佳化 0:00:22.610,0:00:25.793 我們從頭到尾來看一條繪圖管線 0:00:25.881,0:00:29.113 管線的用意就是分別處理各個物件 0:00:29.138,0:00:32.556 第一步即應用程式將物件送往 GPU 0:00:32.580,0:00:35.130 送什麼物件?通常是 3D 三角形 0:00:35.162,0:00:38.480 每個三角形由空間中三個點定義 0:00:38.505,0:00:41.486 應用程式將立方體被轉換成一些三角形 0:00:41.510,0:00:43.917 球體被轉換成一堆三角形 0:00:43.954,0:00:48.503 在第一步,應用程式決定哪些三角形送往接下來的管線 0:00:48.765,0:00:53.091 管線的第二階段,這些三角形經過攝影機視角變換 0:00:53.116,0:00:55.406 還有物件本身的座標變換 0:00:55.430,0:01:00.354 物件的座標變換指對位置、方向甚至大小的修改 0:01:00.385,0:01:03.025 舉例來說,假設你在繪製一個彈跳中的球 0:01:03.063,0:01:05.365 球的每一格的座標變換 0:01:05.390,0:01:08.188 會讓球沿著路徑移動 0:01:08.212,0:01:10.491 攝影機的視角變換效果相當直白 0:01:10.516,0:01:14.628 當物件移動到這一格所該在的位置後,還在攝影機視野裡嗎? 0:01:14.660,0:01:18.313 即物件是否在視錐內 0:01:18.361,0:01:22.697 如果不在,那我們就不用處理這個物件,因為它不會影響到螢幕上任何像素 0:01:22.776,0:01:25.220 這種情況,我們會說這物件整個被裁切(Clip)掉了 0:01:25.281,0:01:29.846 這個方塊被整個裁切掉,因為它在視錐之外 0:01:29.932,0:01:34.229 攝影機與物件的座標變換會算出每個三角形在螢幕上的位置 0:01:34.270,0:01:37.390 如果三角形部分或全部在視錐裡 0:01:37.428,0:01:41.684 這個三角形三個點會被送往下一個叫做柵格化的階段 0:01:41.711,0:01:44.539 如果三角形稍微超出範圍,則會被裁切 0:01:44.563,0:01:46.475 變成更多的三角形 0:01:46.476,0:01:50.846 這個過程會找出所有像素,其中心點在三角形內 0:01:50.887,0:01:52.862 換個角度說,它在「填滿」三角形 0:01:52.911,0:01:59.000 這裡柵格化辨識出這個三角形涵蓋了這幾個像素中心點 0:01:59.000,0:02:03.193 這些位置接著被用來展示三角形的圖像在螢幕上