DFAO-Unity:使用双层SDF和光线行进技术实现AO和软阴影效果
项目介绍
DFAO-Unity 是一个开源项目,它利用双层层次结构的SDF(有向距离场)和光线行进(ray marching)技术来渲染环境遮蔽(AO)和软阴影效果。这个项目依赖于[SDF baker (SDFr)]技术,通过维护和运行时懒更新全局SDF,指导光线行进的初步步骤,并大致定位可移动对象。
项目技术分析
DFAO-Unity 的核心在于双层SDF结构的应用。在渲染过程中,首先从全局距离场(GDF)中采样光线行进的步长,然后使用相邻对象的局部SDF。全局SDF的引入,使得可移动对象能够得到更好的处理,同时局部SDF确保了精确的表面点定位。
项目使用了一种保守的距离加法方法来平滑全局SDF与局部SDF之间的过渡,以保证光线行进射线精确击中对象的最近表面点。然而,保守的距离加法可能会导致额外的光线行进步数,特别是当视射线与对象边界框边缘的角度接近0度时。
为了减少额外的步数并提高精度,项目采用了一种基于Sqrt root of 2的保守方法来处理全局距离和局部距离的加法,从而优化了光线行进的步数。
项目及技术应用场景
DFAO-Unity 的应用场景主要针对静态场景和可移动对象数量有限的场景。在当前的实现中,阴影渲染在一个Nvidia GTX 1660Ti显卡上,以高清分辨率运行时,大约需要4-6毫秒的时间。由于光线行进算法的特性,该效果与屏幕尺寸紧密相关。然而,对于更高分辨率的优化,可以通过以下方法实现:
- 降低采样率
- 使用自适应分辨率渲染,例如从这里开始了解
项目的实际效果可以通过提供的幻灯片和视频进行查看,这些资料详细介绍了项目的实现细节和效果展示。
项目特点
-
双层SDF结构:通过使用全局和局部SDF的组合,项目能够更精确地渲染环境遮蔽和软阴影效果。
-
保守的距离加法:保证了光线行进的射线能够精确击中对象的最近表面点,尽管可能会增加额外的步数。
-
性能优化:项目在高清分辨率下表现良好,且提供了针对更高分辨率的优化策略。
-
易于使用:只需克隆代码并打开示例场景,即可运行并查看效果。
-
社区支持:项目欢迎讨论和问题反馈,用户可以在问题区提出自己的看法或疑问。
以下是项目的截图预览,展示了实际渲染效果。
总结来说,DFAO-Unity 是一个功能强大的开源项目,适用于那些需要高质量环境遮蔽和软阴影效果的Unity开发者。通过其独特的双层SDF技术和光线行进算法,该项目为Unity开发者提供了一种高效且易于实现的方法来提升场景的真实感。无论是静态场景还是包含少量可移动对象的场景,DFAO-Unity 都能够提供出色的视觉效果。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考