本筆記首發(fā)知乎
https://zhuanlan.zhihu.com/p/203847313
建立于 20200405
修改于 20210403
聲明:此文為個(gè)人筆記昔瞧,自己溫習(xí)勤婚,也樂在交流仪搔。如果文章中有侵權(quán)嫩码,錯(cuò)誤潮改,或者有不同的理解狭郑,煩請(qǐng)大家多多留言指點(diǎn)指正,本人會(huì)及時(shí)糾正(知錯(cuò)能改就是好孩子:P)汇在。感謝翰萨,此致崇高敬意!
目錄
一糕殉、色彩空間概念:1.1亩鬼、色彩空間,1.2阿蝶、HSL雳锋,1.3、CIE
二羡洁、圖形中常見的數(shù)據(jù)處理:2.1玷过、矯色,2.2筑煮、LDR HDR辛蚊,2.3、Linear Gamma咆瘟,2.4嚼隘、數(shù)據(jù)理論,2.5袒餐、打印機(jī)色彩空間
色彩空間概念
1.1飞蛹、色彩空間:
使用三維XYZ去表示RGB。(XYZ取值范圍為約定0-1范圍)
(圖4)灸眼,特殊說(shuō)明卧檐,當(dāng)RGB值都是同一數(shù)值是,我們定義為灰色焰宣,圖中我約定為值域介于(0,0,0)- (1,1,1)霉囚,最黑到最白,圖7匕积、圖9黑線同理盈罐。
1.2、HSL:
HSL的由來(lái)闪唆,從圖7到圖8盅粪,把攝相機(jī)放置(1,1悄蕾,1)點(diǎn)票顾,并看向(0,0,0)點(diǎn)(圖4)奠骄,再把棱形轉(zhuǎn)換成圓豆同,就能得到一個(gè)圓柱圖9。在圖9中圓柱中心的直線為灰度L含鳞,圓平面上越往外顏色越飽和S影锈。色相的變化就繞圓柱圓周邊H。(UI實(shí)現(xiàn)時(shí)得注意角度制與弧度制的轉(zhuǎn)換)
優(yōu)點(diǎn):把色彩的概念分離成色相民晒,飽和度精居,亮度,調(diào)色混色更方便潜必,更加專注靴姿。(圖10、圖11)
//HSV 移動(dòng)端高性能版
half3 RGBtoHSV(half3 arg1)
{
half4 K = half4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
half4 P = lerp(half4(arg1.bg, K.wz), half4(arg1.gb, K.xy), step(arg1.b, arg1.g));
half4 Q = lerp(half4(P.xyw, arg1.r), half4(arg1.r, P.yzx), step(P.x, arg1.r));
half D = Q.x - min(Q.w, Q.y);
half E = 1e-4;
return half3(abs(Q.z + (Q.w - Q.y) / (6.0 * D + E)), D / (Q.x + E), Q.x);
}
half3 HSVtoRGB(half3 arg1)
{
half4 K = half4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
half3 P = abs(frac(arg1.xxx + K.xyz) * 6.0 - K.www);
return arg1.z * lerp(K.xxx, saturate(P - K.xxx), arg1.y);
}
// 例:fixed3 c = RGBtoHSV(c);
// c = fixed3(c.x * A, c.y * B, c.z * C);
// c = HSVtoRGB(c)
// 轉(zhuǎn)到HSV空間后磁滚,c.x分量信息為色相佛吓,c.y分量為飽和度,c.z分量為亮度垂攘。
//20200913 - 20210403 完成维雇,摘自u(píng)nity standard
使用流程:RGB顏色空間轉(zhuǎn)至HSL,HSL里面做其他混合操作晒他,操作完成后吱型,使用HSL to RGB轉(zhuǎn)回來(lái)。
1.3陨仅、CIE
CIE:表示人類可以感知的所有顏色(圖12)津滞。人眼是傳感器,會(huì)把看到的顏色光當(dāng)作一系列信號(hào)傳送給大腦(圖14灼伤,15)触徐。特點(diǎn):1、相對(duì)于亮部來(lái)說(shuō)狐赡,對(duì)暗部更敏感(所以正常情況下盡量把畫面需要體現(xiàn)細(xì)節(jié)的點(diǎn)放在暗部)撞鹉,2、相于其他兩色來(lái)說(shuō)颖侄,對(duì)綠色敏感鸟雏,其次紅色,最后是藍(lán)色览祖,敏感度:綠色》紅色》藍(lán)色崔慧。
科學(xué)界標(biāo)準(zhǔn)更新:1920左右(制定光譜標(biāo)準(zhǔn)(色板))
CIE色板代表的是科學(xué)界及室驗(yàn)室的,一般情況下很難有這么高的還原(高寬的色板色域),更純的顏色(硬件表現(xiàn)不出純度更高更接近科學(xué)色板)玄货,我們常聽說(shuō)高色域顯示器皇钞,可以理解比其他顯示器(普便)的三角區(qū)域更大點(diǎn),更純的顏色松捉,更接近科學(xué)界標(biāo)準(zhǔn)的色域(圖22夹界,圖24)。
因?yàn)槿祟悓?duì)不同顏色頻率波段的顏色感知敏感度不一樣隘世,所以科學(xué)家在制作CIE時(shí)可柿,把最敏感的顏色畫得最少,不敏感的顏色畫得最多丙者,以達(dá)到計(jì)算上的正確和人眼上看到的色彩自然和色活覺均勻性复斥,顏色的混合都是線性的,只要在兩個(gè)顏色間繪制作一條直線就能等同于現(xiàn)實(shí)的顏色混合(圖20)右側(cè)圖械媒。
在常用圖形DCC中目锭,常看到的是HSL(HSV)上圖左側(cè)圓形色域表示法纷捞。而從CIE轉(zhuǎn)到HSV中痢虹,會(huì)發(fā)現(xiàn)混合顏色是不怎么正確的,這也是一種弊端主儡。
圖形常見的數(shù)據(jù)處理
2.1奖唯、矯色
矯色:使之在不同設(shè)備間保持大體一樣的顏色
現(xiàn)代設(shè)備問題:
在上圖左右能對(duì)比出因不同色域的區(qū)別硼被,而我們要做的,就是矯正調(diào)色渗磅。把右圖矯正調(diào)色到好的效果成品左圖嚷硫。
2.2检访、LDR 和 HDR
LDR
由于硬件設(shè)備的局限性和不統(tǒng)一性,所以國(guó)際做了一個(gè)標(biāo)準(zhǔn)的統(tǒng)一性--LDR仔掸。
數(shù)據(jù)處理:類似方法脆贵,RGBA為0-255,M 浮點(diǎn)系數(shù)為1/255起暮。把0-255整數(shù)范圍映射到0-1浮點(diǎn)范圍卖氨。目的是方便圖形計(jì)算,方便硬件顯示负懦。(浮點(diǎn)可以為float half)
HDR
比LDR更寬的范圍筒捺,更柔和的過渡,也屬約定統(tǒng)稱纸厉。像圖22中三種不同的范圍也都屬于HDR系吭。也只是在CIE中不同的范圍。LDR沒在CIE中畫出來(lái)残腌,他的范圍會(huì)小太多村斟。
怎么開啟HDR,以u(píng)nity為例:
A抛猫、在項(xiàng)目設(shè)置中開啟HDR
B蟆盹、在攝相機(jī)上開啟HDR
C、RT處理
優(yōu)點(diǎn):
在高強(qiáng)度區(qū)域不會(huì)丟失顏色闺金,需要使用ToneMapping
更好地支持泛光和發(fā)光效果
減少低頻光照區(qū)域的條帶
(見下文章的細(xì)節(jié)說(shuō)明逾滥,主要思路是:保證高亮區(qū)域的信息正常(圖26),并保持其他亮度區(qū)域無(wú)變化败匹。)
缺點(diǎn):
使用浮點(diǎn)渲染紋理(渲染速度較慢寨昙,需要更多 VRAM)
不支持硬件抗鋸齒(但您可以使用抗鋸齒后期處理效果來(lái)平滑邊緣,采樣后的抗鋸齒效果欠佳)
并非所有硬件都支持掀亩,最少需要3.0以上
2.3槽棍、線性空間與伽馬空間
在做HDR之前需要理清捉蚤,線性空間與伽馬空間。Gamma 跟人類眼睛看到類似炼七,而自然界現(xiàn)實(shí)中是類線性的缆巧,從自然界說(shuō)Gamma空間其實(shí)是錯(cuò)誤的,但從人眼看到Gamma是正確的豌拙。在圖形計(jì)算里把陕悬,把顏色放在線性空間計(jì)算得到的結(jié)果更為正確,所以更高級(jí)而又復(fù)雜的圖形計(jì)算都是把顏色放進(jìn)線性空間內(nèi)按傅。
會(huì)存在一個(gè)棘手問題:當(dāng)帶有透明通道時(shí)胧卤,在線性空間下的不準(zhǔn)確性。一般解決方法狂秦,直接把資源先轉(zhuǎn)換到gamma空間再計(jì)算灌侣。其他光照使用線性計(jì)算,UI 和特效帶A通道的資源使用 gamma計(jì)算透明裂问,管線用線性,透明計(jì)算用gamma牛柒,如果讀者朋友有其他的好辦法堪簿,希望跟您多交流。
2.4皮壁、數(shù)據(jù)理論
生成HDR:普便見的操控?cái)?shù)據(jù)兩種方法椭更。A、把數(shù)值0-1轉(zhuǎn)存到0-無(wú)限蛾魄,這個(gè)無(wú)限屬于約定數(shù)值(約定的標(biāo)準(zhǔn)虑瀑,同理像之前只存到一個(gè)R通道,現(xiàn)在存到RGBA四通道)滴须;B舌狗、存儲(chǔ)數(shù)據(jù)時(shí),提高浮點(diǎn)位數(shù)扔水。
從HDR生成再轉(zhuǎn)成LDR痛侍,分兩步:一、寫到高范圍高精度魔市;二主届、解壓到0-1低范圍內(nèi)。
這兩步不同的地方就在于他們的M值系數(shù)不一樣待德,第一步M乘上第二步M值等于1君丁。一個(gè)數(shù)是另一個(gè)數(shù)的倒數(shù)。
真實(shí)世界的亮度對(duì)比度:是無(wú)窮薪堋(黑-0绘闷,注1)到無(wú)窮大(亮-無(wú)窮大),而解決這項(xiàng)任務(wù)涧偷,因硬件問題簸喂,我們需要做一個(gè)曲線矯正,把所有HDR的顏色空間轉(zhuǎn)換到LDR GAMMA空間0-1范圍內(nèi)燎潮。這步操作計(jì)算通常被大家叫做 GAMMA矯正喻鳄。后面出來(lái)的Tone-Mapping(色調(diào)映射),也是更高級(jí)的數(shù)據(jù)的轉(zhuǎn)換确封。圖33除呵。
真實(shí)世界是線性變化的再菊,為了模擬人視眼的非線性化感觀,做出了類似人眼的顯示器颜曾,為了達(dá)到并貼近類人眼效果就要做各種相關(guān)的模擬計(jì)算纠拔,這里面有很多部分是非線性計(jì)算的,并且都是為了簡(jiǎn)潔化的運(yùn)算泛豪。更精準(zhǔn)和更高級(jí)計(jì)算前稠诲,需把數(shù)據(jù)轉(zhuǎn)換成線性信息,再計(jì)算诡曙,計(jì)算完成后臀叙,再在最后的顯示中轉(zhuǎn)成標(biāo)準(zhǔn)gamma LDR。
HDR相關(guān)特性:如果畫面對(duì)比度不是太強(qiáng),HDR的效果并不明顯(圖34)慎璧;當(dāng)對(duì)比度非常高床嫌,已高到亮部細(xì)節(jié)丟失的情況下(已超出1范圍),采用HDR并使用Tone-Mapping胸私,將會(huì)重到一個(gè)高亮范圍正常的厌处,更接近人眼所觀查的現(xiàn)實(shí)類似圖像(圖35),柔和又不失高強(qiáng)對(duì)比度盖文,不失顏色飽和度嘱蛋。
對(duì)于Bloom和HDR的關(guān)聯(lián)性:在HDR 高精度內(nèi)使用Bloom計(jì)算來(lái)模擬泛光疙驾,計(jì)算完成后混合前源圖凶伙,得到結(jié)果的HDR圖,然后經(jīng)過Tone-Mapping得到LDR圖它碎;而Bloom放在HDR里面計(jì)算時(shí)有個(gè)好處是高亮處不會(huì)失去細(xì)節(jié)和顏色函荣,所以常常都會(huì)綁定使用。正常情況下Bloom和Tone-Mapping兩個(gè)功能都會(huì)拆分出來(lái)扳肛,讓藝術(shù)家自己去選擇打開和關(guān)閉傻挂,調(diào)校出更好的藝術(shù)性。并且后現(xiàn)代的Tone-Mapping ACES 做完挖息,不需要再次Gamma Pow(x, 0.4545)了金拒。
2.5、打印機(jī)色彩空間
來(lái)源:a套腹、節(jié)省印油绪抛,b资铡、并由于現(xiàn)實(shí)中顏色的疊加是越疊加越黑,所以做的是減法幢码。相片上呈現(xiàn)孔洞樣式笤休。
圖文形式記錄,理論與算法結(jié)合實(shí)踐症副。不講算法的都是流氓店雅!算法錯(cuò)誤,那就更加可怕了贞铣,可怕的半桶水還不自知底洗。如果此篇筆記,朋友您有讀到咕娄,在這感謝您的支持,如果您發(fā)現(xiàn)筆者有錯(cuò)誤的地方珊擂,希望您能指點(diǎn)出來(lái)圣勒,筆者不勝感謝。
參考資源:
1摧扇、GDC《hdr_photographic》PDF
2圣贸、各大百科
3、Unity 手冊(cè)
4扛稽、皮克斯動(dòng)畫