18精品久久久无码午夜福利91,日本有码在线中文字幕,国产精品秘 入口66mio,日韩欧美一区二区东京热

產品列表PRODUCTS LIST

首頁 > 技術與支持 > HDR技術詳解
HDR技術詳解
點擊次數:1609 更新時間:2021-11-30

OpenGL核心技術之HDR

一般來(lai)說(shuo),當存儲在幀緩沖(Framebuffer)中(zhong)時,亮度(du)(du)和(he)顏(yan)色的(de)值(zhi)是默認被(bei)限制在0.0到1.0之間(jian)的(de)。這(zhe)(zhe)(zhe)個(ge)(ge)看起來(lai)無(wu)辜(gu)的(de)語句使(shi)我們一直(zhi)將亮度(du)(du)與(yu)顏(yan)色的(de)值(zhi)設置在這(zhe)(zhe)(zhe)個(ge)(ge)范圍內,嘗試(shi)著與(yu)場景契合。這(zhe)(zhe)(zhe)樣是能夠(gou)運行的(de),也能給出還(huan)不錯的(de)效果(guo)。但是如果(guo)我們遇(yu)上了一個(ge)(ge)特(te)定的(de)區域,其中(zhong)有多個(ge)(ge)亮光源使(shi)這(zhe)(zhe)(zhe)些數值(zhi)總和(he)超(chao)過了1.0,又會發生什么呢?答案(an)是這(zhe)(zhe)(zhe)些片(pian)(pian)段中(zhong)超(chao)過1.0的(de)亮度(du)(du)或者顏(yan)色值(zhi)會被(bei)約束在1.0,從(cong)而導致場景混成一片(pian)(pian),難以分(fen)辨:


這是由于大(da)量片段(duan)的顏色值都(dou)非常(chang)接(jie)近(jin)1.0,在很(hen)(hen)大(da)一個區域內(nei)每一個亮(liang)的片段(duan)都(dou)有相同的白色。這損失了(le)很(hen)(hen)多的細節,使場景看起來非常(chang)假。

解決這個(ge)問題的一(yi)個(ge)方案(an)是(shi)(shi)減小光源的強度從而(er)保證場景內沒有一(yi)個(ge)片段(duan)亮(liang)于1.0。然而(er)這并不是(shi)(shi)一(yi)個(ge)好的方案(an),因為(wei)你需要(yao)使用不切實際(ji)的光照參數。一(yi)個(ge)更好的方案(an)是(shi)(shi)讓顏色(se)暫時超過1.0,然后將其轉(zhuan)換至0.0到1.0的區間內,從而(er)防止損(sun)失細節。

顯示器被限制為(wei)只能(neng)顯示值為(wei)0.0到1.0間的顏色,但(dan)是(shi)在光照方程中卻(que)沒(mei)有這(zhe)個(ge)限制。通過(guo)使片段(duan)的顏色超(chao)過(guo)1.0,我(wo)們有了(le)一個(ge)更(geng)大(da)的顏色范圍,這(zhe)也被稱作HDR(High Dynamic Range, 高動態范圍)。有了(le)HDR,亮(liang)的東西可以(yi)(yi)變得(de)非常亮(liang),暗的東西可以(yi)(yi)變得(de)非常暗,而且(qie)充(chong)滿細節。

