2023年4月20日 星期四

HDRP裡光源的單位

➡️ 目錄

功率Power

W(瓦特)、Φλ(radianet flux)都是功率


Hz頻率

量綱為 1/s

SPD(λ)

SPD → spectral power distribution

More generally, the term SPD can refer to the concentration, as a function of wavelength, of any radiometric or photometric quantity (e.g. radiant energy, radiant flux, radiant intensity, radiance, irradiance, radiant exitance, radiosity, luminance, luminous flux, luminous intensity, illuminance, luminous emittance).

SPD量綱可以是 E / λ、L / λ、I / λ、Φ / λ
λ是波長

備註

知道機率機率密度有什麼不同後
我終於get到SPD為什麼要這麼定義



SPD(λ)轉RGB

SPD
是怎麼轉成 RGB的?

出處

出處

SI的cd

原來就是 I 阿 😋🤠 有眼不識泰山

Wiki

Photometry
W和lm不一樣

Photometry

Photometry → 光度學
不同於Radiometry
光度學把不同波長的Φλ用光度函數加權
合成對人眼的有效Φv (Luminous flux)

Φ= K555.016 ∫ V(λΦe(λ) dλ
K555.016 683 lm / W

光強度的單位:燭光(cd)

不只對Φ可以

也能轉換IeIv
以此類推

光強度的單位:燭光(cd)

來看看Unity裡的單位

HDRP裡光源的單位是Photometry  ❓
EV 100 查了一下是光圈,和針孔相機的孔徑大小有關

Lux是用 E = I / (R2),R = 1算出來的
Hello HDRP


看了這系列的文章發現

光源的單位直接使用Photometry

對SDR銀幕 
渲染完得到的nit (N, N, Nz)
經過如此如此這般這般…
最後RGB會落在0~1之間
銀幕再根據RGB決定要顯示多亮(nit)

對HDR銀幕 
渲染完得到的nit (N, N, Nz)
經過如此如此這般這般…
最後RGB也會落在0~1之間
銀幕根據RGB決定要顯示多亮(nit)

from unity HDRP Color.hlsl

完成Tonemapping後
會把(N, N, Nz)重新映射到(R , G , B)
R、G、B會位在0~1之間

RGB和銀幕的Lmax

當pixel的RGB=(1,1,1)
會得到銀幕的最大nit值Lmax

pixel的RGB=(0.5,1,1)
得到的銀幕nit值 < Lmax


光源強度Lv和color filter

有面光源
color filter = (r,g,b) 和 Luminance = Lv

指的是
當color filter為(1 , 1 , 1)時面光源Luminance = Lv
color filter調小後,面光源Luminance < Lv

Unity HDRP 的面光源 

L = Φ / 4π / A 
單位選Lumen時
會固定Φ,所以把面光源面積調大A,L就會減弱 

單位選nit (L)時
會固定L,把面光源面積A調大,亮度不變,代表Φ增加了

2023年4月14日 星期五

點光源L的Error 👩‍🔬

➡️ 目錄

dE⊥

「dA是很小的面積」
dE⊥ = L * dω = L * dA / R2 = dA I / R2    -式①
「1是1平方公尺的面積」
dE⊥  = L * 1m2 / R2 = I / R2    -式②

As

shading point As是很小的區域,面積只有dA
計算點光源的光照時
為什麼要使用dE⊥ = L * 1m2 / R2
不是全部的能量只有部份到達dAs嗎?
(見下面圖①)


 👩‍🔬 下篇:


2023年4月11日 星期二

面光源的I / (R*R)

➡️ 目錄

🚧 本篇存在符號的歧異


Integrals over Area
E = ∫ dE
出處


使用蒙地卡羅積分

Lo = ( Σ BRDF * L* 幾何項 * (1 / pdf(i)) ) (1 / n) 

化簡幾何項

幾何項 = cos(θi)cos(θo) / Ri2

假設面光源正對shading point ΔAs
且整個面光源對ΔAs來說非常小時
R也可以當成一樣大
再利用平行的力量cos(θi) = 1、cos(θo) =1

最後幾何項簡化成
幾何項 = R2

pdf

pdf(i) 是機率密度函數
最簡單的情況下 pdf(i) = 1 / A
1 / pdf(i) = A

使用diffuse
BRDF = 1 / π

Lo最後可以簡化為

L= ( Σ BRDF * L* 幾何項 ) (A / n)
L= ( Σ BRDF * ( LR) ) (A / n)
L= BRDF * ( LR)  A
Lo = BRDF LA / R) = BRDF ( I / R    

如果是計算Ei

Ei = ( Σ  ( LR) ) (A / n)
Ei = ( Li R) A
Ei =  A  / R2
Ei = I / R2 -式①

備註

當n的數量取得夠大
dA = (A / n)
L= ( Σ BRDF * ( LR) ) (A / n)
L= ( Σ BRDF * ( LR) ) dA
LΣ BRDF * ( LRdA
Li dA R= dE

使用微小量

每1塊是
dEi = cos(θicos(θoLi  dA / R2
使用前面的條件cos(θi) = 1、cos(θo) =1後有
dEi = Li  dA / R2

使用 Σ

一共有 (A / dA) 塊
count = (A / dA) 
count 可以不是整數

Ei = Σ dEi = dE⊥i * count
Ei = ( LdA / R) (A / dA) 
Ei = Li  A / R2 =  I / R

使用 ∫

Ei = ∫ dEi = ∫ Li  dA / R2  
Ei = (Li / R2) ∫ dA
Ei = (Li / R2) A = Li A / R2 = I / R2

2023年4月3日 星期一

半球積分的Li dωi ⭐

➡️ 目錄


而我低頭拆信 想知道關於L的事情 🎶

2年前
我被這個問題困惑 📧
「半球積分的dω不是要從光源的觀點思考?才能知道物體遠近嗎?」

吉人之辭寡 躁人之辭多
教授只是回覆我 📧
「渲染方程的dω是從shading point的觀點思考」

等等教授
你可以再說清楚一點嗎?
可是這樣怎麼知道物體的遠近?

經過2年的放置play後
我終於get到了

放置 play

BGM

渲染方程中

半球積分的 Li dωi 到底是什麼?
i 到底是什麼?

思路1:模仿面光源

整片面光源對shading point P 的貢獻是 E

Integrals over Area
E = ∫ dE
出處

i = cos(θo) dA / r 2 
dE⊥ = L dωi
dE = cos(θi) L dωi


從shading point dA發射射線
  • ①擊中物體表面dA時,可以得到物體表面dA的Lo
  • ②擊中光源表面dA時,可以得到光源表面Lo

但因為 dω = dA / R2
dω R2 = dA
這個dA會覆蓋多個dA
所以記作 A = dA

可以把①也看成面光源
我們就可以模仿上面的Integrals over Area

使用平行的力量



上圖的Li dωi 其實是下圖上半部那種情況

用到的符號

最左邊
Li dω= dE⊥

Warning!

上述假設所有dA都會在一個平面上

但如果不是

而是有起伏的表面B怎麼辦?

Co = cos(θo)不再是定值
但把構成B的dA沿著dω方向投影後
仍會得到平面Ap
∫ dA cos(θo) = Ap
dω = Ap / R2

思路2:直接使用 dω

不糾結於光源dA
只看shading point dA的dω取多大
由Received L的定義可知
dE⊥ = L dω
dω取愈大,dE⊥自然也愈大

考慮不同射入方向時自然有
dEi = cos(θi) L dωi

用思路2反推A的大小

已知 dE = L dω
又因為 dω = A Co / R2
A = ∫ dA
當dω變大,代表有更多的dA對shading point貢獻dE

補充

在半球積分時
光隨距離衰減,如何涌現

有1種path tracing 是不做直接光照
只靠Le來照亮場景
(Le來自面光源P)

假設對shading point只計算1層
Lo  = Le + ∫ F Li cos(θi) dωi 時
(不往下遞迴)

單看 Lo  = Le + ∫ F Li cos(θi) dωi 這部分
當面光源P靠近shading point
半球積分採樣到的Le
反之,採樣到的Le
➡️ Geogebra