就算顯示卡是用類比輸出(D-SUB)配上支援10-Bit LUT的顯示卡遇到LCD照樣會掉階,因為LCD內部的ADC轉換也有精度問題,碰上8-Bit ADC,就算顯示卡有10-Bit也沒輒。
另一方面是因為LCD內部要以LUT來模擬CRT gamma 2.2的效果,而y=x^2.2的曲線在x很接近0的時候斜率非常小,所以接近暗階處無論是DVI還是DSUB輸入都會有掉階的問題。
舉例說明:
1.若是LCD內部的ADC和LUT為8-Bit,則代表y軸的輸出值範圍為0~255,x軸的輸入數值也是0~255,則整個gamma轉換的公式為約略表示為
y=255*(x/255)^2.2,
假如我們將x=64代入,則計算得y=12。
這代表說0~64階的灰階變化,在這台LCD的表現下要全部塞入12階之中,超過50階的變化無法分辨,所以就算顯示卡有10-Bit LUT與RAMDAC也沒用。
2.若是LCD內部的ADC為8-Bit,而LUT為10-Bit,則代表x軸的輸入數值是0~255,y軸的輸出值範圍為0~1023,則整個gamma轉換的公式為約略表示為
y=1023*(x/255)^2.2,
假如我們將x=64代入,則計算得y大約是49。
這代表說0~64階的灰階變化,在這台LCD的表現下要全部塞入49階的變化之中,比起上面8-Bit LUT的狀況改善良多,但還是有掉階的狀況。
我想現在大家就能體會10-Bit LUT的價值在哪裡了。而許多搭載10-Bit LUT的LCD同時OSD也會提供調整gamma的功能。有了10-Bit LUT,調整gamma造成的調階情形會減輕很多,比較不會被客戶罵說怎麼調一調灰階都爛掉了。
3.來討論一下 EIZO CG220的14-Bit LUT是怎樣的情形。
http://www.eizo.co.jp/products/ce/c...ntents1.html#f3
2^14-1=16383,假設搭載的還是8-Bit ADC,整個gamma轉換公式就變成
y=16383*(x/255)^2.2,
則我們會發現當x=64,y約等於783,比64還大,可見遊刃有餘。當x=16,y=37,還是很足夠。當x=8,y=8,總算一樣了,而當x=7,y=6,總算掉了一階。我想現在大家能體會這台怪物有多變態了,暗階到了第七階才開始有誤差。對照EIZO的網頁提供的圖應該更能體會。
以上的討論主要是在呈現LCD內部LUT精度對於暗階誤差的影響。以上的討論就算是以DVI-D輸入也同樣成立,因為目前市面上見到的螢幕支援的DVI-D都是Single Link (Apple 30"那種2560*1600的怪物例外),精度為8-Bit,所以LCD收到的訊號精度與以8-Bit ADC轉換類比訊號的結果一樣。
唯一的差異在於DVI-D由於只有8-Bit,所以顯示卡內部的10-Bit LUT無用武之地,才會造成當我們在校色或是玩遊戲而改動顯示卡的LUT時,會因為精度不足導致DVI-D輸出的階調誤差,這是在Dual Link DVI-D普及前無可避免的問題。R520或許可以改善這個問題,但也要有螢幕支援Dual Link的高精度才行。
回到樓主的問題,LUT gamma與1差得越遠,階調誤差就會越大,當gamma>1,則主要的誤差出現在接近黑色的暗階,而當gamma<1,則主要的誤差出現在接近白色的白階。其實以全螢幕在玩3D遊戲的時候,理想上LUT gamma=1/2.2=0.45,當然可以把gamma調成小於0.5,只是程式不提供而已。
不要小看gamma準確度的問題,很多人在抱怨LCD的顏色不如CRT,有很大很大的原因就是出在出廠的gamma就嚴重偏離2.2。EIZO的專業美工繪圖校色產品線CG系列特別強調每台出廠前都各自把gamma調準,可見gamma準確可以當做一大賣點,因為這是顏色準確性的必要條件,硬體校色器需求來源。
http://www.eizo.co.jp/products/ce/c...ntents1.html#f4