談?wù)剤D形學(xué)中的光和顏色

之前在查詢Physically Based Rendering(PBR)資料的時候偶爾翻到了幾篇關(guān)于光和顏色的博客零如,才知道原來在我寫的shader里一直在用的RGB值的由來,也去閱讀了Real Time Rendering(4th Edition)第八章的相關(guān)內(nèi)容,所以這篇算是一個讀書筆記吧有鹿。

  1. Radiometry(光能測量學(xué))
    顧名思義,這門學(xué)問是測量電磁輻射的寄狼。在這里我并不是要來解釋這門學(xué)問或者將原文這段翻譯一下查乒,而是要記錄下這段的兩個要點(diǎn)弥喉。
    第一,人眼的可見光波長范圍在[400nm,700nm]


    可見光波長

第二玛迄,光度學(xué)所測量的四個重要方面:radiant flux由境,irradiance,radiant intensity以及radiance


Radiometric quantities

首先來看第一個輻射功率(radiant flux)蓖议。我們知道虏杰,光都是攜帶能量的。我們把一束光在我們感知到的一瞬間(1幀)所發(fā)出的能量記為radiant flux勒虾。一束光中包含了多個光波纺阔,每個光波波長不一,波長越長則radiant flux越小修然。

irradiance笛钝,中文為輻照度,這個量是關(guān)于感受器(比如說視網(wǎng)膜)的愕宋。由于radiant flux無法直接度量感受玻靡,想象下一個燈泡在極短的時間內(nèi)向四周發(fā)射光線,不能說誰的視網(wǎng)膜面積大所以感受到的光強(qiáng)吧中贝?所以我們用irradiance來度量囤捻,指單位面積接受到多少radiant flux。對于點(diǎn)光源來說邻寿,irradiance = radiant flux / 4\pi r^2蝎土,球的面積是4\pi r^2

第三個radiant intensity绣否,與irradiance用來衡量光能接收器相對的誊涯,是衡量光能發(fā)出器的一個東西。由于光子從發(fā)光源發(fā)射之后蒜撮,隨著距離的增加光子分布的越稀疏暴构,在不同距離的irradiance也是不同的,所以拿irradiance來度量并不是一個好的選擇淀弹。radiant flux可以用來作為衡量的一個標(biāo)準(zhǔn)丹壕,但更常用的方式是以發(fā)射源作為球心,測量單位球面度上的光子的總能量薇溃,這個量用intensity(強(qiáng)度)來表述菌赖,intensity = radiant flux / 4\pi。為什么要除以4\pi呢沐序?首先要明白什么是球面度琉用,角度是二維圓弧上對應(yīng)的角度堕绩,那么球面度就是三維球上一個弧面對應(yīng)的球心角度,整個圓的角度為2\pi邑时,整個圓弧長為2\pi r^2奴紧,那么整個球面度為4\pi,球面積為4\pi r^2晶丘。在游戲引擎中黍氮,通常用intensity來衡量光源的強(qiáng)度,而且intensity和irradiance可以相互轉(zhuǎn)化浅浮,intensity = irrandiance * r^2沫浆,如果r=1即在單位球上,他們倆相等滚秩。

radiance专执,輻射率,是用于成像的接收器的度量郁油。上文提到的irradiance在視網(wǎng)膜或者攝像機(jī)成像中本股,是不能成像的。理論上視網(wǎng)膜的一個細(xì)胞會接受來自場景每個點(diǎn)的光能反射桐腌,這些irradiance互相相加平均才產(chǎn)生模糊的像拄显。人眼是個小孔成像系統(tǒng),其機(jī)制是選出一小束光使其通過小孔哩掺,射到接收器上凿叠。之后就可以用radiance來度量涩笤,其表述的是總的光能radiant flux在極小球面度和極小球面積上的值嚼吞,那么

radiance = \frac{dradiant flux}{d w * d area * cosθ}

w是球面角,area是光線與表面接觸的球面積蹬碧,cos\theta是要算與光線垂直截面的面積舱禽。

