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

產品列表PRODUCTS LIST

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

OpenGL核心技術之HDR

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


這是由于(yu)大(da)量片(pian)段(duan)的顏(yan)色(se)值都非常接近(jin)1.0,在很(hen)大(da)一個(ge)區(qu)域內每一個(ge)亮的片(pian)段(duan)都有(you)相同的白色(se)。這損失了很(hen)多的細(xi)節,使場景看起來(lai)非常假。

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

顯(xian)示器被限制為只能顯(xian)示值為0.0到1.0間的顏(yan)(yan)色,但是在(zai)光照方(fang)程中(zhong)卻沒有(you)這(zhe)個限制。通過(guo)使片段(duan)的顏(yan)(yan)色超過(guo)1.0,我們有(you)了(le)一(yi)個更大的顏(yan)(yan)色范圍,這(zhe)也被稱作HDR(High Dynamic Range, 高動態范圍)。有(you)了(le)HDR,亮(liang)的東西可(ke)(ke)以(yi)變(bian)得非(fei)常(chang)亮(liang),暗(an)的東西可(ke)(ke)以(yi)變(bian)得非(fei)常(chang)暗(an),而且充滿細(xi)節。

HDR原(yuan)本只(zhi)是(shi)被運用在(zai)攝(she)影上,攝(she)影師對(dui)同一(yi)個場景采(cai)取(qu)不同曝(pu)光拍多張照(zhao)片,捕(bu)捉大范圍(wei)的(de)(de)(de)色彩值。這些圖(tu)(tu)片被合成為HDR圖(tu)(tu)片,從而綜合不同的(de)(de)(de)曝(pu)光等級(ji)使得大范圍(wei)的(de)(de)(de)細節(jie)可見。看下面這個例子,左邊這張圖(tu)(tu)片在(zai)被光照(zhao)亮的(de)(de)(de)區域充滿細節(jie),但是(shi)在(zai)黑暗的(de)(de)(de)區域就(jiu)什(shen)么都看不見了(le);但是(shi)右邊這張圖(tu)(tu)的(de)(de)(de)高曝(pu)光卻可以讓之(zhi)前(qian)看不出來(lai)的(de)(de)(de)黑暗區域顯(xian)現出來(lai)。


這(zhe)與我們眼睛工作(zuo)的原理非常相似,也是HDR渲染的基礎。當光線很弱的啥時候,人眼會自(zi)動調整(zheng)從而使(shi)過(guo)暗(an)和過(guo)亮的部分變得更清晰,就像人眼有(you)一個能(neng)自(zi)動根據場景(jing)亮度調整(zheng)的自(zi)動曝光滑塊。

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

在實(shi)(shi)時(shi)渲染中(zhong),HDR不僅(jin)允(yun)許(xu)我(wo)們(men)(men)超過LDR的(de)(de)范圍[0.0, 1.0]與(yu)保留更(geng)多(duo)的(de)(de)細(xi)節,同時(shi)還讓(rang)我(wo)們(men)(men)能夠根(gen)據光源的(de)(de)真(zhen)實(shi)(shi)強度(du)它(ta)的(de)(de)強度(du)。比(bi)如太陽有比(bi)閃(shan)光燈之類的(de)(de)東西更(geng)高(gao)的(de)(de)強度(du),那么(me)我(wo)們(men)(men)為什么(me)不這(zhe)樣子設置(zhi)(zhi)呢?(比(bi)如說(shuo)設置(zhi)(zhi)一個10.0的(de)(de)漫(man)亮度(du)) 這(zhe)允(yun)許(xu)我(wo)們(men)(men)用(yong)更(geng)現實(shi)(shi)的(de)(de)光照(zhao)參數(shu)恰當地(di)配(pei)置(zhi)(zhi)一個場景(jing)的(de)(de)光照(zhao),而這(zhe)在LDR渲染中(zhong)是不能實(shi)(shi)現的(de)(de),因為他們(men)(men)會被上(shang)限約束在1.0。

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

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

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

想要創建一個浮點幀緩沖,我們只需要改變顏(yan)色緩沖的內部格(ge)式參數就行了(注(zhu)意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);    


默認的幀緩(huan)沖默認一個顏色分量(liang)(liang)只(zhi)占用8位(bits)。當(dang)使用一個使用32位每顏色分量(liang)(liang)的浮(fu)點幀緩(huan)沖時(使用GL_RGB32F 或者GL_RGBA32F),我們需要四倍的內(nei)存(cun)(cun)來存(cun)(cun)儲這些顏色。所以除(chu)非(fei)你(ni)需要一個非(fei)常高的度(du),32位不是(shi)必須的,使用GLRGB16F就足夠(gou)了。

