產品列表PRODUCTS LIST
一般來(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
glBindTexture(GL_TEXTURE_2D, colorBuffer);
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
glBindFramebuffer(GL_FRAMEBUFFER, hdrFBO);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// [...] 渲染(ran)(光照的(de))場景
glBindFramebuffer(GL_FRAMEBUFFER, 0);
// 現在(zai)使(shi)用(yong)一(yi)個不(bu)同(tong)的著(zhu)色(se)器將HDR顏(yan)色(se)緩沖(chong)渲染(ran)至2D鋪屏四(si)邊(bian)形上
hdrShader.Use();
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, hdrColorBufferTexture);
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
std::vector
lightColors.push_back(glm::vec3(200.0f, 200.0f, 200.0f));
lightColors.push_back(glm::vec3(0.1f, 0.0f, 0.0f));
lightColors.push_back(glm::vec3(0.0f, 0.0f, 0.2f));
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
#version 330 core
out vec4 color;
in vec2 TexCoords;
uniform sampler2D hdrBuffer;
void main()
{
vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb;
color = vec4(hdrColor, 1.0);
}
這(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
void main()
{
const float gamma = 2.2;
vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb;
// Reinhard色調映(ying)射(she)
vec3 mapped = hdrColor / (hdrColor + vec3(1.0));
// Gamma校正
mapped = pow(mapped, vec3(1.0 / gamma));
color = vec4(mapped, 1.0);
}
有(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
uniform float exposure;
void main()
{
const float gamma = 2.2;
vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb;
// 曝光色調映射
vec3 mapped = vec3(1.0) - exp(-hdrColor * exposure);
// Gamma校正(zheng)
mapped = pow(mapped, vec3(1.0 / gamma));
color = vec4(mapped, 1.0);
}
在這里(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
#version 330 core
layout (location = 0) in vec3 position;
layout (location = 1) in vec2 texCoords;
out vec2 TexCoords;
void main()
{
gl_Position = vec4(position, 1.0f);
TexCoords = texCoords;
}
片段著色器代碼如下所示(shi):
[cpp] view plain copy
#version 330 core
out vec4 color;
in vec2 TexCoords;
uniform sampler2D hdrBuffer;
uniform float exposure;
uniform bool hdr;
void main()
{
const float gamma = 2.2;
vec3 hdrColor = texture(hdrBuffer, TexCoords).rgb;
// reinhard
// vec3 result = hdrColor / (hdrColor + vec3(1.0));
// exposure
vec3 result = vec3(1.0) - exp(-hdrColor * exposure);
// also gamma correct while we're at it
result = pow(result, vec3(1.0 / gamma));
color = vec4(result, 1.0f);
}
在這里展示(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)!"