顯示具有 radiometry 標籤的文章。 顯示所有文章
顯示具有 radiometry 標籤的文章。 顯示所有文章

2024年2月22日 星期四

d平方 ⭐

➡️ 目錄

trimmed和shaved 什麼不一樣 🤔
1個是sparse 1個是none 🤠🙂 none


dΦ 可以看成 d * Φ
≠ 0

這樣一來
d2Φ 就可以看成 d * d * Φ

dΦ代表對Φ進行1次微分
d2Φ代表對Φ進行2次微分

可以用在那?

當微分可以交換時


把d當成變量
乘在一起是 d2Φ
拆開來就是 d(dΦ)

用到的地方

測量Received L時


右邊代表:
dω對Φ進行1次微分
I = dΦ / dω
得到dΦ(進入藍色管子的量)

理論上dω一樣,進入藍色管子的dΦ要一樣
但整個測量的過程依賴dA,只有dω什麼都測不到
所以 I = dΦ / dω 是個假議題
最後透過dA測量到的是d2Φ = d(dΦ) = cos(θidΦ

左邊代表:
用dA⊥再dΦ進行1次微分
L = d I dA
L = d(dΦ / dω) / dA
L = (d2Φ / dω) / dA
L = (d2Φ / dA) / dω
d2Φ - 綠色感應器測量到的量
  • d2Φ = d(dΦ) = cos(θidΦ
  • 正面朝向的dA,綠色感應器測量到的d2Φ
  • 傾斜朝向的dA(即dA),綠色感應器測量到的d2Φ
  • dA⊥ = dA cos(θi)
  • d2Φ / dA⊥ = dΦ / dA = 定值 (消去cos項)

d2Φ視為1個測量到的量,那麼
L = (d2Φ / dA) / dω
就可以看成
d2Φ進行2次除法


Roll Back

把d2Φ拿掉 
會看不懂上面在幹嘛
所以又加回來了

2023年9月10日 星期日

符號的歧異

➡️ 目錄

覺得要特別標註⊥有點麻煩
之前都是直接信手拈來

Emitted L

E = dΦ / dA
Lo = dEo / ( cos(θi) dωo
Lo = dEo / dω⊥o 

📑 備註
這裡把dEo寫成dE也不是不行
但∫ dEo = E,不是更怪?
加上dω⊥o 就是投影立體角,用dEo的話更一致
 

Received L

dE⊥ = d2Φ / dA⊥ = d2Φ / (dA cos(θi))
Li = dEi / dωi 

cos(θi) dE⊥i  = dEi 

Integrals over Area
出處


最左邊
Li dω= dE

最右邊
dω是固定的
進入dω的dΦ是固定的

中間
正面朝向的dA測量到的d2Φ大
傾斜朝向的dA測量到的d2Φ小

📑 備註
名為dE
會讓人覺得光傾斜射入時
dA⊥一定會比dA小

但中間上方那張圖測量到的也是dE
以這種視角,來看cos(θi) dE⊥i  = dEi
不是更加直觀?

Shading point

其實是個面

點光源

Shading point為dAs
E = I / R不一定會全部集中dAs
E擊中dAs = cos(θi) I / R2

📑 備註
這裡也不是不能定義成
E⊥ = I / R2
但就覺得麻煩

BRDF

f = dLo / dEi

dE= cos(θi) dE⊥ = cos(θi) L

f = Lo / Ei

E= E擊中dAs
E= cos(θi) I / R2

2023年8月14日 星期一

Emitted L vs Received L ⭐

➡️ 目錄


用到的符號

Emitted L

射出來理解 L的定義

舉例

已知Φ、光源面積A
Lo = Φ / (A π)

Received L

射入來理解L的定義

Received L的定義


Wiki

寫成偏微分,但可以看成對d2Φ進行2次除法
dA⊥ = dA cos(θi)
dE = d2Φ / dA
L = dE / dΩ

PBR 3 裡那張圖指的是Received L

但單看這張圖
我無法第1時間完全明白微分的幾何意義

physically based rendering 3


dE⊥不隨dA的朝向而變


舉例

令dA = a、 dω = w
假設在dA上量到d2Φ = φ

使用上圖左上的測法
Li = φ / ( a w )

使用上圖左下的測法
Li = φ / ( a cos(θi) w )

2個測法得到的Li 結果1樣

dE不隨距離而變的情況

往物體遠離時
有更多的dA對測量產生貢獻

計算機圖形學原理及實踐, 3/e (進階篇)
Computer Graphics: Principles and Practice, 3/e

Li = Lo

我們從已知Emitted L(或Reflected L)是什麼出發
來看看Received L是什麼
  1. 已知Emitted L(或Reflected L)為Lo
  2. shading point dAs 的Received L為Li
  3. 多個Lo射向dAs的結果為 Lo dω = dE⊥ ①  
  4. 由Received L的定義可知 Li  = dE⊥ / dω ②
  5. ①代入②得到 Li = Lo

任務達成 🤠🙂 推導了

Reflected L

讀完這篇後發現
L的定義也可以用在BRDF的dLo

2023年8月12日 星期六

推敲現實世界怎麼測量Lo

➡️ 目錄

下面的量法
量的是面光源的Emitted L

設定測量實驗

怎麼量測Li

首先由Emitted L 我們知道
Le cos(θe) = dEA⤵ / dωA
Le cos(θe) = dEA⤵ / dωA

Le沿直線前進(R增加),dA和直線垂直
dEA⤵和dωA⤵都隨著Le前進而變小
但最後兩者的比值不變
Le cos(θe) = dEA⤵ / dωA

所以我們如果可以在現實世界測量到dEA⤵和dωA
兩者相除的結果得到Li

但因為有cos(θe)項!

所以面光源法向量還要指向感應器
才不會得到cos(θe)的差異

量測其他量

  • 用整個面光源照射感應器到就能量到dΦ
d(dΦ) = d2Φ
  • 給面光源穿衣服,只漏出dA大小的面積
  • 用dA大小的面光源照射感應器就能量到d2Φ

dA
  • 就是感應器的面積
  • 在這個面積內可以量到d2Φ
  • dω是透過光源dA算出來的
  • dω = dA / R2

當感應器翻轉後dA cos(θi)

原本能測到通過dA的d2Φ
但感應器翻轉後
只能測到通過dAcos(θi) = dA的d2Φ


dA = dA cos(θi)
  • d2Φ通過的面積大小
  • 在這個面積可以量到d2Φ

  • dω是透過光源dA算出來的
  • dω = dA / R2

實驗上測量結果為

d2Φ、dA

透過光源dA算出

  • dω = dA / R2

拿上面量到的值做下面的運算

d2Φ / ( dA dω ) 

結果:先微分dA、後微分dω

d2Φ / ( dA dω ) 

= d(dΦ) / (  dA⊥ dω ) 
= d(dΦ / dA) / dω
dE / dω = Li
dEA⤵ / dωA = Li

結果:或是先微分dω、後微分dA

d2Φ / ( dω dA  ) 

= d(dΦ) / ( dω dA ) 
= d(dΦ / dω) / dA
dI / dA = Li

d2Φ = dΦ cos(θi)
d2Φ / dω = dΦ cos(θi) / dω
dI = cos(θi)

2023年8月11日 星期五

CG世界的Li

 ➡️ 目錄


Emitted L

射出來理解 Le 的定義

Received L

在CG世界,shading point dAs 的Li可能來自
  • 光源 Emitted Le 直接射入 dAs 
    • 面光源光照
    • 點光源光照
  • 光打中物體dA,經過BRDF反射的Lo,射入 dAs
    1. 這就像dA變成了1個小小光源Lo (對dA來說是out )
    2. 在dAs半球方向有無數這種小小光源 Li (對dAs來說是in )
    3. 渲染方程的半球積分,就是在加總這些小小光源Li 的光照

一般在渲染時

都是從光源出發
用的是Emitted Le 

BRDF

Emitted Le 射中物體dA時
再用BRDF(記作F)產生出射Lo
i → input
o → output

F = dLo / dEi
dL= F dEi 

下面會介紹怎麼由Emitted Le
轉變成dEi 

面光源光照


Integrals over Area
出處

dEi = cos(θi) (  cos(θe) Le )
dω = dA / R2

藍色部分就是從Emitted L的定義來的

L= ∫ F dEi = ∫ dLo

點光源光照

F = dLo / dEi
也可以寫成
F = Lo / E
Lo = F Ei

對點光源來說
 E = cos(θi) Io / R2 
Lo = F  E 

半球積分光照

半球積分時 dE= Li dω
 L= ∫ F dEi = ∫ dLo

2023年8月10日 星期四

交換微分順序的面光源Le ⭐

➡️ 目錄

Emitted L

射出來理解 L的定義

Wiki

Wiki上的寫法,其實是Received L

如果是Emitted L,是我會寫成
L = d2Φ / dA dΩ cos(θ) )
➝ 先分身再輻射

或是寫成
L = d2Φ / ( dΩ cos(θ) dA )
➝ 先輻射再分身

dΩ cos(θ) dΩ⊥

先分身再輻射

E = dΦ / dA
L = dE / ( dω cos(θ) ) 

利用半球面積投影到法向量平面 = 圓面積
可知 ∫ cos(θ) dω= π

先輻射再分身

I = dΦ / ( dω cos(θ) ) 
L = dI / dA

示意圖
中間最粗的是I,其他小的是L


先輻射產生太陽 I
I = dΦ / (  cos(θ) ) 

再分身成小太陽 L
L = dI / dA

因為幾何上是平面 
所以不是圓形向外輻射 ○
而是半球向外輻射 ◒

OREA R EA 哈 請給我一份I的能量 🎶

放一起比較


用到的符號

上圖說的
①固定dω 
②固定dA
細節可以參考

我跨越不存在的界限 🎶😋🤠

比較

「先分身再輻射」比較符合真實世界的因果關系
雖然「先輻射再分身」在數學上也說的通

點光源的謎團

➡️ 目錄

I / R2 = E怎麼來的

E = dΦ / dA 式①
I = dΦ / dω,即I dω = dΦ 式②
把式②代入式①
可得
I dω / dA = dΦ / dA = E

再使用 dω = dA / R代入上式後
可得
I dω / dA = I / R2 = E
即 I / R2 = E

差別

dE⊥ = L dω = L dA / R2
dE⊥與dA取多大有關

dE⊥與dA取多大有關

E = I / R2
E與dA取多大無關 備註1

E與dA取多大無關
不管是取dA還是取1m2大小,E同樣是  I / R2

備註1:E與dA無關

E = dΦ / dA
dA取大時,每塊dA就分到更多dΦ
dA取小時,每塊dA就分到更少dΦ
但dΦ / dA 為定值

2023年8月8日 星期二

太陽光

➡️ 目錄

假設

在地球上某處dA 
太陽整個半球都能對它進行光照

dA可以在地球半球上任意移動

等等!不需要考慮遮擋嗎!

半球上最邊緣的端點和dA的連線
已經位在法平面後面
應該無法射中dA吧!

我們是不是需要找出
臨界邊緣在那?

臨界邊緣

Geogebra

當距離夠遠
臨界邊緣就逼近半球邊緣 🧐🤠 太神奇了 珍妮佛

找夾角


dA位在半球中心時

圖1


地球直徑 =  RE =                             12742000 公尺
太陽直徑 = RS =                          1392700000 公尺
太陽中心 ↔ 地球中心 = D =  150000000000 公尺

tan(θ) = 0.5 RS / ( D - 0.5 RE )
θ = arctan( 0.5 RS / ( D - 0.5 RE ) ) = 0.00464249716 rad

0.00464249716 rad = 0.26613041044 度
                                     

看這0.26613041044 有多小

所以我們可以當作所有方向平行

圖1 平行:多對1,中央case

多指的是光源;1指的是地球上的dA

當dA在地球上移動


圖2


tan(φ) = 0.5 RE / ( D - 0.5 RS )
φ = arctan( 0.5 RE / ( D - 0.5 RS ) )
= 4.26714283 × 10-5 rad

4.26714283 × 10-5 rad = 0.00244613283 度

看這0.00244613283 有多小

所以我們可以當作所有方向平行

圖2 平行:1對多,中央case


因為θ >2φ

相差θ以內都算平行了
那相差2φ以內當然也都平行

粉紅點可在半球上任意移動

圖3 平行:1對多 ⭕


再加上必須滿足

「圖1 平行:多對1,中央case」


圖1 平行:多對1,中央case


所以也不可能是斜的平行


粉紅點可在半球上任意移動

圖3 平行:1對多 ❌


「圖3 平行:1對多 ⭕」代表

Sun上任一個dA和Earth上任一個dA的連線方向(1對1)
都會和Sun和Earth的中心連線平行

因為每個1對1都平行
所以下面的「圖1 平行:多對1」會成立

dA可以在地球半球上任意移動

圖1 平行:多對1


太陽半球對dA的光照

模仿面光源的計算

我們可以模仿 Integrals over Area
出處

因為太陽距離dA很遠
每個粉紅點到dA的連線距離可以當成一樣長,都是R

每個粉紅點的大小也是dA大

r = 太陽半徑
dω = dA / r2
∫ cos(θs) dω = π

仔細一看

這 ( π r2 ) / R2 不就是立體角嗎?
ω = ( π r2 ) / R2 

最後的結果為 L ω cos(θe

發現前述的作法

使用∫ cos(θs) dω = π 是在繞遠路

找出和平行光方向垂直的P平面

∫ cos(θs) dA = 把半球面積投影到P平面上
直接就得出 ∫ cos(θs) dA =  π r2

就算太陽表面不平滑

而是表面有高低起伏
結果不變
 ∫ cos(θs) dA =  π r2
 

2023年8月7日 星期一

L in Volume Rendering

➡️ 目錄

為了理解Atmospheric Scattering
我必須這樣看待L

①L在行進中不變
➡️ L在行進中不隨距離衰減

L = dE⊥ / dω 
dE⊥和dω同時變小,所以L不變

②直到擊中shading point 後,才計算dE⊥
➡️ 從L轉變為dE⊥ = L dω

Single Scattering integration

如果不存在空氣中的粒子
Lsun行進中不變

但因為空氣中的粒子散射
最後只剩( T(sum➝P) * T(P➝a) ) 倍
➡️ Lsun S ( T(sum➝P) * T(P➝a) )

出處

❓ ( T(sum➝P) + T(P➝a) ) 的部分 
我覺得應該是
( T(sum➝P) * T(P➝a) )

Multi Scattering裡的球面積分

不能再用「思路1」
因為經過多重散射後
已不是從Lo匯聚成Li這麼簡單
                                                                                  
但仍然可以使用「思路2」
從Received L的定義可知
dE⊥ = L(x,ω') dω'

紫色框框為球面積分

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調大,亮度不變,代表Φ增加了