HDR原本只是被(bei)(bei)運(yun)用(yong)在(zai)攝(she)影上,攝(she)影師對同一個場景(jing)采(cai)取不同曝(pu)光(guang)拍(pai)多張(zhang)(zhang)照片(pian)(pian),捕捉大范(fan)圍的(de)(de)(de)色彩值。這些圖片(pian)(pian)被(bei)(bei)合(he)成為HDR圖片(pian)(pian),從而綜合(he)不同的(de)(de)(de)曝(pu)光(guang)等級(ji)使得(de)大范(fan)圍的(de)(de)(de)細節可見(jian)。看(kan)下面(mian)這個例子,左邊這張(zhang)(zhang)圖片(pian)(pian)在(zai)被(bei)(bei)光(guang)照亮(liang)的(de)(de)(de)區(qu)域(yu)充滿(man)細節,但(dan)是在(zai)黑暗的(de)(de)(de)區(qu)域(yu)就什(shen)么都看(kan)不見(jian)了;但(dan)是右邊這張(zhang)(zhang)圖的(de)(de)(de)高曝(pu)光(guang)卻可以(yi)讓之前看(kan)不出來(lai)的(de)(de)(de)黑暗區(qu)域(yu)顯現(xian)出來(lai)。


這與我們眼(yan)(yan)睛工作的原理非(fei)常相(xiang)似,也是HDR渲染的基礎。當光(guang)線(xian)很弱的啥時候(hou),人眼(yan)(yan)會(hui)自動調整從而使過暗和過亮的部分變(bian)得更清(qing)晰,就(jiu)像人眼(yan)(yan)有(you)一個能自動根據場景亮度調整的自動曝光(guang)滑塊(kuai)。

HDR渲染(ran)和其很相似,我們允許用更(geng)大(da)范(fan)(fan)圍的(de)顏色值渲染(ran)從而獲取大(da)范(fan)(fan)圍的(de)黑(hei)暗(an)與明亮的(de)場(chang)景細節,zui后將所(suo)有HDR值轉換(huan)成在(zai)[0.0, 1.0]范(fan)(fan)圍的(de)LDR(Low Dynamic Range,低動態范(fan)(fan)圍)。轉換(huan)HDR值到LDR值得過(guo)程(cheng)叫做(zuo)色調(diao)映射(she)(she)(Tone Mapping),現在(zai)現存有很多的(de)色調(diao)映射(she)(she)算法(fa),這(zhe)(zhe)些(xie)算法(fa)致力(li)于在(zai)轉換(huan)過(guo)程(cheng)中保留盡可能多的(de)HDR細節。這(zhe)(zhe)些(xie)色調(diao)映射(she)(she)算法(fa)經常會包含一個選擇性傾向(xiang)黑(hei)暗(an)或者明亮區域的(de)參數。

在實時渲(xuan)染中,HDR不(bu)(bu)僅允許我(wo)們(men)超(chao)過LDR的(de)(de)(de)(de)范圍[0.0, 1.0]與(yu)保留更(geng)(geng)多的(de)(de)(de)(de)細節(jie),同時還讓我(wo)們(men)能(neng)夠根據光(guang)源(yuan)的(de)(de)(de)(de)真(zhen)實強(qiang)(qiang)度(du)它的(de)(de)(de)(de)強(qiang)(qiang)度(du)。比如太陽(yang)有比閃光(guang)燈(deng)之(zhi)類的(de)(de)(de)(de)東西(xi)更(geng)(geng)高(gao)的(de)(de)(de)(de)強(qiang)(qiang)度(du),那(nei)么我(wo)們(men)為什么不(bu)(bu)這(zhe)樣(yang)子(zi)設(she)置呢(ni)?(比如說設(she)置一(yi)個10.0的(de)(de)(de)(de)漫亮度(du)) 這(zhe)允許我(wo)們(men)用更(geng)(geng)現實的(de)(de)(de)(de)光(guang)照(zhao)參數恰當地(di)配置一(yi)個場(chang)景的(de)(de)(de)(de)光(guang)照(zhao),而(er)這(zhe)在LDR渲(xuan)染中是不(bu)(bu)能(neng)實現的(de)(de)(de)(de),因為他們(men)會(hui)被(bei)上限約束在1.0。