我們一般用L來代表radiance,它由5個變量所決定(或者6個恩沽,包括波長)誊稚,寫成函數(shù)即L(p,d)。p為光線的起點(diǎn)罗心,d是方向里伯。在渲染方程里,經(jīng)常出現(xiàn)L_i(x,d)或者L_o(x,d)渤闷,代表從點(diǎn)x處發(fā)出或射入點(diǎn)x處的光線疾瓮,d為光線的方向,經(jīng)常是從x處向外指飒箭,是為了計(jì)算比如說點(diǎn)積的方便狼电。有了L蜒灰,我們就可以描述渲染要解決的數(shù)學(xué)問題了。我們將屏幕當(dāng)做一個小孔成像系統(tǒng)肩碟,追蹤在場景中穿過其的每條光線L_i并對其積分强窖,即為像素獲得的能量,也就是pixel shader(fragment shader)的最終輸出削祈,由于L_i的單位是w/m^2sr翅溺,所以這個積分要在每個球面角和每個球面積上進(jìn)行。

  1. Photometry(光度學(xué))
    以上是光的能量的測量問題髓抑,但我們?nèi)搜鄹惺艿降墓夂鸵陨纤鲇钟胁煌次祝瑖H照明組織(CIE)給出了一條曲線,叫photometric curve启昧,乘上這條曲線叙凡,可以將Radiometry轉(zhuǎn)成Photometry。


    The photometric curve

那么上面所說的四個量也就能轉(zhuǎn)成人眼所能感受的量了密末。


我們通常用Luminance表達(dá)亮度握爷,HDR電視屏幕的峰值亮度為500-100尼特(nit),干凈明亮的天空為8000尼特严里,一只60w的電燈泡為120000尼特新啼,太陽為600000尼特。

  1. Colorimetry(色度學(xué))
    人眼中有三種感受光的視桿細(xì)胞刹碾,每種細(xì)胞會對不同波長的光產(chǎn)生不同的反應(yīng)燥撞,但傳到大腦中的信號只有三種,而可見光有七種顏色即七種波長迷帜,那么到底傳到大腦中的是哪三種特定波長即顏色的信號呢物舒?國際照明組織(CIE)做了實(shí)驗(yàn),用人肉的方式得出了結(jié)論戏锹,即我們現(xiàn)在所熟知的RGB三原色冠胯。


這三種顏色的疊加造成了我們能看到超過千萬種不同的顏色。然而锦针,這種人肉實(shí)驗(yàn)得出的曲線在某些范圍內(nèi)有負(fù)值荠察,顯然,在這種狀態(tài)下我們不能用rgb來表達(dá)某些顏色了奈搜。所以悉盆,rgb不能表達(dá)所有的顏色,只是對顏色的降維表達(dá)馋吗,真正要表達(dá)顏色還是需要用光譜焕盟。
那么,好不容易找到了三原色不可能因?yàn)檫@就拋棄不用吧耗美?事實(shí)上京髓,CIE通過一系列的操作航缀,提出了另一種rgb的曲線


雖然在現(xiàn)實(shí)中不存在這樣的曲線圖,但卻能表達(dá)人類所能看見的所有顏色了堰怨。將rgb作為xyz的空間坐標(biāo)芥玉,即能得到顏色空間的圖


然后將這三維空間投影到x+y+z=1的二維平面(因?yàn)閦可以通過1-x-y獲得),則得到了一個馬蹄形的色域圖


色域圖

我們?nèi)搜鬯芤姷念伾荚谶@張圖里备图,那個在白色三角形內(nèi)的顏色代表sRGB這種顏色標(biāo)準(zhǔn)所能表達(dá)的全部顏色灿巧,黑點(diǎn)是白點(diǎn),是純白色的所在揽涮。我們現(xiàn)在很多設(shè)備的顯示都是遵循sRGB這種顏色標(biāo)準(zhǔn)的抠藕,所以,當(dāng)你盯著屏幕的時候蒋困,其實(shí)你能看到的顏色比現(xiàn)實(shí)中少很多盾似。當(dāng)然有許多其他的顏色標(biāo)準(zhǔn),可以把這個三角形區(qū)域擴(kuò)大很多雪标,但依然有許多顏色不能被物理設(shè)備所展現(xiàn)零院,畢竟rgb是低維的表達(dá),而不是光譜村刨。


不同標(biāo)準(zhǔn)所能表達(dá)的顏色區(qū)域

