1. 程式人生 > >Retina與計算機圖形的基本原理

Retina與計算機圖形的基本原理

原文連結:http://bbs.feng.com/read-htm-tid-6880069.html


計算機圖形渲染的流程


計算機的繪圖過程可以簡單用流水線來說明,而產品(資料)就是經過流水線作業(渲染)到螢幕的影象。這條流水線可以簡化為(本文的概念):繪圖位置座標指定;著色指定;輸出指定;圖1簡單解釋了這一個流水線過程。計算機繪圖需要一個輸入繪圖資料,這個資料可以是使用者指定的,也可以是作業系統決定的,也可以是混合的。這些資料是分組的。

座標生成:當繪圖資料送入座標生成系統後,流水線就會對其進行座標分派,圖1右上的線框圖抽象描述了這個過程。

著色指定:當座標系統生成出帶座標的繪圖資料後就需要送入著色器,著色器指定了這些線框的填充顏色或紋理。

渲染:著色器將繪圖資料加上著色資料後就被送入渲染器,渲染器根據繪圖資料描述,將畫素填充到描述的線框組裡並送入幀快取,然後然後送入顯示器,顯示器獲取到幀快取的資料後再根據資料的描述來繪圖到螢幕上。




畫素與點(point)與點(dot)

畫素與點(point),點(dot)這三個單位很容易令人混淆,原因在於它們在很多場合上是可以互換的。但是本文需要區分這兩者的概念。

畫素指的是一種資料結構,這個資料結構包含了RGB三個資料,分別對應的是紅色,綠色,藍色。我們說一張計算機生成的點陣圖時,我們會說這圖是多少畫素x多少畫素,例如800x600畫素。值得注意的是,畫素沒有一個固定的尺寸單位,它只是一個抽象概念。

點(dot)指的是顯示器螢幕的點或列印的點,是具體指代的事物。我們想說的DPI即dot per inch,每英寸多少個點。一般來說1個點對應一個畫素,常見的列印尺寸是72DPI,即每英寸72點,也就是包含72個畫素的資料。當畫素被計算機輸出成點投射都螢幕或紙面上時,它才具備了尺寸的概念,即點(dot)。

點(point)指的是座標點,是一個數據結構,包含了兩個資料(或三個)X和Y(和Z)座標。繪圖資料裡是包含了這個座標資料的。對於沒有使用HiDPI的作業系統來說,一個座標點對應一個畫素。



點(point)不一定等於畫素

一般來說,點(dot)與畫素是可以互換指代的,而且我們在Retina的概念被提出前一直這樣使用它們。但是,現在這兩個概念必須要區分出來。畫素只是一個描述RGB的資料結構,它沒有任何尺寸單位,它更不是一個矩形。當畫素被輸出到螢幕或紙張上時,我們應該用點來指代這種含有顏色,有尺寸的具體事物。

普通的顯示螢幕或印表機,我們會說螢幕上的一個點(dot)是由一個畫素(RGB資料)組成的,列印後的點是由一個畫素經過色彩轉換(CMYK資料)組成的。

對於印表機來說,一般的DPI是72。也就是指我們在顯示器螢幕上看到720x720畫素的點陣圖,在打印出來後的面積是10x10英寸,但是螢幕上的位圖面積並不會跟打印出來的面積一致。因為螢幕上的一個點與列印的點的尺寸不一樣。

PPI指的是每英寸多少畫素,與DPI有一定概念上的區別。PPI一般指的是螢幕的點密度,DPI指的是列印點的密度。PPI不是固定的,不同螢幕尺寸結合不同的解析度會有不同的PPI,但是DPI則是相對固定在72。

HiDPI是蘋果的一項繪圖技術,結合這種技術,計算機座標系統上的一個點(point)不再對應一個畫素,一般來說會是一個座標點對應四個畫素,而一個畫素對應螢幕的一個物理點(dot)。

由於畫素是一組色彩資料,所以繪圖資料在經過著色器後才包含了它。舉個例子,繪圖資料在送入著色器前是描述一個100x100的矩形,經過著色器指定色彩屬性後會被送入一個HiDPI系統,這個系統將200x200個畫素的資料新增到繪圖資料裡。在經過渲染器後,相當於將200x200個畫素填充進100x100這個矩形線框。


幀快取與顯示器螢幕

幀快取是儲存計算機渲染後的圖形資料的,這些資料包括座標,畫素,解析度等等。。簡單來說就是描述圖象的資料,當這些描述資料送入顯示器後,顯示器就知道怎麼繪圖了。

一般來說的螢幕解析度指的是渲染器生產出來的畫素資料排列,例如1280x800畫素。值得注意的是這個螢幕解析度與顯示器螢幕的物理點排列沒關係的。螢幕解析度是可設定的,顯示器的物理點排列是固定的。例如幀快取裡的解析度是1280x800畫素,但是顯示器螢幕是1920x1200點排列的,那麼顯示器會怎麼將幀快取裡的資料呈現到螢幕上呢?答案是通過自適應放縮,是經過顯示器內部晶片來轉換的。

13寸的RMBP在解析度設定裡是這樣描述的,看起來像1280x800畫素,看起來像1440x900畫素。我們需要這樣理解,1280x800畫素是相對於舊款不帶Retina的機器,也就是繪圖資料送入著色器前的座標系統與渲染後的座標是1:1對應的參考值。實際上在經過渲染後,它的實際畫素是2560x1600,也就是幀快取裡是資料是2560x1600畫素。同樣地看起來1440x900畫素實際渲染後的畫素是2880x1800。由於13寸的螢幕實際點排列是2560x1600,所以幀快取2880x1800畫素在輸出到屏幕後會被自適應縮放掉。


DPI與Retina

作業系統標準的桌面列印DPI是72,但是隨著HiDPI技術和高PPI螢幕出現後,這個標準也許會有一定的變化。我們在Retina的OS X下用Photoshop新建一個檔案時預設的DPI指定在144上了,這是標準轉變的一個訊號。

在沒有使用類似HiDPI技術的作業系統上,螢幕解析度對應的列印DPI是72。使用HiDPI的Retina機器的列印DPI是144,用以保證在統一尺下具有更多的點密度。這點對於印前工作非常重要。