以下の内容はhttps://kugi-masa.hatenablog.com/entry/rtcamp11より取得しました。


レイトレ合宿11参加レポート

はじめに

11月14日(金)から11月16日(日)の期間で高尾山の麓で開催されたレイトレ合宿11に参加してきました!

レイトレ合宿

レイトレ合宿はオフラインレンダリングのオフライン集会で、各々合宿当日までにレンダラを提出します。 合宿当日はレンダラのお披露目会である本戦やセミナー、またアクティビティなどが行われます。

今年のレイトレ合宿は高尾山口駅から歩いてすぐのタカオネで開催されました。

初日にバーベキューや

焚火をしたり

突如コーネルボックスが現れたり

二日目には高尾山を登ったりと自然も満喫しました。

本戦

本戦では制限時間内にAWSインスタンス上で描画された成果物とレンダラの説明を元に参加者全員でお互いの作品を10点満点で評価します。

詳しいルールについては下記に記載されています。

ルール・実行環境・提出物仕様

提出されたレンダラ

今年はエキシビション含め23個のレンダラが提出されました!

今年は、

薄レンズの重点的サンプリング手法を実装されたものや

Physically Based Shading in Theory and Practiceで発表されていた Strandベースのファーレンダリングなど

SIGGRAPH2025で発表された最新手法の実装や、

OpenUSDに対応し、BlenderやHoudiniで自作レンダラを呼び出すためのHydraプラグイン実装、

ライトが動き、固定端反射を行うシーンでの2次元のTransient Renderingなど、

皆さんの個性が詰まった多種多様なレンダラの発表がありました。

1位を取られたのは、Path Cutsという手法をベースにフォトントレーシングも活用してCausticsを描画された、うしおさんのPalzillaでした!

圧巻です...!

ここで紹介させていただいたレンダラだけでも半分には満たず、どれも素晴らしい作品ばかりです。 是非皆さんの作品をリザルトサイトの方でご覧ください!

sites.google.com

FluoTracer

さて、私の作品はというと、今年は蛍光を改めてレンダリングしました。

speakerdeck.com

github.com

今回の目標

これまでの変遷として、

という流れで参加してきました。

昨年のレイトレ合宿10でハードウェアレイトレーシングの土台ができたので、初心に帰って私の好きな光学現象である蛍光のレンダリングを今回の目標にし、昨年のレンダラーを拡張する形で実装を始めました。

Fluorescence in RGB

蛍光現象は蛍光分子がある特定の波長の光を吸収し、別の波長の光を放出する現象です。

そのため、レンダリングを行う際は光の波長までを考慮する必要があり、一般的なRGBレンダラでは物理的に正しい蛍光が表現できません。 また、スペクトラルレンダリングの中でも入射光と出射光で波長が変化するため、波長のサンプリングを行う際は波長の変化を考慮する必要があります。

レイトレ合宿8で実装したFluorSwitchの蛍光では、380 ~ 780nm区間で5nmごとの81サンプルからなるフルスペクトラムを用いて描画していました。

speakerdeck.com

今回改めて蛍光に挑戦するということで、蛍光ハンターである私は昨年EGSR2024で発表されたNon-Orthogonal Reduction for Rendering Fluorescent Materials in Non-Spectral Enginesを思い出しました。

提案手法では、RGBレンダリングも、等色関数によってRGB(XYZ)からスペクトラムへのダウンサンプリングやアップサンプリングが含まれるスペクトラルレンダリングだと捉えることでRGBレンダリング内で蛍光現象を表現しています。

詳しくは今年のセミナー資料でも記載しています。

speakerdeck.com

少し蛍光からは逸れますが、よこたさんやyumcyawizさんとのお話の中で、共著者の一人のBelcourさんがSIGGRAPH2017で発表された、 A Practical Extension to Microfacet Theory for the Modeling of Varying Iridescenceでも同じような考えでIridescenceをRGBで表現していると教えていただきました。

Iridescenceの方に関しては、UnityのHDRPでのIridescenceマテリアルや後述するOpenPBRのThin-film iridescenceでも推奨モデルとなっているようです。

また、今年のSIGGRAPH 2025のCourseではBelcourさんご本人が2024年の手法と発展として蛍光材質のパラメータを編集可能にした発展手法(A Fluorescent Material Model for Non-Spectral Editing & Rendering)について発表されていました。

今回私が提出したFluorTracerではあらかじめ事前計算でリダクションされたRe-radiation Matrixを用いてRGBレンダラーで蛍光の描画をしています。

蛍光材質としては論文でも利用されていたTEXTYELLというものを利用しています。 リダクションの計算などが含まれたJupyterNoteBook公開されていたため、計算済みの3x3の行列を今回は利用しました。

GitHub - afichet/fluorescence-rgb: Sample code for the paper Non-Orthogonal Reduction for Rendering Fluorescent Materials in Non-Spectral Engines

蛍光マテリアルのClosestHitシェーダーで、NEEによる光源サンプルで光源と接続できた場合に以下のような流れで寄与計算しています。

  1. サンプルされた光源をRGB → XYZ に変換
  2. 変換されたXYZ値をリダクションされたRe-radiation Matrix(事前計算された3×3行列)とかける
  3. 蛍光の計算後、XYZ → RGBに変換して寄与に加える