因(yin)為顯(xian)示器只能(neng)顯(xian)示在0.0到1.0范(fan)圍之(zhi)內的顏(yan)色(se),我(wo)們肯定要做(zuo)(zuo)一(yi)些轉換(huan)從而使得(de)當(dang)前(qian)的HDR顏(yan)色(se)值符(fu)合顯(xian)示器的范(fan)圍。簡單地(di)取(qu)平(ping)均值重新轉換(huan)這(zhe)些顏(yan)色(se)值并不能(neng)很好的解決(jue)這(zhe)個(ge)問(wen)題(ti),因(yin)為明亮的地(di)方(fang)會(hui)顯(xian)得(de)更加顯(xian)著。我(wo)們能(neng)做(zuo)(zuo)的是用一(yi)個(ge)不同的方(fang)程(cheng)與/或曲線來(lai)轉換(huan)這(zhe)些HDR值到LDR值,從而給(gei)我(wo)們對于場景的亮度*掌控,這(zhe)就是之(zhi)前(qian)說的色(se)調變換(huan),也是HDR渲染的zui終(zhong)步驟。

在(zai)實現HDR渲(xuan)染之(zhi)前(qian),我們首先需要一些(xie)防止顏色(se)(se)值(zhi)(zhi)在(zai)每一個片段著色(se)(se)器運行后被限制約束(shu)的(de)(de)方法(fa)。當幀緩(huan)沖(chong)使用了一個標準化的(de)(de)定點格(ge)式(shi)(像GL_RGB)為其(qi)顏色(se)(se)緩(huan)沖(chong)的(de)(de)內部(bu)格(ge)式(shi),OpenGL會在(zai)將這些(xie)值(zhi)(zhi)存入幀緩(huan)沖(chong)前(qian)自動將其(qi)約束(shu)到0.0到1.0之(zhi)間。這一操作對(dui)大部(bu)分幀緩(huan)沖(chong)格(ge)式(shi)都(dou)是成立(li)的(de)(de),除了專門用來存放被拓(tuo)展范圍(wei)值(zhi)(zhi)的(de)(de)浮點格(ge)式(shi)。

當一個幀(zhen)緩(huan)沖的(de)顏色緩(huan)沖的(de)內部格式被(bei)設(she)定成了GL_RGB16F, GL_RGBA16F, GL_RGB32F 或者(zhe)GL_RGBA32F時,這(zhe)些幀(zhen)緩(huan)沖被(bei)叫做(zuo)浮點幀(zhen)緩(huan)沖(Floating Point Framebuffer),浮點幀(zhen)緩(huan)沖可(ke)以存儲超過0.0到1.0范圍(wei)的(de)浮點值,所以非(fei)常(chang)適合(he)HDR渲染。

想要(yao)創建一個(ge)浮點幀緩沖,我們只需(xu)要(yao)改變顏色緩沖的內部(bu)格(ge)式參數就行(xing)了(le)(注意GL_FLOAT參數):

[cpp] view plain copy

  1. glBindTexture(GL_TEXTURE_2D, colorBuffer);  

  2. glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16F, SCR_WIDTH, SCR_HEIGHT, 0, GL_RGB, GL_FLOAT, NULL);    


默(mo)認的幀(zhen)緩(huan)沖(chong)默(mo)認一個顏(yan)(yan)色(se)分量只占用8位(bits)。當使用一個使用32位每顏(yan)(yan)色(se)分量的浮點幀(zhen)緩(huan)沖(chong)時(使用GL_RGB32F 或者GL_RGBA32F),我們(men)需(xu)要(yao)四(si)倍的內存來存儲(chu)這些顏(yan)(yan)色(se)。所以除非(fei)你(ni)需(xu)要(yao)一個非(fei)常高的度,32位不是必須的,使用GLRGB16F就足夠了。

