newsence
來源篩選

Show HN: A physically-based GPU ray tracer written in Julia

Hacker News

We are excited to announce RayMakie and Hikari, a physically-based GPU ray tracing pipeline integrated directly into Makie that allows any Makie scene to be rendered with photorealistic path tracing. By building this directly into Julia, we eliminate the gap between interactive research data exploration and high-quality rendering while maintaining cross-vendor GPU support.

newsence

Show HN:一個使用 Julia 編寫的物理基礎 GPU 光線追蹤器

Hacker News
9 天前

AI 生成摘要

我們很高興宣布推出 RayMakie 和 Hikari,這是一個直接整合進 Makie 的物理基礎 GPU 光線追蹤管線,讓任何 Makie 場景都能以照片級真實感的路徑追蹤進行渲染。透過直接在 Julia 中構建此功能,我們消除了互動式研究數據探索與高品質渲染之間的隔閡,同時保持了對不同廠商 GPU 的支援。

背景

Julia 語言的視覺化生態系 Makie 近期發表了重大的技術突破,開發者將知名的物理渲染教科書《Physically Based Rendering》(PBRT-v4)移植至 Julia,並整合進 Makie 的後端。這項名為 RayMakie 與 Hikari 的專案,讓研究人員無需匯出資料至外部軟體,即可直接在 Julia 環境中利用 GPU 進行光線追蹤,將複雜的科學模擬數據轉化為具備全球光照、體積散射與物理材質的寫實影像。

社群觀點

在 Hacker News 的討論中,社群對於此專案展現了高度的興趣,特別是其對 AMD GPU 的原生支持。留言者指出,過去高效能運算工具往往優先考量 NVIDIA 的 CUDA 生態,而此專案透過 KernelAbstractions.jl 實現了跨平台的 GPU 支援,甚至在 AMD 平台上表現優異,這被視為 ROCm 生態系逐漸成熟的正面訊號。開發者 Simon Danisch 也強調,他對供應商鎖定(Vendor Lock-in)深惡痛絕,因此致力於讓同一套程式碼能在不同硬體上運行,這在兩年前幾乎是不可能的任務。

然而,關於 Julia 語言本身的爭議依然存在。部分用戶質疑 Julia 是否已失去取代 Python 的勢頭,並批評其編譯延遲(Time to First Plot)與 1 索引(1-based indexing)的設計。對此,支持者與開發者反駁指出,Julia 的成長數據並未放緩,且其在處理複雜 GPU 核心編譯與高階抽象封裝上的優勢,是 Python 難以企及的。Danisch 認為,若要真正挑戰 Python 的地位,Julia 必須解決預先編譯(AOT)與二進位檔分發的問題,但對於開發如 Makie 這種大型視覺化框架而言,Julia 仍是目前維護成本最低且開發體驗最流暢的選擇。

在技術細節上,有留言者針對 PBRT 的材質描述限制提出疑問,例如如何處理水杯中含有冰塊這種多重介面(Nested Dielectrics)的複雜場景。開發者坦言目前 Julia 版本仍沿用 PBRT 的架構,存在類似的限制,但得益於 Julia 的多重分派(Multiple Dispatch)與模組化特性,未來要實作實驗性功能或修改積分器(Integrator)會比 C++ 版本更加容易。此外,開發者分享了利用 AI 工具(如 Claude)協助移植 C++ 程式碼的經驗,雖然初期產出的程式碼品質不佳,但透過手動重構與 Julia 特有的資料結構優化,最終成功兼顧了開發速度與執行效能。

延伸閱讀

  • RayDemo GitHub 倉庫:包含所有展示腳本與示範場景。
  • Physically Based Rendering (PBRT):專案參考的物理渲染權威教材。
  • Breeze.jl:基於 Oceananigans.jl 的雲層模擬與渲染工具。
  • PlantGeom.jl:用於農業研究的生物物理植物模型渲染。
  • Nested Dielectrics 討論:關於渲染重疊介面技術難度的背景資料。