有(you)了一個(ge)帶有(you)浮(fu)點(dian)顏(yan)色(se)緩(huan)沖(chong)的(de)(de)幀(zhen)緩(huan)沖(chong),我(wo)們可以(yi)放心渲(xuan)染(ran)場景到這(zhe)(zhe)個(ge)幀(zhen)緩(huan)沖(chong)中(zhong)。在這(zhe)(zhe)個(ge)教(jiao)程的(de)(de)例子當中(zhong),我(wo)們先(xian)渲(xuan)染(ran)一個(ge)光(guang)照的(de)(de)場景到浮(fu)點(dian)幀(zhen)緩(huan)沖(chong)中(zhong),之后再在一個(ge)鋪屏四邊(bian)形(xing)(Screen-filling Quad)上應用這(zhe)(zhe)個(ge)幀(zhen)緩(huan)沖(chong)的(de)(de)顏(yan)色(se)緩(huan)沖(chong),代(dai)碼(ma)會是這(zhe)(zhe)樣子:

[cpp] view plain copy

  1. glBindFramebuffer(GL_FRAMEBUFFER, hdrFBO);  

  2.    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    

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

  4. glBindFramebuffer(GL_FRAMEBUFFER, 0);  

  5.  

  6. // 現(xian)在(zai)使用一(yi)個不(bu)同的著色(se)器(qi)將HDR顏色(se)緩沖渲染至2D鋪屏四邊(bian)形上  

  7. hdrShader.Use();  

  8. glActiveTexture(GL_TEXTURE0);  

  9. glBindTexture(GL_TEXTURE_2D, hdrColorBufferTexture);  

  10. RenderQuad();  


這里場景(jing)的(de)(de)(de)顏色(se)(se)值(zhi)存(cun)在一(yi)個(ge)可以包含任意顏色(se)(se)值(zhi)的(de)(de)(de)浮(fu)點(dian)顏色(se)(se)緩沖中,值(zhi)可能是超(chao)過1.0的(de)(de)(de)。這個(ge)簡(jian)單(dan)的(de)(de)(de)演示中,場景(jing)被(bei)創建為一(yi)個(ge)被(bei)拉伸的(de)(de)(de)立方體通道和四個(ge)點(dian)光源,其中一(yi)個(ge)非(fei)常亮的(de)(de)(de)在隧道的(de)(de)(de)盡頭:


[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));    

渲(xuan)染(ran)至(zhi)浮點幀緩沖(chong)和渲(xuan)染(ran)至(zhi)一個普通的(de)(de)(de)幀緩沖(chong)是一樣的(de)(de)(de)。新的(de)(de)(de)東西就是這個的(de)(de)(de)hdrShader的(de)片段(duan)著色(se)(se)器(qi),用來(lai)渲染zui終擁有浮(fu)點(dian)顏色(se)(se)緩沖紋理的(de)2D四邊形。我們(men)來(lai)定義一個(ge)簡單的(de)直通片段(duan)著色(se)(se)器(qi)(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)里我(wo)(wo)們直接(jie)采樣(yang)了(le)(le)浮(fu)(fu)點(dian)顏色緩(huan)(huan)沖并將其作為片段(duan)著色器的(de)輸出(chu)。然而,這(zhe)個2D四邊形(xing)的(de)輸出(chu)是(shi)被(bei)直接(jie)渲染到(dao)(dao)默認的(de)幀緩(huan)(huan)沖中(zhong),導(dao)致所有(you)片段(duan)著色器的(de)輸出(chu)值(zhi)被(bei)約束在0.0到(dao)(dao)1.0間,盡管我(wo)(wo)們已經有(you)了(le)(le)一些存在浮(fu)(fu)點(dian)顏色紋理的(de)值(zhi)超過了(le)(le)1.0。


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


色(se)(se)調映射(she)(Tone Mapping)是一個損失很小的轉換浮點顏色(se)(se)值至我們所(suo)需(xu)的LDR[0.0, 1.0]范圍(wei)內的過程,通常會伴有特定的風格的色(se)(se)平衡(Stylistic Color Balance)。

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

[cpp] view plain copy

  1. void main()  

  2. {          ;    

  3.    const float gamma = 2.2;  

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

  5.  

  6.    // Reinhard色(se)調映射  

  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)(you)了(le)Reinhard色調映射的應用,我們不再會(hui)在場景明亮的地方損失(shi)細節。當然,這個(ge)算法是傾向明亮的區(qu)(qu)域(yu)的,暗的區(qu)(qu)域(yu)會(hui)不那(nei)么精細也(ye)不那(nei)么有(you)(you)區(qu)(qu)分度。


現(xian)在你可以看到在隧(sui)道的盡頭木頭紋(wen)理變得可見(jian)了。用(yong)了這個非(fei)常(chang)簡單地(di)色調映射算法,我們可以合適的看到存在浮點幀緩沖中整個范圍的HDR值,給我們對于(yu)無損(sun)場景(jing)光照的控制。

