着色器开发光照模型(实时全局光照渲染器kajiya)

今日推荐的GitHub项目是kajiya,它是一个实验性实时全局光照渲染器,使用Rust和Vulkan来实现。目前,该项目的Star量为2.8k。

着色器开发光照模型(实时全局光照渲染器kajiya)(1)

GitHub主页

  • 项目地址:https://github.com/EmbarkStudios/kajiya
  • 开源协议:Apache License

kajiya的总体目标是在动态场景中尽可能以实时速度接近路径追踪模式,不需要任何预计算的光传播或手动放置的光探针

目前,kajiya并不打算成为功能齐全的游戏渲染器,也无法支持所有类型的场景、光现象或多样化的硬件。

kajiya只是一个兴趣项目,有很多缺点,并会持续改进。

下图为使用kajiya渲染的废墟环境。

着色器开发光照模型(实时全局光照渲染器kajiya)(2)

特性

  • 混合使用光栅、计算和光线追踪的混合渲染
  • 动态全局光照,包括没有预计算的全动态几何和光照、无限反弹的体积时间循环辐照度缓存、高频细节的光线追踪漫反射最终聚集和光线追踪镜面,第一次命中后回落到漫反射
  • 带有光线追踪软阴影的阳光
  • 具有GGX和粗拙度/金属度的标准PBR,包括节能多散射BRDF(双向反射分布函数)
  • 引入路径追踪模式
  • 时间超分辨率和抗锯齿
  • 自然色调映射
  • 基于物理的眩光
  • 基本运动模糊
  • 对比度自适应锐化
  • 可选DLSS(深度学习超采样)支持
  • GLTF网格加载(还没有动画)
  • 运行kajiya的渲染图

主要平台

目前,kajiya只支持少数几个操作系统和硬件上运行。

硬件包括如下:

  • Nvidia RTX系列
  • Nvidia GTX 1060以及6GB VRAM以上更新版本
  • AMD Radeon RX 6000系列

操作系统包括如下:

  • Windows
  • Linux

依赖包括如下:

  • libtinfo5
  • uuid-dev

搭建与运行

想要构建kajiya及其工具,你需要Rust。

bake.rs中有个非常小的资产管道,它将GLTF中的网格转换成内部平面格式,并计算纹理映射。为了烘焙(bake)所有提供的网格,你需要在不同的操作系统上分别运行如下:

  • Windows:bake.cmd
  • Linux & macOS:./bake.sh

完成之后,通过如下运行渲染器demo:

  • Windows:build_and_run.cmd [scene_name]
  • Linux & macOS:./build_and_run.sh [scene_name]

其中[scene_name]是assets/scenes中的一个文件名称,没有.ron扩展,如下所示:

build_and_run.cmd battle

或者

cargo run --bin view --release -- --scene battle --width 1920 --height 1080 --no-debug

更多细节内容请参阅原项目。

扩展阅读

  • Rust是一门系统编程语言,支持函数式和命令式以及泛型等编程范式的多范式语言,专注于安全尤其是并发安全。Rust在语言上类似于C 。
  • Vulkan是一个跨平台的2D和3D绘图应用程序接口,最早由科纳斯组织(Khronos Group)在2015年游戏开发者大会(GDC)上发表。Vulkan旨在提供更低的CPU开销与更直接的GPU控制,理念大致与Direct3D 12和Mantle类似。
,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页