j1n9h3/volumetric_cloud

GitHub: j1n9h3/volumetric_cloud

基于EGSR 2020论文的虚幻引擎天空大气与体积云渲染技术实现,提供光线步进和路径追踪两种渲染方式的对比参考。

Stars: 0 | Forks: 0

# [Unreal Engine](https://www.unrealengine.com) 天空大气渲染技术 这是伴随论文 `A Scalable and Production Ready Sky and Atmosphere Rendering Technique`(一种可扩展且可用于生产的天空和大气渲染技术)的项目,该论文在 [EGSR 2020](https://egsr2020.london/program/) 上发表。 它可用于将该论文中提出的新技术与 [Bruneton et al.](https://github.com/ebruneton/precomputed_atmospheric_scattering) 以及实时路径追踪器进行比较。 路径追踪器使用的是简单且效率较低的噪声,因为我不确定是否可以分享我之前的噪声代码。 该技术用于在 [Unreal Engine](https://www.unrealengine.com) 中渲染天空和大气。 构建解决方案 1. 更新 git 子模块(运行 `git submodule update --init`) 2. 打开解决方案 3. 确保为两个项目都选择您本地已安装的 Windows SDK 和平台工具集 4. 在 Visual Studio 中,将 _Application_ 项目的 _Working Directory_(工作目录)从 `$(ProjectDir)` 更改为 `$(SolutionDir)` 5. 选择 Application 作为启动项目,按 F5 运行时按键: - SHIFT + 鼠标来环视 - CTRL + 鼠标来移动太阳 - C 来截屏 - T 在光线步进(ray-marching)和路径追踪(path tracing)之间切换(切换到路径追踪时禁用多重散射近似) - F5/F9 来保存/加载状态 子模块 * [imgui](https://github.com/ocornut/imgui) 支持 V1.62 * [tinyexr](https://github.com/syoyo/tinyexr) 关于代码: * Eric Bruneton 的代码已获授权从他的 [2017 implementation](https://ebruneton.github.io/precomputed_atmospheric_scattering/) 复制而来。 * 此仓库中的代码是提供的,希望今后利用它来推进技术发展的工作也能分享给大家使用。 * 此代码是在 [Dx11Base](https://github.com/sebh/Dx11Base) 演示/测试平台上构建的。 * RenderSkyRayMarching.hlsl 包含为新技术构建不同 LUT 的光线步进器(ray marcher)。 * RenderSkyPathTracing.hlsl 包含基本的体积路径追踪器。它在 [其他参与介质测试](https://twitter.com/SebHillaire/status/1076144032961757185) 中与 PBRT 和 Mitsuba 的输出相匹配。可以通过真正遵循辐射传递方程(Radiance transfert Equation)路径积分作为每个事件的循环来改进它:目前我们仅将参与介质和与行星的交集作为特殊情况处理。 * 此代码仅在 Windows 上使用 Visual Studio 进行了测试(无构建脚本生成) 感谢 [Epic Games](https://www.epicgames.com) 允许发布此源代码。 代码按原样提供,不提供任何支持。 我仍然对任何反馈感兴趣,如果您[通过 twitter 联系我](https://twitter.com/SebHillaire),我们可以进行讨论。 [Seb](https://sebh.github.io/)
标签:DirectX 11, DNS解析, EGSR 2020, HLSL, Unreal Engine, 体积云, 光线追踪, 图形学, 天空大气渲染, 学术论文复现, 实时渲染, 客户端加密, 开源项目, 游戏开发, 算法对比, 虚幻引擎, 计算机图形学, 路径追踪