[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.30,0:00:04.95,Default,,0000,0000,0000,,我們現在對合理時間內計算光的效果有些概念 Dialogue: 0,0:00:05.03,0:00:10.57,Default,,0000,0000,0000,,這門課我們概觀地來看繪圖加速器如何繪製物件 Dialogue: 0,0:00:10.61,0:00:15.40,Default,,0000,0000,0000,,這個硬體通常叫作 GPU(Graphics Processing Unit) Dialogue: 0,0:00:15.43,0:00:19.75,Default,,0000,0000,0000,,GPU 使用柵格化(Rasterization)或掃瞄轉換(Scan Conversion)繪圖 Dialogue: 0,0:00:19.78,0:00:22.52,Default,,0000,0000,0000,,它們依照我提過的簡化來最佳化 Dialogue: 0,0:00:22.61,0:00:25.79,Default,,0000,0000,0000,,我們從頭到尾來看一條繪圖管線 Dialogue: 0,0:00:25.88,0:00:29.11,Default,,0000,0000,0000,,管線的用意就是分別處理各個物件 Dialogue: 0,0:00:29.14,0:00:32.56,Default,,0000,0000,0000,,第一步即應用程式將物件送往 GPU Dialogue: 0,0:00:32.58,0:00:35.13,Default,,0000,0000,0000,,送什麼物件?通常是 3D 三角形 Dialogue: 0,0:00:35.16,0:00:38.48,Default,,0000,0000,0000,,每個三角形由空間中三個點定義 Dialogue: 0,0:00:38.50,0:00:41.49,Default,,0000,0000,0000,,應用程式將立方體被轉換成一些三角形 Dialogue: 0,0:00:41.51,0:00:43.92,Default,,0000,0000,0000,,球體被轉換成一堆三角形 Dialogue: 0,0:00:43.95,0:00:48.50,Default,,0000,0000,0000,,在第一步,應用程式決定哪些三角形送往接下來的管線 Dialogue: 0,0:00:48.76,0:00:53.09,Default,,0000,0000,0000,,管線的第二階段,這些三角形經過攝影機視角變換 Dialogue: 0,0:00:53.12,0:00:55.41,Default,,0000,0000,0000,,還有物件本身的座標變換 Dialogue: 0,0:00:55.43,0:01:00.35,Default,,0000,0000,0000,,物件的座標變換指對位置、方向甚至大小的修改 Dialogue: 0,0:01:00.38,0:01:03.02,Default,,0000,0000,0000,,舉例來說,假設你在繪製一個彈跳中的球 Dialogue: 0,0:01:03.06,0:01:05.36,Default,,0000,0000,0000,,球的每一格的座標變換 Dialogue: 0,0:01:05.39,0:01:08.19,Default,,0000,0000,0000,,會讓球沿著路徑移動 Dialogue: 0,0:01:08.21,0:01:10.49,Default,,0000,0000,0000,,攝影機的視角變換效果相當直白 Dialogue: 0,0:01:10.52,0:01:14.63,Default,,0000,0000,0000,,當物件移動到這一格所該在的位置後,還在攝影機視野裡嗎? Dialogue: 0,0:01:14.66,0:01:18.31,Default,,0000,0000,0000,,即物件是否在視錐內 Dialogue: 0,0:01:18.36,0:01:22.70,Default,,0000,0000,0000,,如果不在,那我們就不用處理這個物件,因為它不會影響到螢幕上任何像素 Dialogue: 0,0:01:22.78,0:01:25.22,Default,,0000,0000,0000,,這種情況,我們會說這物件整個被裁切(Clip)掉了 Dialogue: 0,0:01:25.28,0:01:29.85,Default,,0000,0000,0000,,這個方塊被整個裁切掉,因為它在視錐之外 Dialogue: 0,0:01:29.93,0:01:34.23,Default,,0000,0000,0000,,攝影機與物件的座標變換會算出每個三角形在螢幕上的位置 Dialogue: 0,0:01:34.27,0:01:37.39,Default,,0000,0000,0000,,如果三角形部分或全部在視錐裡 Dialogue: 0,0:01:37.43,0:01:41.68,Default,,0000,0000,0000,,這個三角形三個點會被送往下一個叫做柵格化的階段 Dialogue: 0,0:01:41.71,0:01:44.54,Default,,0000,0000,0000,,如果三角形稍微超出範圍,則會被裁切 Dialogue: 0,0:01:44.56,0:01:46.48,Default,,0000,0000,0000,,變成更多的三角形 Dialogue: 0,0:01:46.48,0:01:50.85,Default,,0000,0000,0000,,這個過程會找出所有像素,其中心點在三角形內 Dialogue: 0,0:01:50.89,0:01:52.86,Default,,0000,0000,0000,,換個角度說,它在「填滿」三角形 Dialogue: 0,0:01:52.91,0:01:59.00,Default,,0000,0000,0000,,這裡柵格化辨識出這個三角形涵蓋了這幾個像素中心點 Dialogue: 0,0:01:59.00,0:02:03.19,Default,,0000,0000,0000,,這些位置接著被用來展示三角形的圖像在螢幕上