有了一個(ge)帶有浮點(dian)顏色緩(huan)沖(chong)的幀(zhen)(zhen)緩(huan)沖(chong),我(wo)們(men)可以放心渲染(ran)場(chang)(chang)景(jing)到這(zhe)(zhe)個(ge)幀(zhen)(zhen)緩(huan)沖(chong)中(zhong)。在這(zhe)(zhe)個(ge)教程的例子當(dang)中(zhong),我(wo)們(men)先(xian)渲染(ran)一個(ge)光照的場(chang)(chang)景(jing)到浮點(dian)幀(zhen)(zhen)緩(huan)沖(chong)中(zhong),之后再在一個(ge)鋪屏(ping)四邊(bian)形(Screen-filling Quad)上應用(yong)這(zhe)(zhe)個(ge)幀(zhen)(zhen)緩(huan)沖(chong)的顏色緩(huan)沖(chong),代碼會是這(zhe)(zhe)樣子:

[cpp] view plain copy

  1. glBindFramebuffer(GL_FRAMEBUFFER, hdrFBO);  

  2.    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    

  3.    // [...] 渲染(ran)(光照的(de))場景  

  4. glBindFramebuffer(GL_FRAMEBUFFER, 0);  

  5.  

  6. // 現在(zai)使(shi)用(yong)一(yi)個不(bu)同(tong)的著(zhu)色(se)器將HDR顏(yan)色(se)緩沖(chong)渲染(ran)至2D鋪屏四(si)邊(bian)形上  

  7. hdrShader.Use();  

  8. glActiveTexture(GL_TEXTURE0);  

  9. glBindTexture(GL_TEXTURE_2D, hdrColorBufferTexture);  

  10. RenderQuad();  


這里場(chang)景的(de)顏色值(zhi)存在一個(ge)(ge)可以包(bao)含任意顏色值(zhi)的(de)浮點顏色緩沖中,值(zhi)可能是超過1.0的(de)。這個(ge)(ge)簡單(dan)的(de)演示中,場(chang)景被創建為一個(ge)(ge)被拉伸的(de)立方(fang)體(ti)通道和四個(ge)(ge)點光源(yuan),其中一個(ge)(ge)非常亮的(de)在隧道的(de)盡頭(tou):


[cpp] view plain copy

  1. std::vectorlightColors;  

  2. lightColors.push_back(glm::vec3(200.0f, 200.0f, 200.0f));  

  3. lightColors.push_back(glm::vec3(0.1f, 0.0f, 0.0f));  

  4. lightColors.push_back(glm::vec3(0.0f, 0.0f, 0.2f));  

  5. lightColors.push_back(glm::vec3(0.0f, 0.1f, 0.0f));    

渲染至浮點幀緩(huan)沖(chong)(chong)和渲染至一(yi)個(ge)普(pu)通的(de)幀緩(huan)沖(chong)(chong)是(shi)一(yi)樣的(de)。新的(de)東西就是(shi)這(zhe)個(ge)的(de)hdrShader的片段著色(se)器,用來渲(xuan)染(ran)zui終擁有浮點(dian)顏(yan)色(se)緩沖(chong)紋理(li)的2D四(si)邊(bian)形。我們來定義一個簡單的直通片段著色(se)器(Pass-through Fragment Shader):



[cpp] view plain copy

  1. #version 330 core  

  2. out vec4 color;  

  3. in vec2 TexCoords;  

  4.  

  5. uniform sampler2D hdrBuffer;  

  6.  

  7. void main()  

  8. {              

  9.    vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb;  

  10.    color = vec4(hdrColor, 1.0);  

  11. }    


這(zhe)里我們直(zhi)接(jie)采(cai)樣(yang)了浮點顏(yan)色(se)(se)緩沖并將其作(zuo)為片段著(zhu)色(se)(se)器(qi)的(de)輸(shu)出。然而,這(zhe)個(ge)2D四邊形的(de)輸(shu)出是被直(zhi)接(jie)渲染(ran)到(dao)默認的(de)幀(zhen)緩沖中,導致所有(you)片段著(zhu)色(se)(se)器(qi)的(de)輸(shu)出值被約束(shu)在0.0到(dao)1.0間,盡管(guan)我們已經有(you)了一些存在浮點顏(yan)色(se)(se)紋理的(de)值超過了1.0。


