式 3.6.3 には d! という演算子らしきものがある.d! \cos \theta d\phi のように使われている.微分演算子のようだが,知り合いに尋ねても,Web を調べてもわからなかった.
p.122 particle tracing 式 4.32

この alpha の更新方法は,謎のq_{i+i}という項がある.f はprojected solid angle で,p_{i+1}は BSDF の近似というので問題はないが,この q_{i+i} というのは何だろう.
これは図1 の状況を示している.sampling は Russian roulette で停止,sample が決まる.しかし,直感的にはもし,sample したら,そちらの方をより重要視するのは自然である.なぜなら,sample した方がしないよりもより多くの情報を入手しているはずだからである.そこで,sample した確率分の1 でweight を置く.

図1: Sampling weight $\frac{1}{q_{i+1}}$. (1) terminate sampling by probability $p$, (2) bounce probability is $(1-p)$. Because, the sample value is better than nothing, the case (2) is respected by $\frac{1}{1-p}$, that is $\frac{1}{q_{i+1}}$.
たとえば,0.5の確率で停止するのならば,1/0.5= 2.0 の weightをかける.1/3の確率で停止するのならば,1/(1-1/3) = 3/2 の weight をかける.停止しないならば,1/(1-0) = 1 なのでそのままである.常に停止するならば,bounce がないので bounce にかける重みもない.
さて直感の話をしたが,直感が常にいいとは限らないので多少証明しておくべきだろう.以下は友人の Leo に聞いたこの重みでも unbias にならない証明の概要である.以前の blog で unbias とは真の値との差の expectation (期待値)が0 であるということを説明した.図1における expectation は真の値を Q として

である.しかし,sample 値 s_1 は terminate してしまったので 0 である.これが真の値 Q になるには,sample 値 s_2] に重みalpha があるとして
すると,alpha = 1/(1-p)
を補償することで bias を避けることができる.