Hacker News 中文摘要

RSS订阅

显示 HN:用 Julia 编写的基于物理的 GPU 光线追踪器 -- Show HN: A physically-based GPU ray tracer written in Julia

文章摘要

Makie团队宣布推出RayMakie和Hikari,将基于物理的GPU光线追踪技术集成到Makie中,使任何Makie场景都能实现照片级真实感渲染,包括全局光照、体积介质和物理材质等功能。该功能目前处于预发布阶段,相关示例代码已开源。这一创新旨在帮助科研人员更清晰地展示复杂3D数据。

文章总结

标题:Makie中的光线追踪:从科研数据到照片级渲染

我们很高兴地宣布,RayMakieHikari已集成到Makie中,这是一套基于物理的GPU光线追踪管线。现在,任何Makie场景都可以通过照片级路径追踪进行渲染:只需切换后端,即可获得全局光照、体积介质、光谱渲染和基于物理的材质,且全部运行在GPU上。

本文的所有展示脚本和演示场景可在github.com/SimonDanisch/RayDemo获取。

注意: RayMakie、Hikari和Raycore尚未正式发布,我们计划在未来几周内发布官方版本。在此期间,RayDemo中的Project.toml将保持更新,以便您提前试用。

为什么选择Julia中的光线追踪?

许多研究领域(如气候科学、结构生物学、流体动力学、粒子物理)产生的复杂3D数据需要清晰且引人入胜地展示。照片级渲染可以将密集的模拟输出转化为揭示结构和讲述故事的图像。然而,将科研数据导入传统光线追踪器通常需要导出网格、学习新工具,并失去交互式工作流程。

通过在Makie中直接构建光线追踪,我们消除了这一鸿沟。您可以通过GLMakie交互式探索的场景,现在可以直接用RayMakie进行照片级渲染,无需导出步骤,也无需学习新的API。

实现亮点

Hikari是pbrt-v4的Julia移植版本,实现了波前体积路径追踪器,支持光谱渲染、参与介质(如NanoVDB和基于网格的体积)、基于物理的材质(金属、电介质、涂层表面)以及环境/太阳-天空光照。光线相交引擎位于Raycore.jl中,这是一个基于AMD的Radeon Rays SDKHIPRT的独立包。

RayMakie将Hikari连接到Makie的场景图。您可以使用标准的Makie调用(如mesh!surface!volume!meshscatter!)构建场景,设置材质和光源,然后进行渲染。

应用案例

  1. Breeze:体积云渲染
    Breeze.jl从大型涡流模拟中生成云场,通过MIT气候建模联盟(CliMA)开发的GPU加速海洋和大气模拟器Oceananigans.jl驱动。

  2. PlantGeom:农业数字孪生
    PlantGeom.jl渲染生物物理精确的3D植物模型,用于农业研究。

  3. ProtPlot:蛋白质结构可视化
    ProtPlot.jl通过基于物理的材质渲染蛋白质带状图。

  4. TrixiParticles:流体模拟
    TrixiParticles.jl模拟流体动力学,渲染SPH表面网格。

  5. 体积渲染:云、烟雾和排气羽流
    参与介质在Hikari的路径追踪器中是一等公民,光线通过体积介质真实散射。

  6. GLTF模型:自发光纹理和场景组合
    RayMakie加载GLTF/GLB模型,并将其PBR材质自动映射到Hikari等效材质。

  7. Geant4:粒子探测器可视化
    Geant4.jl提供对CERN Geant4粒子物理模拟工具包的Julia绑定。

  8. 黑洞:自定义GPU材质
    用户可以通过子类型化Hikari.Medium定义全新的物理效果,如黑洞演示中的引力透镜效应。

未来工作

  • 内存优化:当前GPU内存分配较为激进,未来计划实现早期释放和更精细的内存管理。
  • 性能优化:在BVH构建、光线相交批处理和内核占用等方面仍有优化空间。
  • 代码质量和Makie集成:当前实现为原型,需进一步清理和整合实验性功能。
  • SPPM用于焦散:未来计划重新引入随机渐进光子映射以支持焦散渲染。
  • GPU后端测试:目前仅AMD GPU经过全面测试,NVIDIA支持需更多验证。

致谢

Hikari基于Matt Pharr、Wenzel Jakob和Greg Humphreys的pbrt-v4,并得到Sovereign Tech AgencyMuon Space的支持。

评论总结

以下是评论内容的总结:

  1. 技术问题反馈

    • iOS Safari存在视频自动全屏问题:"On iOS Safari the videos are fullscreening themselves as I scroll... Super annoying"(LoganDark)
  2. 材质系统疑问

    • 用户质疑材质描述限制:"in PBRT a material can only have one other material touching it... rendering a glass filled with water and ice is not possible without hacks"(amelius)
    • 询问与PBRT的兼容性:"Is the material description part of the language the same as in PBRT?"(amelius)
  3. 对AMD支持的积极评价

    • 肯定AMD优先策略:"really interesting to see... first vetted on AMD... ROCM finally shaking off its reputation for poor support"(krastanov)
    • 对ROCM的意外认可:"honestly the AMD-first bit surprised me - usually ROCm support is an afterthought"(theharpiaio)
  4. Julia语言发展讨论

    • 认为Julia未达预期:"A few years ago the view was that it was about to replace Python... Seems like that didn't happen?"(NoboruWataya)
  5. 工具赞赏

    • 高度评价项目成果:"That's an impressive accomplishment and a fantastic tool to explore"(blueaquilae)
  6. 技术实现细节询问

    • 关注移植过程:"I'd like to know a little about the process you went through for the port"(bobajeff)
    • 追问BVH遍历实现:"curious about BVH traversal specifically... were there vendor-specific fallbacks needed?"(theharpiaio)