我目前正尝试将Sebastian Lague的体素化光线步进云项目移植到VRChat世界中。

原项目在Unity中运行正常,但云层是通过CloudMaster使用OnRenderImage() / Graphics.Blit()渲染的,因此它们本质上与相机/渲染视图绑定。

我想实现的目标是:

  • 保留Seb Lague现有的光线步进/云的外观和设置。
  • 移除对OnRenderImage()和全屏渲染视图的依赖。
  • 让云层作为场景中一个普通的体积对象/体积体进行渲染,例如使用一个带有自定义着色器的大型立方体。
  • 理想情况下,云体积在场景中独立存在,而玩家相机像观察其他对象一样查看它。

那么,在Seb Lague的现有实现中,这在技术上是否可行?

更重要的是,要实现这一点,着色器/代码的哪些部分需要修改?是否主要是将全屏相机光线设置替换为世界空间光线/体积相交,同时保留现有的光线步进和密度函数?

我是着色器编程新手,因此我特别想获得一个实用的解释或一个如何实现转换的示例。

仓库地址:
https://github.com/SebLague/Clouds

谢谢!