着色器开发光照模型(实时全局光照渲染器kajiya)
今日推荐的GitHub项目是kajiya,它是一个实验性实时全局光照渲染器,使用Rust和Vulkan来实现。目前,该项目的Star量为2.8k。
GitHub主页
- 项目地址:https://github.com/EmbarkStudios/kajiya
- 开源协议:Apache License
kajiya的总体目标是在动态场景中尽可能以实时速度接近路径追踪模式,不需要任何预计算的光传播或手动放置的光探针。
目前,kajiya并不打算成为功能齐全的游戏渲染器,也无法支持所有类型的场景、光现象或多样化的硬件。
kajiya只是一个兴趣项目,有很多缺点,并会持续改进。
下图为使用kajiya渲染的废墟环境。
特性
- 混合使用光栅、计算和光线追踪的混合渲染
- 动态全局光照,包括没有预计算的全动态几何和光照、无限反弹的体积时间循环辐照度缓存、高频细节的光线追踪漫反射最终聚集和光线追踪镜面,第一次命中后回落到漫反射
- 带有光线追踪软阴影的阳光
- 具有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