很明顯(xian),在隧道盡頭的強光的值(zhi)被約束(shu)在1.0,因為(wei)一大塊區域都是白色的,過程中(zhong)超過1.0的地方損(sun)失了所有(you)細(xi)節(jie)。因為(wei)我們(men)直接(jie)轉(zhuan)換HDR值(zhi)到LDR值(zhi),這就像我們(men)根本(ben)就沒(mei)有(you)應(ying)用(yong)HDR一樣(yang)。為(wei)了修復這個問題我們(men)需要(yao)做(zuo)的是無損(sun)轉(zhuan)化(hua)所有(you)浮點顏(yan)色值(zhi)回0.0-1.0范圍中(zhong)。我們(men)需要(yao)應(ying)用(yong)到色調映射。


色調映射(Tone Mapping)是一個損失很(hen)小的(de)轉換(huan)浮(fu)點顏色值(zhi)至我們(men)所需的(de)LDR[0.0, 1.0]范(fan)圍內的(de)過程,通(tong)常會伴有(you)特(te)定的(de)風格的(de)色平(ping)衡(heng)(Stylistic Color Balance)。

zui簡(jian)單(dan)的(de)色(se)調(diao)(diao)映(ying)(ying)射(she)(she)算法是Reinhard色(se)調(diao)(diao)映(ying)(ying)射(she)(she),它涉(she)及(ji)到(dao)分散整個HDR顏色(se)值到(dao)LDR顏色(se)值上(shang),所有的(de)值都有對應。Reinhard色(se)調(diao)(diao)映(ying)(ying)射(she)(she)算法平均得將(jiang)所有亮度值分散到(dao)LDR上(shang)。我們將(jiang)Reinhard色(se)調(diao)(diao)映(ying)(ying)射(she)(she)應用(yong)到(dao)之前的(de)片段著色(se)器上(shang),并且為了更好的(de)測量加(jia)上(shang)一個Gamma校正過濾(包括SRGB紋理的(de)使用(yong)):

[cpp] view plain copy

  1. void main()  

  2. {          ;    

  3.    const float gamma = 2.2;  

  4.    vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb;  

  5.  

  6.    // Reinhard色調映(ying)射(she)  

  7.    vec3 mapped = hdrColor / (hdrColor + vec3(1.0));  

  8.    // Gamma校正  

  9.    mapped = pow(mapped, vec3(1.0 / gamma));  

  10.  

  11.    color = vec4(mapped, 1.0);  

  12. }    

有(you)了Reinhard色調(diao)映射的(de)應用(yong),我(wo)們(men)不(bu)再(zai)會(hui)在場(chang)景明(ming)亮(liang)的(de)地方(fang)損失(shi)細節。當(dang)然(ran),這個算(suan)法(fa)是(shi)傾向明(ming)亮(liang)的(de)區域(yu)的(de),暗的(de)區域(yu)會(hui)不(bu)那么(me)精細也不(bu)那么(me)有(you)區分度。


現在(zai)你可(ke)(ke)以看到(dao)在(zai)隧(sui)道的盡(jin)頭木頭紋理(li)變得可(ke)(ke)見(jian)了。用了這個(ge)非常簡單地色(se)調映射(she)算(suan)法(fa),我們(men)(men)可(ke)(ke)以合適的看到(dao)存在(zai)浮點幀(zhen)緩沖中整個(ge)范圍的HDR值(zhi),給我們(men)(men)對(dui)于(yu)無損場景光照的控制(zhi)。

