Upgrade to Pro — share decks privately, control downloads, hide ads and more …

All(?) About Point Sets

hole
November 17, 2025

All(?) About Point Sets

レイトレ合宿11のセミナー発表スライドです。

hole

November 17, 2025

Transcript

92 slides
  1. All(?) About Point Sets • モンテカルロレイトレーシングにおけるPoint sets(点列) の話をします。 • モンテカルロ積分に用いられるサンプリング点の元となる点の

    集合です。つまり超重要! • Procedural modelingなどで使われるタイプの点のサンプリ ングは今回は扱いません。
  2. グリッドサンプリング • 空間に均等に点を配置することで取りこぼしを防ぐ。 • 性能は良いが、以下の点で問題がある。 • 2Dの場合、𝑁 = 𝑀!。3Dの場合、 𝑁

    = 𝑀" 。のように、サンプ リング数に拘束があり自由度が低い。 • しかも高次元になると空間を充填するためのサンプル数が爆発的に 増えてしまう。 • 点の位置が規則正しいため、レンダリング結果にも規則的な アーティファクト(Structural Artifact)が生まれる。 • 知覚的に望ましくない。
  3. 層化(Stratified)サンプリング • Structural Artifactを低減するために各 点をセル内部でランダムに位置をずらす。 • 規則正しさが低減する。 • 性能は良いが、以下の点で問題がある。 •

    グリッドサンプリングの場合と同様に、サンプリ ング数の自由度が低い。特に高次元の場合、扱い づらい。 https://pbr-book.org/3ed-2018/Sampling_and_Reconstruction/Stratified_Sampling
  4. Low-Discrepancy Sequence • 性能のよいサンプリング手法: • なるべく空間的に均一に点が分布する • 点が規則的に並ばない • 任意のサンプリング数N、任意の次元Dに対応している

    • これを実現するのがLow-discrepancy sequence (LDS) • 超一様分布列 • 低食い違い数列 • 準乱数 • そして、LDSを用いたモンテカルロ積分を、準モンテカルロ (Quasi Monte Carlo)積分と呼ぶ。
  5. Low-Discrepancy Sequence • さまざまな手法が提案されている。 • Halton sequence • Hammersley sequence

    • Sobol’ sequence • Etc. • LDSではないが、類似の性質をもつ優れた手法も提案されている。 • Correlated Multi-Jittered Sampling (CMJ) • Etc.
  6. Van der Corput Sequence • J.G. van der Corput (1935)

    • 1次元における基本的なLow-discrepancy sequence。 def radical_inverse(n, base): val, f = 0.0, 1.0 / base while n > 0: val += (n % base) * f n //= base f /= base return val def van_der_corput(n, base=2): return [radical_inverse(i, base) for i in range(n)]
  7. Halton Sequence • J.H. Halton (1960) • Van der Corput

    sequenceを高次元に拡張。 • (t,m,s)-netではない。 • プログレッシブ生成に対応。 • サンプリング数Nを事前に与える必要が無い。
  8. Hammersley Sequence • J. Hammersley (1960) • 特定の状況で(t,m,s)-net • プログレッシブ生成に対応していない。

    • サンプリング数Nを事前に与える必要がある。 • その分、一般的な性能が良い。
  9. Sobol’ Sequence • I. Sobol’ (1967) • ’が付くのが正しい。 • (t,m,s)-netである。

    • プログレッシブ生成に対応。 • 基本的な性能は良いが、規則的なパターン が生じることがあり、レンダリング結果に 影響を与えることがある。 • 低減するための手法が様々にある(後述)
  10. Sobol’ Sequence • Sobol’ sequenceは、各次元ごとに定義された原始多項式と direction numberを使って、2進数のビット操作(XOR)で点 を生成する。 • Direction

    numberを行に並べることでSobol’ Matrixを構成する。 • direction numberによって、点列の均一性(t値)や性能が大 きく変わる。 • Constructing Sobol Sequences with Better Two-Dimensional Projections (2008)
  11. Sobol’ Sequence • 例えば、2466番目のSobol’ Sequenceの点を得たいとする。 • 2466 = 10011010010 (二進表示)

    • これにSobol’ matrixをXORし、小数展開することで点の座標を得る。 https://www.youtube.com/watch?v=8A4ZAIkJTAU
  12. (t,m,s)-net • s次元空間を、基数bに基づきb^m個のセルに分割したとき、すべて のセルにちょうど1点ずつ入るような点列を(t=0,m,s)-netと呼ぶ。 • sはサンプリング次元、ここではs=2 • bは通常、b=2 • 強力に層化されている、空間を均一にカバーしている、ともいえる。

    • Sobol’の場合、1~4次元でt=0を達成できる(完全均一配置) • 高次元になってくると、ちょうど1点ずつが難しくなり、tが増える。 • 一部のセルに点が複数入ったり、空になったりすることがある。 • これは実装に依存する
  13. Sobol’ Sequenceの実装 • An Implementation Algorithm of 2D Sobol Sequence:

    Fast, Elegant, and Compact (2024) • 二次元のSobol’ sequence生成に特化した手法。 • Stochastic Generation of (t,s) Sample Sequences (2021) • Owen scrambled Sobol’ sequenceを逐次的かつ高速に生成。
  14. 他の有名な点列 • Correlated multi-jittered sampling (CMJ) • ランダムジッタ、かつ、できるだけお互いが遠く離れるようにする (ブルーノイズ) •

    実装しやすい。 • Progressive multi-jittered sample sequence (PMJ) • CMJを発展させた手法で、プログレッシブ生成に対応し(0,2)-系列の 層別性を持つ。 • ブルーノイズ特性を組み込んだpmj02bnも提案されてる。 • 実装性が良く、LDS性もあり、プログレッシブ生成もでき、ブルーノ イズ性もある、ということで人気。
  15. 確率密度関数および被積分関数が高次元の場合 • ランダムサンプリングの場合 • 8次元のサンプリングは、単に各次元ごとに乱数を引けば良く、非常に単純! • N個サンプリングする場合も、N*8回乱数をひくだけ。 • グリッドサンプリングの場合 •

    8次元空間上にグリッドを構成しようとすると、各次元ごとに8分割するだけでも、全部で 8^8=16,777,216分割必要になってしまい非現実的(次元の呪い) • Low-discrepancy sequenceの場合 • 高次元のサンプリングも対応している場合がほとんどなので、ランダムサンプリングの場 合と同様問題なくサンプリングできる! • 8次元のサンプリングは、 𝑥!, 𝑥", … , 𝑥# $ のような点がN個得られる。
  16. • 𝑥!, 𝑥", … , 𝑥# $%!…'(( について • 𝑥!,

    𝑥" $, 𝑥!, 𝑥' $, 𝑥", 𝑥' $ …のように二次元投影 • 一つのセル内には 𝑥), 𝑥* $%!…'(( の256点が並ぶ。
  17. • 𝑥!, 𝑥", … , 𝑥# $%!…'(( について • 𝑥!,

    𝑥" $, 𝑥!, 𝑥' $, 𝑥", 𝑥' $ …のように二次元投影 • 一部のペアについて、規則的なパターンが生まれて いる!
  18. 高次元LDSにおける、二次元投影パターン問題 • モンテカルロレイトレーシングでは以下のように反射回数が多く、 高次元化したときに問題になりえる。(以下は八回反射) • 最後の積分は、先の例でいうと 𝑥%& , 𝑥%' !

    を用いるからである。 • Sobol’に限らず、他のLDSでも同様の問題が起きる。 • 自分の使っている点列の、二次元投影したときの挙動を確認しておくと良い。 ( 複 数 回 の 反 射 )
  19. 工夫された点列による、投影問題の解決 • Orthogonal Array Sampling for Monte Carlo Rendering (2019)

    • 「直交表」を利用して、各投影上でパターンが出ないようにする。
  20. 工夫された点列による、投影問題の解決 • MatBuilder: Mastering Sampling Uniformity Over Projections (2022) •

    任意の投影について望む性質を満たすようにデジタルネットの生成行列を整数線形 計画により設計。(Sobol’はサブセット) • これにより、用途に応じた高品質な点列を自由に生成できる一般性のある手法。 *良いSobol’を高速に欲しいだけならCascaded Sobol’ Samplingの方が適している。
  21. 工夫された点列による、投影問題の解決 • Sobol’ Sequences with Guaranteed-Quality 2D Projections (2025) •

    Sobol’列では通常、特定の唯一の2D投影のみがt=0を達成する。 • (t,m,s)-net • t=1を許容すると、高品質なSobol’列を無限に構築可能なことを証明。 • 事前計算により、692次元まで「任意の二次元投影が(1,2)-sequence」 になるような点列を得た。 • これは従来手法よりもさらに性質が良い点列となる。
  22. 点列を「padding」することで解決 • さらに、PBRTのPaddedSobolSamplerは以下のようにしている。 • 2D Sobol’ sequenceを考える。これは一般に高品質。 • 𝑥! ,

    𝑥" ! , 𝑥! , 𝑥" " , 𝑥! , 𝑥" # , … • 各サンプルごとに、上記の点列を並べ替えて繰り返し利用する。 • 例えば8次元のサンプルがN個ほしいときは以下のようにサンプルインデックスと次 元についてシャッフルする。 縦方向に見ると、2D Sobol’の単純な並べかえ さらに、次元方向にも並べ替えている 最初の二次元 次の二次元 次の二次元 ・・・ サンプル1 𝑥! , 𝑥" # 𝑥! , 𝑥" ! 𝑥! , 𝑥" $ ・・・ サンプル2 𝑥! , 𝑥" % 𝑥! , 𝑥" & 𝑥! , 𝑥" ' ・・・ ・・・ サンプルN 𝑥! , 𝑥" " 𝑥! , 𝑥" ( 𝑥! , 𝑥" ) ・・・
  23. Scrambling • ある点列についてScramblingと呼ばれる操作を行うことで一 つの点列から複数の「ランダマイズ」された点列を得ることが できる。 • ただし、元の点列の性質を維持する。 • これにより •

    高次元における投影パターン問題の解決 • CGレンダリングにおけるピクセル間の点列相関の解決 • 素朴には個々のピクセルについて全て同じLDSを用いることになるが、空間的に 相関が生まれてしまいパターン模様が生まれやすい。 • が図れる。
  24. 代表的な Scrambling 手法 • Cranley-Patterson Rotation (CP-Rotation) • 最もシンプルなScrambling手法。 •

    点列(a)にランダムベクトル𝜉を足し、点列(b)を得る。(端でループ) • 点列(b)をよく見ると、同じセルに複数個の点が入ってしまっている。 • (t,m,s)-netの性質が維持されていない。積分ドメインの上下左右が接続されていな い場合、問題になる。 Efficient Multidimensional Sampling (2002)
  25. 代表的な Scrambling 手法 • Owen Scrambling • 各次元方向について、再帰的に領域を二分割していく。分割時、二つ の各領域同士でランダムに”swap or

    何もしない”。 • (t,m,s)-netの性質が維持される。実装および実行コストが大きい。 元の点列 Step1 Step2 Step3
  26. 代表的な Scrambling 手法 • XOR Scrambling (Random digit scrambling) •

    Owen scramblingの簡易版で、実装が容易とされている。 • ただし、Owen Scramblingの方が優れているとされている。 • Efficient Multidimensional Sampling (2002)
  27. 代表的な Scrambling 手法 • Practical Hash-based Owen Scrambling (2020) •

    Sobol’ sequenceに対するOwen Scramblingをハッシュ関数を用いて 逐次的・ステートレスに実装する手法。 • 事前計算テーブル不要。 • GPUフレンドリーで、高速。 • Owen Scramblingの構造を模倣するが、統計的性質は“厳密には”オリ ジナルと一致しない。
  28. 代表的な Scrambling 手法 • ART-Owen Scrambling (2023) • Adaptive Regular

    Tiles (ART) という文脈自由文法を用いて、Owen Scramblingのスクランブルコードを明示的に生成する。 • Owen Scramblingの性質を忠実に保持しつつ、文法パラメータにより構 造の最適化・制御が可能。 • GPUフレンドリーで、高速。 • Hash-basedの方が高速ではある。 • Hash-basedの方に比べてよりOwen Scramblingに近い統計的性質を持つ。
  29. Blue-Noise点列(LDSと融合) • Sequences with Low-Discrepancy Blue-Noise 2-D Projections (2018) •

    Sobol’ sequenceの二次元投影について、事前探索の置換に基づき、 Blue-Noise的性質を持たせる手法。
  30. Blue-Noise点列(LDSと融合) • Differentiable Owen Scrambling (2024) • Owen Scrambling自体を微分可能(=back propagation可能)にする。

    • これにより、何らかのLossを最小化するようなScramblingを得られる。 • つまり、何らかのLossを最小化するような都合のいい点列を得られる。 入力:普通のSobol点列 出力:最適化された点列
  31. モンテカルロノイズをBlue-Noiseに従わせる手法 • Blue-noise Dithered Sampling (2016) • 1-9sppといった低サンプリング数シチュエーション。 • 64x64x2DといったBlue-Noise

    offset maskを用意し、各ピクセルの低次元点列に 対してオフセットすることで、画像空間のモンテカルロノイズをBlue-Noiseに従わ せる。 • CP-Rotationにおけるランダムベクトルをoffset maskから得るということ。 • これにより知覚的に有利なレンダリング結果を得られる。
  32. モンテカルロノイズをBlue-Noiseに従わせる手法 • Spatiotemporal Blue Noise Masks (2022) • Blue-noise Dithered

    Samplingのoffset maskを発展させ、空間+時間でブルー ノイズになるように最適化したmaskを得る。
  33. モンテカルロノイズをBlue-Noiseに従わせる手法 • A Low-Discrepancy Sampler that Distributes Monte Carlo Errors

    as a Blue Noise in Screen Space (2019) • モンテカルロノイズがBlue-Noiseに従うように、Owen-scrambled Sobol’ sequenceを焼きなまし法で最適化。 • Scrambling keyとranking keyをピクセルごとに持ち、最適化パラメータとする。 • 目的関数は、代表的な被積分関数の誤差分布を直接Blue-Noise化するため、 シーン非依 存であらゆるレンダリングに適用可能な点列が得られる。
  34. モンテカルロノイズをBlue-Noiseに従わせる手法 • Distributing Monte Carlo Errors as a Blue Noise

    in Screen Space by Permuting Pixel Seeds Between Frames (2019) • LDSや任意の点列を生成するseedについて、ピクセ ル同士で入れ替える。このとき、ピクセルごとの モンテカルロノイズがBlue-Noiseの構造に一致す るようにする。 • 時間方向も考慮している。
  35. モンテカルロノイズをBlue-Noiseに従わせる手法 • Screen-Space Blue-Noise Diffusion of Monte Carlo Sampling Error

    via Hierarchical Ordering of Pixels (2019) • Z-orderに基づき、Sobol’ sequenceのインデックスをスクリーンスペース上に並 べる。さらに、再帰的な四分木上で領域ごとにpermutationする。 • 割とシンプルなアルゴリズムながらもSobol’ sequenceの性質とBlue-Noise誤差分 布を実現できる。(PBRTのZSobolSamplerと同一)
  36. [0,1)^2の上で一様な場合以外への対応 • ここまで、確率密度関数が[0,1)^2の上で一様な場合を考えてきた。 • しかし、現実には • [0,1)^2の上で非一様な分布に対するサンプリング • 正方形じゃない領域に対するサンプリング •

    がある。 • そこで、点列をmappingやmappingと呼ばれる手法で変換する。 • 幾何領域への座標変換の場合、mapping • PDFに合わせて分布を変形する場合、warping • と、なんとなく呼び分けるが特に厳密に決まっているわけでもない。 • Nonuniform Random Point Sets via Warping (1992)
  37. 具体例2 • 環境マップ(HDRI)に対する輝度インポータンスサンプリングをし たい。 • 手法1 • まず行(y座標)を輝度に比例した1D PDFでサンプリングする。 •

    次に列(x座標)を輝度に比例した1D PDFでサンプリングする。 • それぞれについて、[0,1]^2上の点列 𝑢, 𝑣 & をそれぞれ用いる。
  38. 具体例2 • 環境マップ(HDRI)に対する輝度インポータンスサンプリングをし たい。 • 手法1 • まず行(y座標)を輝度に比例した1D PDFでサンプリングする。 •

    次に列(x座標)を輝度に比例した1D PDFでサンプリングする。 • それぞれについて、[0,1]^2上の点列 𝑢, 𝑣 & をそれぞれ用いる。 • 手法2 • まず環境マップの輝度ミップマップを作る。 • 次に上位レベルから下位レベルへと降りながら、点列を段階的にまとめて warpingしていく。 • 最終的に、点列は環境マップの輝度に比例した PDF に従う分布へと変換さ れる。
  39. 具体例2 • Wavelet importance sampling: efficiently evaluating products of complex

    functions (2005) • 以下のように、二次元上の点列について考える。 • 2x2の各領域の輝度分布をみる(事前計算) • 分布に応じて、点列を上下左右に「warping」する。 • 各部分領域について、再帰的に同様の処理を行う。
  40. Mapping, Warping, LDS • 他にも、BRDFサンプリングや光源のサンプリング、ありとあらゆる 場所にMappingやWarpingが出てくる。 • それぞれ、層化がどのように維持されるかを少し意識すると良い。 せっかくのLDSの層化性が失われてしまうことがある。 •

    Walker's Alias Methodは典型的に層化が破壊される。 • Importance Resamplingは典型的に層化が破壊される。 • Single-Pass Stratified Importance Resampling (2022) • Histogram Stratification for Spatio-Temporal Reservoir Sampling (2025) • などで解決策を提案。
  41. 様々な”Point Sets” • Sliced Optimal Transport Sampling (2020) • 乱数点集合を高次元からランダムな1次元方向に射影して並べ替える操作

    (スライス)を繰り返し適用する。各反復で点を1次元上で均等配置する ことで、高次元全体でも均一性が向上し、層化される。 • 「望ましい点列」を得るために点列の位置を直接最適化するタイプの手法。
  42. 様々な”Point Sets” • Scalable Multi-Class Sampling via Filtered Sliced Optimal

    Transport (2022) • Sliced Optimal Transport の考え方を元に、マルチクラスポイントセットや周波 数制御なども含めた最適化を実現。 • マルチクラスなので、個々の点列単位での最適化と、点列同士の最適化を同時の行える。 • 目的関数に視覚的誤差(+Blue-Noise)が組み込まれており、スクリーンスペースでの 誤差制御などにも使える。
  43. 様々な”Point Sets” • Fibonacci lattice • 低次元のFibonacci latticeは極めて容易に実装できるLDSとなる。 • Spherical

    Fibonacciを用いると、mapping不要で直接球面上の点列 を得られる。 • Spherical Fibonacci Point Sets for Illumination Integrals (2013) • 一様分布向き。極付近での挙動はやや悪い。
  44. Samplin' Safari • “Samplin’ Safari は、高次元 (準) モンテ カルロ サンプラーを視覚

    化し、インタラクティブに調査するための研究ツールです。” • https://github.com/wkjarosz/SamplinSafari • Web版もある。
  45. OpenQMC • 2025年にAcademy Software Foundationの一部として発表さ れたOSSライブラリ。 • “OpenQMC は、高品質な Quasi-Monte

    Carlo(QMC)点列をサンプリ ングし、疑似乱数を生成するためのライブラリです。 グラフィックス 用途向けに設計されており、Framestore のプロプライエタリなレン ダラー「Freak」の一部として VFX 制作で実際に使われています。” • https://openqmc.org/
  46. OpenQMCの特徴 • C++14(CPU,GPU)ヘッダオンリーライブラリ。 • プロジェクトの主な目的 • 柔軟なサンプラー API を標準化すること •

    高性能な実装を提供すること • 高品質な結果を得ること • 目指していないこと • 点列の網羅的な実装 • 教材的な実装を提供すること
  47. ライセンス • Apache-2.0 & LICENSE-NVIDIA • LICENSE-NVIDIA: NVIDIA が OpenQMC

    に自ら貢献したコードにつ いて、その利用・改変・再配布と、必然的に関わる NVIDIA 特許の行 使を許可する追加特許ライセンス • CGレンダリングにおけるQMCはNVIDIAに特許がとられている! • Pixarが以前ライセンスしたりしていた。 • Pixar Animation Studios Licenses NVIDIA Technology for Accelerating Feature Film Production • https://nvidianews.nvidia.com/news/pixar-animation-studios-licenses- nvidia-technology-for-accelerating-feature-film-production

More Decks by hole

Other Decks in Programming