シーン中央に蛍光マテリアルを割り当てた板を設置して、後半の方で正面のライトの色を青に変化させることで蛍光を際立たせています。 蛍光マテリアルとしては『レイトレ合宿11』と書かれたマスクテクスチャを割り当てており、白の部分は蛍光面、黒の部分は拡散反射面にしています。

拡散反射面の部分のアルベドカラーについてはレイトレ合宿の文字が隠れるように色を調整しています。

拡散反射面でのアルベドを黄色に設定することで蛍光面が見えないようにしている

アルベドを黒にした場合

SIGGRAPH 2025のCourseでも言及されているのですが、パストレーシングにおいてはペイロードスカラー値ではなく、3×3の行列として扱う必要があります。

Spectral Rendering in a Non-Spectral Renderer: How Can we Author and Render Fluorescence in RGB? [SIGGRAPH2025] p.15

今回の実装ではNEEでの光源接続時と限定的に実装を行ったため、ペイロードスカラー値のままで計算しており、 本来の見た目よりも若干弱めの蛍光になっていそうなのですが、黄色い板から急に文字が浮かび上がってくるという演出としては都合が良かったです。

OpenPBR

蛍光以外の材質について、今回はOpenPBRの導入にも挑戦してみました。

これまでのマテリアルについては蛍光を除くとベーシックな拡散反射面(Lambert Diffuse)のみでスペキュラーな反射については実装してきませんでした。 GGXなどを導入してGlossyな面に対して蛍光が映り込む様子にも今回は挑戦してみたいなと思っていたところ、またまたSIGGRAPH2025のCourseでOpenPBRについての資料が上がっていることに気づきました。

OpenPBRはPBRマテリアルの共通規格とすべく、AutodeskとAdobeが協力し、Academy Software Foundationが2024年6月にバージョン1.1を策定した規格で、 Slabという材質の表面のBSDFと均質な媒質からなる構造をレイヤーとして積み上げたり、割合に応じてブレンドさせることで表現されるマテリアルです。

OpenPBR Surface | 3. Model

元々はDisneyのPrincipled BRDFに挑戦しようと思っていたのですが、新しい規格でもあり、長いものに巻かれてみようという気持ちでOpenPBRの実装に取り組みました。

WebGLベースではありますが、パストレーシングを行っているビューアーがOpenPBRの公式リポジトリでも紹介されていたので、今回はこちらを参考に実装しています。

GitHub - portsmouth/OpenPBR-viewer: An example implementation of OpenPBR in a WebGL pathtracer

とはいえ、今回の本題は蛍光だったので、いきなりすべてを導入するのではなく、Diffuse面とMetal面のBRDFのみの簡素な実装になっています。

DiffuseとMetalのBRDFのみ

また、OpenPBRではDiffuse面でのBRDFをエネルギー保存を考慮したモデルであるEON ("energy-perserving Oren-Nayar")をオプションとして提示していますが、今回はLambertDiffuseを用いています。

(EONについてもSIGGRAPH2025のCourseで発表がありました)

Metal面ではマイクロファセットBRDFフレネル反射としてはF82-Tintモデルを導入しています。

余談ですが、Unreal Engineの5.7からデフォルトで有効になった新しいマテリアルであるSubstrateも同じようにSlabを基本構造として持っており、マテリアル共通化の流れをこちらでも感じることができます。

GitHub Actionsによる自動ビルド

レンダラそのものとは若干ずれますが、今回はGitHub Actionsによる自動ビルドも導入しました。

PushをトリガーにWindowsのDebug版とRelease版をビルドしていました。

Release版でのアセットパス周りのバグに事前に気づけたりと早めに導入してよかったです。

意気込み賞

今回は本戦、セミナーの他に「意気込み賞」もありました。

優勝はkinankomotiさんの"raytracing-kenkyu.org"!

raytracing-kenkyu.org

SUGEEEEE----!!!

え?私の意気込みですか?

はい。

蛍光全然関係なくない?!


そうなんです、この異常に長い意気込み、私でした...

今年のレイトレ合宿のお誘いがあったのがちょうどCEDECの直後で、 Pocolさんのメッシュレット描画の講演を聞き、メッシュレット描画への興味がわいていたタイミングでノリと勢いで意気込みを投下してしまいました。

speakerdeck.com

メッシュレット描画したうえでライティング時にレイトレをすることを今年の目標にするか?と一瞬悩んだりもしたのですが、 やはり蛍光に挑戦したいという思いもあり、このズレた意気込みが出来上がってしまいました...

めちゃくちゃ恥ずかしいな...と思いながら合宿に参加していたのですが、 最終日にお昼をご一緒したeclmistさん、てらさん、ゆういちろうさん、sketchさんと意気込み賞の話になり、 「実はあれ実は自分なんです...」と明かしたところ、「めちゃくちゃ笑いました!」と言っていただけたので救われました...

感謝🙏

まとめ

レイトレ合宿11について振り返りました。

今年は初参加の3年前から再び蛍光の実装に取り組むことができました。

ただ、今回の蛍光はシーンに依存した実装や材質についても固定だったので、 まずはリファレンスのためにRGBレンダラをスペクトラルレンダラに拡張したいです。 また、OpenPBRについても実装が道半ばなのでほかのBSDFについても実装を進めたいです。

参加するたびに皆さんから刺激をもらい、自分も頑張ろうと思える良い機会です。 参加者の皆さんとの議論も非常に楽しかったです。

運営の皆さん、参加者の皆さんありがとうございました!




以上の内容はhttps://kugi-masa.hatenablog.com/entry/rtcamp11より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14