另(ling)一個(ge)有趣(qu)的色調(diao)映射應用(yong)是曝(pu)(pu)光(guang)(guang)(Exposure)參(can)數的使(shi)用(yong)。你可能還記得(de)之前我(wo)們(men)在(zai)(zai)介紹里(li)講到的,HDR圖片(pian)包(bao)含在(zai)(zai)不(bu)同曝(pu)(pu)光(guang)(guang)等級的細節。如果我(wo)們(men)有一個(ge)場景要展現日夜(ye)交替,我(wo)們(men)當(dang)然(ran)會在(zai)(zai)白天使(shi)用(yong)低曝(pu)(pu)光(guang)(guang),在(zai)(zai)夜(ye)間使(shi)用(yong)高(gao)曝(pu)(pu)光(guang)(guang),就像人眼調(diao)節方(fang)式一樣。有了這個(ge)曝(pu)(pu)光(guang)(guang)參(can)數,我(wo)們(men)可以(yi)去設置可以(yi)同時(shi)在(zai)(zai)白天和夜(ye)晚不(bu)同光(guang)(guang)照(zhao)條件工作的光(guang)(guang)照(zhao)參(can)數,我(wo)們(men)只需(xu)要調(diao)整曝(pu)(pu)光(guang)(guang)參(can)數就行了。

一個簡單的曝(pu)光色(se)調映(ying)射算法會像(xiang)這(zhe)樣:

[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.    // 曝光(guang)色調映射  

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

  10.    // Gamma校(xiao)正  

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

  12.  

  13.    color = vec4(mapped, 1.0);  

  14. }    


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

這(zhe)個圖片清晰地(di)展示了(le)(le)HDR渲染的優點。通過改變曝光(guang)等(deng)級,我們可以(yi)看(kan)見(jian)場景(jing)的很(hen)多細(xi)(xi)節,而這(zhe)些細(xi)(xi)節可能在LDR渲染中都被丟失(shi)了(le)(le)。比如(ru)說隧道(dao)盡頭,在正常曝光(guang)下木頭結構隱約可見(jian),但用(yong)低曝光(guang)木頭的花紋就可以(yi)清晰看(kan)見(jian)了(le)(le)。對于近處的木頭花紋來說,在高曝光(guang)下會能更好的看(kan)見(jian)。

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


[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. }  


片(pian)段著色器(qi)代碼如下所(suo)示:



[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. }  



在這(zhe)里展示的兩個色(se)調(diao)映射算(suan)法僅僅是大(da)量(更先進(jin))的色(se)調(diao)映射算(suan)法中的一(yi)小部分,這(zhe)些算(suan)法各有(you)(you)長(chang)短.一(yi)些色(se)調(diao)映射算(suan)法傾向于(yu)特(te)定的某種(zhong)顏色(se)/強度,也有(you)(you)一(yi)些算(suan)法同時顯示低于(yu)高曝(pu)光顏色(se)從而能(neng)夠(gou)顯示更加多(duo)彩和(he)精細的圖像。也有(you)(you)一(yi)些技巧被稱作自動曝(pu)光調(diao)整(zheng)(Automatic Exposure Adjustment)或(huo)者(zhe)叫人眼(yan)適應(ying)(Eye Adaptation)技術,它能(neng)夠(gou)檢測前(qian)一(yi)幀場景的亮度并且緩(huan)慢調(diao)整(zheng)曝(pu)光參(can)數模(mo)仿人眼(yan)使得場景在黑暗區域逐漸變亮或(huo)者(zhe)在明亮區域逐漸變暗,

HDR渲(xuan)染的(de)(de)(de)真正優(you)(you)點(dian)在龐大和復雜的(de)(de)(de)場(chang)景中應(ying)用(yong)(yong)復雜光照(zhao)算法會(hui)被顯(xian)示(shi)出(chu)來(lai),但(dan)是出(chu)于教(jiao)學(xue)目(mu)的(de)(de)(de)創建這(zhe)樣復雜的(de)(de)(de)演(yan)示(shi)場(chang)景是很困難的(de)(de)(de),這(zhe)個教(jiao)程用(yong)(yong)的(de)(de)(de)場(chang)景是很小的(de)(de)(de),而且(qie)缺乏細節(jie)(jie)。但(dan)是如此簡單的(de)(de)(de)演(yan)示(shi)也是能夠顯(xian)示(shi)出(chu)HDR渲(xuan)染的(de)(de)(de)一(yi)些優(you)(you)點(dian):在明(ming)亮(liang)和黑暗區(qu)域(yu)無細節(jie)(jie)損失(shi),因為(wei)它們可(ke)以由色調映(ying)射重新獲取;多(duo)個光照(zhao)的(de)(de)(de)疊加不會(hui)導致亮(liang)度(du)被約(yue)束的(de)(de)(de)區(qu)域(yu);光照(zhao)可(ke)以被設定(ding)為(wei)他們原來(lai)的(de)(de)(de)亮(liang)度(du)而不是被LDR值限定(ding)。而且(qie),HDR渲(xuan)染也使一(yi)些有趣的(de)(de)(de)效果更加可(ke)行和真實; 其中一(yi)個效果叫做(zuo)泛光(Bloom)


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