另一個有(you)趣的(de)(de)色調映射應(ying)用是曝(pu)光(guang)(Exposure)參(can)數(shu)的(de)(de)使(shi)(shi)用。你可(ke)能還記得之前我(wo)們(men)(men)在(zai)(zai)介(jie)紹(shao)里講(jiang)到(dao)的(de)(de),HDR圖片包含在(zai)(zai)不同(tong)曝(pu)光(guang)等級的(de)(de)細節(jie)。如果我(wo)們(men)(men)有(you)一個場景(jing)要展現日夜(ye)交(jiao)替,我(wo)們(men)(men)當然會在(zai)(zai)白天使(shi)(shi)用低(di)曝(pu)光(guang),在(zai)(zai)夜(ye)間使(shi)(shi)用高曝(pu)光(guang),就像(xiang)人眼(yan)調節(jie)方式一樣。有(you)了這個曝(pu)光(guang)參(can)數(shu),我(wo)們(men)(men)可(ke)以去設(she)置可(ke)以同(tong)時在(zai)(zai)白天和夜(ye)晚不同(tong)光(guang)照(zhao)(zhao)條件工作的(de)(de)光(guang)照(zhao)(zhao)參(can)數(shu),我(wo)們(men)(men)只需(xu)要調整曝(pu)光(guang)參(can)數(shu)就行(xing)了。

一個(ge)簡單的曝光色調映(ying)射算法(fa)會像這樣:

[cpp] view plain copy

  1. uniform float exposure;  

  2.  

  3. void main()  

  4. {        ;      

  5.    const float gamma = 2.2;  

  6.    vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb;  

  7.  

  8.    // 曝光色調映射  

  9.    vec3 mapped = vec3(1.0) - exp(-hdrColor * exposure);  

  10.    // Gamma校正(zheng)  

  11.    mapped = pow(mapped, vec3(1.0 / gamma));  

  12.  

  13.    color = vec4(mapped, 1.0);  

  14. }    


在這里(li)我們(men)將exposure定義為默認為1.0的uniform,從而允(yun)(yun)許我(wo)們(men)更加設定我(wo)們(men)是(shi)要(yao)注重黑(hei)暗(an)還是(shi)明亮的(de)區(qu)(qu)域(yu)的(de)HDR顏色值(zhi)。舉例(li)來說,高曝(pu)光(guang)值(zhi)會(hui)使(shi)隧道的(de)黑(hei)暗(an)部分顯示更多的(de)細(xi)節,然而低(di)曝(pu)光(guang)值(zhi)會(hui)顯著減少黑(hei)暗(an)區(qu)(qu)域(yu)的(de)細(xi)節,但允(yun)(yun)許我(wo)們(men)看到更多明亮區(qu)(qu)域(yu)的(de)細(xi)節。下面這組圖片展示了(le)在不同曝(pu)光(guang)值(zhi)下的(de)通道:

這個圖片清晰地展示了HDR渲染的(de)優點。通過改變曝光等級,我們(men)可(ke)以看(kan)見場景的(de)很多細(xi)節,而這些細(xi)節可(ke)能在(zai)LDR渲染中都被丟失了。比如說隧(sui)道盡(jin)頭(tou),在(zai)正常曝光下(xia)木頭(tou)結構隱約(yue)可(ke)見,但用(yong)低(di)曝光木頭(tou)的(de)花紋(wen)就可(ke)以清晰看(kan)見了。對于(yu)近處(chu)的(de)木頭(tou)花紋(wen)來說,在(zai)高(gao)曝光下(xia)會能更(geng)好的(de)看(kan)見。

zui后(hou)把實現的源代(dai)碼給(gei)讀者(zhe)展(zhan)示如下,首先展(zhan)示的是頂點著色器代(dai)碼:


[cpp] view plain copy

  1. #version 330 core  

  2. layout (location = 0) in vec3 position;  

  3. layout (location = 1) in vec2 texCoords;  

  4.  

  5. out vec2 TexCoords;  

  6.  

  7. void main()  

  8. {  

  9.    gl_Position = vec4(position, 1.0f);  

  10.    TexCoords = texCoords;  

  11. }  


片段著色器代碼如下所示(shi):