那么告抄,radiometry是在表述光的能量,photometry在表述人眼所能辨別的光能嵌牺,colorimetry在表述人眼所見的顏色打洼,他們之間有什么關(guān)系呢?其實(shí)逆粹,光能強(qiáng)不強(qiáng)和人眼所見的光能強(qiáng)不強(qiáng)是兩回事募疮,而人眼所見的光強(qiáng)不強(qiáng)和反饋在rgb這三個量上的數(shù)值又是兩回事,落實(shí)到游戲領(lǐng)域枯饿,我們渲染的最終結(jié)果還是基于人的感知空間的色度作為度量來進(jìn)行光照計(jì)算酝锅。

  1. Scene to Screen(場景到屏幕)
    前面經(jīng)過光照計(jì)算所得的顏色代表了我們所感知的場景的顏色诡必,然而把它輸出給屏幕奢方,在屏幕上顯示的顏色是否是我們感知的顏色呢?答案是否定的爸舒。首先蟋字,人眼有自適性,場景的亮和暗會對物體的顏色產(chǎn)生影響扭勉,并且鹊奖,物體在不同顏色的環(huán)境中,人眼也會看到不同的顏色涂炎。如圖忠聚,你感受到的顏色一樣么设哗?


    對比圖

其次,所有的物理設(shè)備顯示的顏色范圍是有限的两蟀,場景的顏色范圍遠(yuǎn)遠(yuǎn)大于物理設(shè)備所能顯示的顏色數(shù)量网梢,所以我們需要一些技術(shù),比如HDR赂毯,把物理設(shè)備顯示的顏色范圍提高一些战虏,或者,把較寬的顏色范圍對應(yīng)到一個較窄的范圍內(nèi)党涕。

基于這些不同烦感,toon mapping應(yīng)運(yùn)而生。這種技術(shù)把真實(shí)場景中的顏色轉(zhuǎn)成人眼感知的顏色膛堤,以達(dá)到在屏幕上顯示的顏色在被人看到后能夠讓人還原當(dāng)時的場景手趣,而不會讓人感覺場景很假。


Toon Mapping的使用階段
Toon Mapping目的

PS. 這是今年的最后一篇博客了肥荔,看了下電腦上的便簽回懦,還有8個主題想要寫成博客(也許會增加),希望能在明年第一季度寫完次企!

參考
RTR4 拾遺(一)-- 圖形學(xué)的B面
顏色 /About Color --圖形學(xué)的B面(二)
PBR--RTR4筆記--第八章 光與顏色

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怯晕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缸棵,更是在濱河造成了極大的恐慌舟茶,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堵第,死亡現(xiàn)場離奇詭異吧凉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)踏志,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門阀捅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人针余,你說我怎么就攤上這事饲鄙。” “怎么了圆雁?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵忍级,是天一觀的道長。 經(jīng)常有香客問我伪朽,道長轴咱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮朴肺,結(jié)果婚禮上窖剑,老公的妹妹穿的比我還像新娘。我一直安慰自己戈稿,他們只是感情好苛吱,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著器瘪,像睡著了一般翠储。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上橡疼,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天援所,我揣著相機(jī)與錄音莫秆,去河邊找鬼匈子。 笑死,一個胖子當(dāng)著我的面吹牛柱嫌,可吹牛的內(nèi)容都是我干的历帚。 我是一名探鬼主播滔岳,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挽牢!你這毒婦竟也來了谱煤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤禽拔,失蹤者是張志新(化名)和其女友劉穎刘离,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體睹栖,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硫惕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了野来。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恼除。...
    茶點(diǎn)故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖曼氛,靈堂內(nèi)的尸體忽然破棺而出豁辉,到底是詐尸還是另有隱情,我是刑警寧澤搪锣,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布秋忙,位于F島的核電站,受9級特大地震影響构舟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一狗超、第九天 我趴在偏房一處隱蔽的房頂上張望弹澎。 院中可真熱鬧,春花似錦努咐、人聲如沸苦蒿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽佩迟。三九已至,卻和暖如春竿屹,著一層夾襖步出監(jiān)牢的瞬間报强,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工拱燃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秉溉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓碗誉,卻偏偏與公主長得像召嘶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子哮缺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評論 2 349