
2026/02/19 19:55
**Show HN:** 「Juliaで書かれた物理ベースGPUレイトレーサー」
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
RayMakie は、物理ベースで GPU アクセラレーションされたレイトレーシングエンジン「Hikari」を Makie に拡張したものです。Hikari は pbrt‑v4 のウェーブフロントボリュームパストレーサーを Julia へ移植し、スペクトルレンダリング、全体照明、金属、誘電体、コーティング済み表面、および環境/太陽空のライティングをサポートします。ボリューム表現は二種類あり、大規模データセット(例:雲)には NanoVDB スパースグリッド、密な per‑voxel 色・放射・散乱特性には RGBGridMedium を使用し、いずれも Makie の
volume! プリミティブでアクセス可能です。
Raycore.jl は AMD の Radeon Rays SDK/HIPRT に基づく高速 GPU 交差エンジンを提供し、Hikari がこれを利用します。両者は Makie のシーングラフ呼び出し(
mesh!, surface!, volume!, meshscatter!)をレイトレーシングへと変換し、colorbuffer(scene; device=…, integrator=…) を通じて実行します。パッケージは GLTF/GLB モデルも読み込み、PBR マテリアルを Hikari の等価物にマッピングし、発光テクスチャを輝きつつ照明する領域ライトへ変換します。
サンプルプロジェクトではシステムの機能が示されます。Breeze.jl は大渦計算から得られるボリュメトリック雲をレンダリングし、PlantGeom.jl は生物物理的に正確な植物モデルを提供、ProtPlot.jl はタンパク質のリボン図を可視化、TrixiParticles.jl は実際的な水面を伴う流体力学シミュレーションを行います。
Hikari.Medium をサブタイプ化することでカスタム物理(例:重力レンズ効果を持つブラックホール時空間メディア)も定義可能です。
RayMakie はインタラクティブウィンドウ(
RayMakie.interactive_window)を提供し、カメラ移動に伴いパストレーシング画像を段階的に改善します。また、レイトレーシング背景上に線・テキスト・ワイヤーフレームなどのラスター化要素を合成するオーバーレイレンダラーも備えています。
本プロジェクトはまだプレリリース段階であり、現在利用可能な
Project.toml が早期使用向けに公開されています。将来のリリースでは GPU メモリ使用量の最適化、BVH 構築とカーネル占有率のチューニング、Makie の実験的機能の完全統合、SPPM による屈折光(caustics)の再導入、バックエンドテスト(CUDA/NVIDIA, CPU)の拡充、および Makie テストスイート全体の移植が計画されています。資金は Sovereign Tech Agency と Muon Space から提供され、Hikari は pbrt‑v4、Trace.jl、Raycore.jl、KernelAbstractions.jl を基盤としています。
RayMakie により、単一の Julia 環境内で任意の Makie シーンをフォトリアリスティックにパストレーシングできるようになり、科学者・アニメーター・研究者は複雑なボリュメトリック雲、生物構造、流体シミュレーションなどを高精度照明で直接自分の慣れたワークフローに統合してレンダリングできます。
本文
RayMakie と Hikari を正式に発表できることを大変嬉しく思います。
これらは Makie に直接統合された物理ベースの GPU レイトレーシングパイプラインで、
任意の Makie シーンをフォトリアリスティックなパストレースでレンダリングできます。
バックエンドを切り替えるだけで、グローバルイルミネーション、体積メディア、スペクトル
レンダリング、物理ベースマテリアルなどが GPU 上で動作します。
すべてのサンプルスクリプトとデモシーンは
github.com/SimonDanisch/RayDemo で公開しています。
注記:RayMakie、Hikari、および Raycore はまだ正式リリースされていません。
今後数週間で公式バージョンを発表する予定です。その間は RayDemo のを最新状態に保ち、すぐに試せるようになっています。Project.toml
なぜ Julia でレイトレーシング?
気候科学・構造生物学・流体力学・粒子物理学など、多くの分野で研究グループは
複雑な 3D データを生成します。フォトリアリスティックレンダリングは、密度の高いシミュレーション出力を
構造を明確に示し、ストーリー性のある画像へと変換できます。しかし
従来のレイトレーサーに研究データを持ち込むにはメッシュのエクスポートや新しいツールの習得が必要で、
インタラクティブなワークフローから離れてしまいます。
Makie にレイトレーシングを直接組み込むことで、
GLMakie でインタラクティブに探索した同じシーンを
エクスポートステップや新しい API を学ぶことなく、RayMakie でフォトリアリスティックにレンダリングできます。
Julia で実装するメリット
- パフォーマンス:Julia は効率的な GPU コードへコンパイルされ、C++ レイトレーサーと競合します。
- クロスベンダー GPU サポート:AMD・NVIDIA・CPU のすべてに同一コードベースで対応(KernelAbstractions.jl 経由)。
- Makie との統合:シーン構築、カメラ制御、ライティングの既知 API をそのまま使い、レイトレーシングを オプションとして追加。
- モジュラーアーキテクチャ:Julia の多重ディスパッチで GPU 上に直接実行されるカスタムマテリアル、 メディア、インテグレータが可能になり、新しい可視化・シミュレーション用途を切り拓く。
- ハッカビリティ:高水準言語での最先端スペクトルパストレーサーは、レイトレーシング研究と実験を より広範なオーディエンスへ開放します。
実装概要
Hikari は pbrt‑v4(Physically Based Rendering, Pharr・Jakob・Humphreys)の Julia ポートです。
波形フロントの体積パストレース、スペクトルレンダリングを実装し、NanoVDB やグリッドベース
ボリュームの参加メディア、金属・誘電体・被覆表面などの物理ベースマテリアル、
環境光/太陽光照明に対応します。
レイインターセクションエンジンは Raycore.jl に分離され、AMD の Radeon Rays SDK と HIPRT を基盤としています。
RayMakie は Hikari を Makie のシーングラフへ接続し、
mesh!・surface!・volume! など
の標準 Makie 呼び出しでマテリアルやライトを設定し、レンダリングできます。
using RayMakie, Hikari scene = Scene(size=(1920, 1080), lights=[SunSkyLight(Vec3f(1, 2, 8))]) cam3d!(scene) mesh!(scene, my_mesh; material=Hikari.Gold(roughness=0.1)) img = colorbuffer(scene; device=AMDGPU.ROCBackend(), # または CUDABackend()、CPU() integrator=Hikari.VolPath(samples=100, max_depth=12), sensor=Hikari.FilmSensor(iso=100, white_balance=6500), )
ショーケース
| プロジェクト | 内容 |
|---|---|
| Breeze | Large Eddy Simulations (Oceananigans.jl) からの雲描画。NanoVDB と Hikari の体積パストレースを使用 |
| PlantGeom | 農業向けデジタルツイン:ワックス被覆葉とサブサーフェス光伝搬を持つ生物物理的に正確な 3D 植物モデル |
| ProtPlot | タンパク質構造可視化。物理ベースマテリアル、被写界深度、折りたたみアニメーション |
| TrixiParticles | スムーズ粒子流体力学(SPH)シミュレーション。水のスプラッシュは誘電体 (IOR 1.33) を使用 |
| Volumetric Rendering | 雲・煙・排気羽を NanoVDB または RGBGridMedium で描画 |
| GLTF Models | エミッシブテクスチャとシーン構成。RayMakie は PBR マテリアルを Hikari の等価に自動マッピング |
| Geant4 | CMS 実験装置の粒子検出器可視化。金属マテリアルを物理ベースで表現 |
| Black Hole | カスタム GPU マテリアル:SpacetimeMedium がシュワルツシルトメトリックで重力レンズ効果を実装、発光円盤は温度依存色で可視化 |
インタラクティブモード
RayMakie のインタラクティブモードでは、カメラをリアルタイムで移動させながら パストレース画像を段階的に改善します。オーバーレイレンダラーはライン・テキスト・ワイヤフレームなどの ラスター化要素をレイトレーシング画像上に合成し、Makie の標準 2D オーバーレイと共存させます。
はじめ方
using RayMakie, Hikari # 標準 Makie でシーン構築 scene = Scene(size=(800, 600), lights=[SunSkyLight(Vec3f(1, 2, 8))]) cam3d!(scene) mesh!(scene, my_geometry; material=Hikari.Gold()) # パストレースでレンダリング img = colorbuffer(scene; device=AMDGPU.ROCBackend(), integrator=Hikari.VolPath(samples=100, max_depth=12), ) # インタラクティブ探索には RayMakie.interactive_window(scene)
今後の取り組み
- メモリ最適化:中間 GPU バッファを早期解放し、より慎重なメモリ管理を実装。
- パフォーマンス向上:BVH 構築、レイインターセクションのバッチ処理、カーネル占有率、データレイアウト最適化。
- コード品質・Makie 統合:実験的機能を整理し、バックエンドインターフェースを改善。
- Caustics(屈折光):SPPM を再導入してカスタリックなレンズ効果を実装。
- GPU バックエンドテスト:CUDA.jl での NVIDIA サポート拡張、CPU バックエンドへの対応、割り当て問題の解決。
- Makie テスト:完全なテストスイート(参照・視覚回帰テスト)を移植。
謝辞
Hikari は Matt Pharr、Wenzel Jakob、Greg Humphreys の pbrt‑v4 を Julia に移植したものです。
Trace.jl(元は Anton Smirnov が作成)と Raycore.jl のインターセクションエンジンを基盤にしています。
GPU サポートは KernelAbstractions.jl と Julia GPU エコシステムによって実現されています。
四軸飛行機および HL‑20 宇宙船の GLTF モデルは JuliaHub から提供されました。
この研究は Sovereign Tech Agency の投資により可能となり、Raycore の最適化と GPU 作業は Muon Space により支援されています。