調暗螢幕時,伽馬表到底做了什麼

亮度滑桿不是一個操作。從滑桿到面板之間有五步,而順序比數值更重要。

五步運算,按順序

對斜坡裡的每一個取樣點,逐個處理:

x = pow(raw, 1/gamma)
x = (x - 0.5) * contrast + 0.5
x = x * brightness
x = x * tint
x = clamp(x, 0, 1)

請仔細讀第二行:對比是繞 0.5 旋轉的,不是繞零。在 contrast 為 1 時它是恆等變換,整行等於不存在;一旦低於 1,它就把整條斜坡往中點拉——也就是把斜坡底部抬離零。讓真黑變成深灰的是這一項,不是調光本身。

陷阱一:反覆調整會複利

如果每次調整都在目前表格上再加工,第二次加工的就是一張已經被加工過的表格。正確做法是先擷取首次接管時讀到的斜坡一次,之後永遠基於它。這和「排程器乘一個已經被調暗過的值」是同一類 bug:第一次看起來沒問題,之後永遠在漂。

陷阱二:表格會被靜默丟棄

喚醒、改解析度、GPU 重設,都可能把表格丟掉而不通知任何人。所以不能假設「寫進去了就一直有效」:讀回來,拿一個內部取樣點和你的意圖比對,不一致就退避重試。比對必須有容差,因為讀回來不是逐位精確的。

陷阱三:暖色調整絕不能把面板調亮

把畫面調暖,意味著抬高紅、壓低藍。直白地做,峰值會超過 1,面板反而比你設定之前更亮。約束只需要一行:把峰值歸一到 1。顏色變動不該變成亮度變動。

參考白點

所有色偏都相對於一個參考白點表達,這樣參考色溫就是恆等變換,一塊沒被動過的面板保持原樣。這個錨點選得草率,「什麼都沒改」就會悄悄變成「稍微暖了一點」。

誠實的邊界

相關

哪一層在把螢幕調暗 · 色彩發灰 · 按時段調暗,以及那個把螢幕一路調到全黑的陷阱 · 怎麼真正測一台顯示器