[cpp] view plain copy

  1. #version 330 core  

  2. out vec4 color;  

  3. in vec2 TexCoords;  

  4.  

  5. uniform sampler2D hdrBuffer;  

  6. uniform float exposure;  

  7. uniform bool hdr;  

  8.  

  9. void main()  

  10. {              

  11.    const float gamma = 2.2;  

  12.    vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb;  

  13.  

  14.    // reinhard  

  15.    // vec3 result = hdrColor / (hdrColor + vec3(1.0));  

  16.    // exposure  

  17.    vec3 result = vec3(1.0) - exp(-hdrColor * exposure);  

  18.    // also gamma correct while we're at it        

  19.    result = pow(result, vec3(1.0 / gamma));  

  20.    color = vec4(result, 1.0f);  

  21. }  



在這里展示(shi)的(de)兩個色調映射(she)算(suan)法(fa)(fa)僅僅是大(da)量(更(geng)先進)的(de)色調映射(she)算(suan)法(fa)(fa)中的(de)一小(xiao)部分(fen),這些(xie)(xie)算(suan)法(fa)(fa)各有(you)(you)(you)長(chang)短.一些(xie)(xie)色調映射(she)算(suan)法(fa)(fa)傾向于(yu)特定的(de)某種顏色/強(qiang)度,也(ye)(ye)有(you)(you)(you)一些(xie)(xie)算(suan)法(fa)(fa)同時顯示(shi)低(di)于(yu)高曝(pu)光顏色從而(er)能夠(gou)(gou)顯示(shi)更(geng)加多彩和精細的(de)圖像。也(ye)(ye)有(you)(you)(you)一些(xie)(xie)技(ji)巧被稱作自(zi)動曝(pu)光調整(zheng)(Automatic Exposure Adjustment)或(huo)(huo)者叫(jiao)人眼適(shi)應(ying)(Eye Adaptation)技(ji)術,它能夠(gou)(gou)檢測前一幀場(chang)景的(de)亮度并(bing)且緩(huan)慢調整(zheng)曝(pu)光參數模仿人眼使得場(chang)景在黑暗(an)區域逐漸(jian)變亮或(huo)(huo)者在明亮區域逐漸(jian)變暗(an),

HDR渲染的(de)(de)真(zhen)正優(you)點在(zai)龐大和(he)復雜的(de)(de)場景中(zhong)應用(yong)復雜光(guang)(guang)照算法會被(bei)顯示(shi)出(chu)來,但是出(chu)于(yu)教(jiao)學目的(de)(de)創(chuang)建這樣復雜的(de)(de)演(yan)(yan)示(shi)場景是很(hen)困難的(de)(de),這個教(jiao)程(cheng)用(yong)的(de)(de)場景是很(hen)小的(de)(de),而且缺(que)乏細節。但是如此簡單的(de)(de)演(yan)(yan)示(shi)也是能夠顯示(shi)出(chu)HDR渲染的(de)(de)一(yi)些(xie)優(you)點:在(zai)明亮和(he)黑暗區(qu)域無細節損失,因為它們(men)可(ke)(ke)以(yi)由色調映射(she)重(zhong)新(xin)獲取;多個光(guang)(guang)照的(de)(de)疊加(jia)不會導(dao)致亮度被(bei)約束的(de)(de)區(qu)域;光(guang)(guang)照可(ke)(ke)以(yi)被(bei)設定為他(ta)們(men)原來的(de)(de)亮度而不是被(bei)LDR值限定。而且,HDR渲染也使(shi)一(yi)些(xie)有趣的(de)(de)效果更加(jia)可(ke)(ke)行和(he)真(zhen)實; 其中(zhong)一(yi)個效果叫做泛光(guang)(guang)(Bloom)


“文(wen)章(zhang)為轉載,如有版權爭議(yi)請管理員,我(wo)們(men)將刪除文(wen)章(zhang)!"