【技術(shù)美術(shù)百人計(jì)劃】Bloom輝光實(shí)現(xiàn)
一、Bloom算法介紹
什么是bloom
輝光效果,模擬攝像機(jī)圖像效果。讓舞臺(tái)有真實(shí)明亮效果

bloom算法:
1.提取原圖較量區(qū)域(閾值設(shè)定亮度)
2.模糊(提取后)圖像
3.與原圖混合

wiki部分總結(jié):
該效果會(huì)在高亮度物體周圍產(chǎn)生條紋或羽毛狀的光芒,以模糊圖像細(xì)節(jié)。如果物體背光,從第三人稱觀察,光線會(huì)表現(xiàn)得更加真實(shí),并在某種程度上與遮擋物體產(chǎn)生交疊。
在現(xiàn)實(shí)世界中,透鏡無(wú)法完美聚焦是高光的物理成因;理想透鏡也會(huì)在成像時(shí)由于衍射而產(chǎn)生艾里斑通常情況下難以察覺(jué)這些不完美的瑕疵,除非有強(qiáng)烈亮光源存在:這時(shí),圖像中的亮光部分會(huì)滲出其真實(shí)邊界。
LDR與HDR
LDR(Low Dynamic Range,低動(dòng)態(tài)范圍) RGB range in [0,1]
JPG PNG等格式圖片

HDR(High Dynamic Range,高動(dòng)態(tài)范圍)?
RGB range 可超過(guò) [0,1]
這樣可以提取更高亮度(超過(guò)1)的區(qū)域產(chǎn)生bloom效果
HDR、EXR格式圖片

wiki部分總結(jié):
現(xiàn)實(shí)中,當(dāng)人由黑暗的地方走到光亮的地方,會(huì)瞇起眼睛。人在黑暗的地方,為了看清楚對(duì)象,瞳孔會(huì)放大,以吸收更多光線;當(dāng)突然走到光亮的地方,瞳孔來(lái)不及收縮,所以瞇起眼睛,保護(hù)視網(wǎng)膜上的視神經(jīng)。
而電腦無(wú)法判斷光線明暗,唯有靠HDRR技術(shù)模擬這效果——人眼自動(dòng)適應(yīng)光線變化的能力。方法是快速將光線渲染得非常光亮,然后將亮度逐漸降低。而HDRR的最終效果是亮處的效果是鮮亮,而黑暗處的效果是能分辨物體的輪廓和深度,而不是以往的一團(tuán)黑。
HDRR技術(shù)的使用場(chǎng)景舉例如下:
例一場(chǎng)景: 陽(yáng)光普照下,水旁有一道墻壁。當(dāng)陽(yáng)光由水面反射到墻上,晴朗而明亮的天空會(huì)稍微暗一些,這樣能有助表現(xiàn)出水面的反光效果。當(dāng)人們低頭看水面,陽(yáng)光會(huì)反射到人眼中,整個(gè)畫面會(huì)非常光亮,并逐漸減弱,因?yàn)槿搜圻m應(yīng)了從水面反射的光。
例二場(chǎng)景: 陽(yáng)光直射到一塊光亮的石頭。若你緊盯著它,石頭表面的泛光會(huì)逐漸淡出,顯示出更多細(xì)節(jié)。
例三場(chǎng)景: 槍支的反射效果。
卷積
數(shù)學(xué)運(yùn)算如下:
(請(qǐng)注意Kernel卷積核在運(yùn)算時(shí)實(shí)際已經(jīng)水平旋轉(zhuǎn)180度,比如第一行第二列的“2”兩側(cè)的1實(shí)際已經(jīng)顛倒位置,但因?yàn)橹狄粯铀詻](méi)有表現(xiàn)出來(lái),PS:如果僅從獲得運(yùn)算結(jié)果的角度下,可以暫時(shí)理解為一種步驟)

減少圖像噪聲、降低細(xì)節(jié)層次的方法。

高斯核

二維高斯函數(shù)特點(diǎn):可分離性,將二維高斯函數(shù)拆成兩個(gè)一維高斯函數(shù)以降低計(jì)算量
二維高斯核運(yùn)算:N N W * H 次紋理采樣
兩次一維高斯核運(yùn)算:2 N W * H 次紋理采樣

《unity shader入門精要》對(duì)應(yīng)頁(yè)數(shù):P253-254
二、Bloom算法實(shí)現(xiàn)
高斯模糊Bloom算法參考《UnityShader入門精要》關(guān)于高斯模糊修改而來(lái)
C#代碼(置于攝像機(jī)上):
Shader代碼: