[Unity] 【转载】Unity Experimental DXR项目介绍--实时光线追踪功能

查看:929 |回复:3 | 2019-11-26 20:07:30

您需要 登录 才可以下载或查看,没有账号?注册

x
Unity正在与NVIDIA进行紧密的合作,解决光线追踪功能的难题。此项技术模拟了光线的物理属性,帮助开发者能够制作并动态调整作品,使实时效果和现实画面的界线变得模糊。





我们发布了Unity Experimental DXR项目,帮助开发者尝试Unity的实时光线追踪功能,本文将详细介绍DXR项目。

小提示:建议你提前阅读英伟达的技术工程师李元亨在Unite 2019大会上的演讲《Unity中的实时光线追踪技术剖析》,以便你熟悉和了解光线追踪技术。

63e3016f-151d-4899-80e7-a2d6a02a42e0_640.jpeg


DXR项目

DXR项目一个是基于Unity 2019.2a5的实验性自定义版本,该Unity版本和其中的HDRP 5.8.0版得到了DXR支持的增强,该项目仅适用于Windows系统,支持DX12 API。

该项目是一个让开发者尝试Unity实时光线追踪功能的沙盒环境。目前它仍处于原型状态,DXR的最终实现会和该版本不同,所以暂不能用于任何正式制作。

下载DXR

下载Unity支持DXR的实验性版本:https://github.com/Unity-Technologies/Unity-Experimental-DXR/releases

配置要求

1、安装最新驱动的NVIDIA RTX系列显卡:https://www.nvidia.com/Download/index.aspx?lang=com

2、Windows 10 RS5 (Build 1809)或更高版本

安装步骤

下载项目并且解压文件,启动Unity并创建一个新项目。选择DXR High Definition RP (Preview),该选项会设置DXR沙盒项目和HDRP资源包。



在3D SCENE文件夹中,打开Indoors.unity场景。



单击Play查看场景,我们可以在运行模式下启用或禁用光线追踪效果。默认情况下,光线追踪效果仅在游戏视图中可见。



Ray Tracing光线追踪功能配置

为了使用光线追踪功能,我们需要创建光线追踪环境,项目提供的场景内已经创建好该环境。



光线追踪环境检视窗口允许配置多个光线追踪的效果,并全局禁用或启用光线追踪。



Ray Bias(光线偏移):允许移动光线起点,以避免光线自相交现象。

Raytrace SceneView(光线跟踪场景视图):允许在场景视图启用光线追踪效果,否则光线追踪效果仅在游戏视图可见。

通常对艺术家而言,在没有光线追踪效果时在场景进行定位会更简单,特别是在光线追踪场景性能消耗较大的情况下。

其它设置:配置不同效果,每个效果上都有图层遮罩,可以控制效果要考虑到的对象。如果对象和效果不在相同图层,该效果不会对对象产生影响。

光线追踪效果

光线追踪环境遮蔽



AO Layer Mask(AO图层遮罩):控制哪些对象是效果的一部分。

AO Number of Samples(AO采样数量):采样数量越大,获得的质量越高,但同时会提高性能消耗。建议为实时性能使用4个采样数量。

Max AO Ray Length(最大AO光线长度):控制光线在视为丢失前移动的最大距离长度,设为较低数值能提高性能。

AO Filter Mode(AO过滤模式):其中降噪器类型包括:None,Spatio Temporal和NVIDIA denoiser。它下面的设置取决于所选的降噪器,让开发者能以不同性能消耗控制质量。



光线追踪反射

Ray-Traced Reflections可以为场景添加反射效果,并在启用时替换屏幕空间反射。



Reflections Layer Mask(反射图层遮罩):控制哪些对象属于效果的一部分。

Max Reflections Ray Length(最大反射光线长度):控制光线在视为丢失前移动的最大距离长度,设为较低数值能够提高性能。

Reflections Blend Distance(反射混合距离):未使用。

Reflections Min Smoothness(反射最小光滑度):设定使用光线追踪反射需要的最小光滑度数值,否则像素会使用反射探针或天空。

Reflections clamp values(反射限制数值):定义在预曝光空间中用于降低荧光效果的阈值,请尝试把该值设为1以上,以使泛光效果保持在一定强度。

Reflections quality(反射质量):其有二个选项:QuaterRes和Integration。

使用QuaterRes时,反射会对每个像素进行一次采样并通过时间积累来渲染,因此会渲染为完整屏幕的1/4。使用Integration时,反射会使用每个像素的采样光线数量在整个屏幕进行渲染。

在二种情况下,降噪器都会在最后应用,并使用可控制的过滤半径,设为较大半径会减少性能消耗。

Integration选项即完整分辨率的效果示例。



  1/4分辨率的效果示例,提升性能后很难看出区别。





反射效果能够在视椎体外反射光线和对象。为了解决这个限制,我们可以生成光线集群,并应用到光线追踪着色器上。

光线集群是64x64x32的体素,它的大小由Cluster Range集群范围,即围绕摄像机中心的一半体素范围进行定义,并且带有每个Cluster Cell Max Lights单位设定的最大光线数量。

光线追踪矩形区域光

Ray-Traced Shadows(光线追踪矩形区域光)设置可为纹理矩形区域光启用光线追踪区域阴影。



Shadow Layer Mask(阴影图层遮罩):控制哪些对象属于该效果的一部分。

Shadow Num Samples(阴影采样数量):采样数量越大,获得的质量越高,但同时会提高性能消耗。建议为实时性能使用4个采样数量。

Max Num Shadows(最大阴影数量):设置场景允许的光线遮罩区域阴影数量,当达到最大数量时,额外的光线不会产生阴影。

Shadow Bilateral Radius(阴影双侧半径):控制降噪器内使用的模糊核心大小,设为较大数值能减少噪声,但会提高性能消耗。

Split Integration(分离集成):当启用该选项时,所有阴影采样会逐个执行,而不是同时执行所有采样。这样可以提高大型区域光的性能,开发者需要测量该选项的影响,从而知道它对当前应用程序是否有价值,该选项不会改变质量。



主要可见性光线追踪

Primary Visibility Raytracing使用光线追踪渲染对象。和其它依赖副光线的效果不同,该效果的目标是渲染出光滑的透明对象,尽管它也能作用于不透明对象。该效果仅支持光滑对象,即没有粗糙折射效果的对象。



Primary Visibility Layer Mask(主要可见性图层遮罩):控制哪些对象属于该效果的一部分。

Raytracing Maximal Depth(光线追踪最大深度):定义光线在和对象相交时,允许触发其它光线的次数,该属性能得到递归的平滑反射和折射效果。

下面是Maximal Depth为不同数值时,二个玻璃的渲染效果比较。

当Maximal Depth最大深度设为1。



当Maximal Depth最大深度设为5。



当Maximal Depth最大深度设为7。



  Raytracing Ray Length(光线追踪长度):控制光线在视为丢失前移动的最大距离长度,设为较低数值能够提高性能。

为了让对象在该效果启用时通过主要可见性效果(Primary-Visibility)渲染,我们要编辑对象材质,在Rendering Pass属性选择Raytracing。



间接漫反射光照

Indirect Diffuse Lighting允许给场景添加一个漫反射光照效果。它处于非常早期的状态,开发者可以强制实现该效果,但它不能用于实时开发的目的。该效果更多地是用于参考。



Indirect Diffuse Layer Mask(间接漫反射图层遮罩):控制哪些对象属于该效果的一部分。

Indirect Diffuse Num Samples(间接漫反射采样数量):采样数量越大,得到的质量越高,但同时会提高性能消耗。建议使用至少16个采样,以得到反弹光照的大致效果。

Indirect Diffuse Ray Length(间接漫反射光线长度):光线在回退为天空光照前的最大距离,设为较低数值能够提高性能。

Indirect Diffuse Ray clamp values(间接漫反射光线限制值):定义在预曝光空间中用于降低荧光效果的阈值,请尝试把该值设为1以上,以使泛光效果保持在一定强度。

Indirect Diffuse Filter mode(间接漫反射过滤模式):使用时间和空间过滤器来得到没有噪声的结果。

调试

你可以使用调试菜单检查不同效果的结果,依次点击Windows -> Analysis -> Render Pipeline Debug,选择Lighting部分,然后选取Fullscreen Debug Mode全屏调试模式。




  • SSAO模式允许你查看光线追踪AO效果。
  • ScreenSpaceReflections模式允许查看光线追踪反射效果。
  • IndirectDiffuse模式允许查看到间接漫反射效果。
  • PrimaryVisibility模式允许查看主要可见性遮罩。
  • LightCluster模式允许查看光线集群内的光线。




Light cluster(光线集群):画面的颜色表示照射该区域的光线量,以不同的黄色深度表示,红色表示光线的最大预算。


材质制作


DXR实验性版本仅支持光线追踪的Lit和Unlit材质,而且仅支持HDRP/Lit着色器视图版本。


在为光线追踪使用材质时,目前该版本不支持任何Mipmap LOD。HDRP资源仅支持Lit Shader Mode为Deferred Only。








评分

参与人数 2元素币 +33 活跃度 +12 展开 理由
源支始 + 13 + 12 【点赞】这很有大网气质!
元素界王神 + 20

查看全部评分

2019-11-26 20:07:30  
 赞 赞 1

使用道具 登录

3个回答,把该问题分享到群,邀请大神一起回答。
2#
谢谢分享经验~!
回复 收起回复
2024-11-11 22:11:34   回复
 赞 赞 1

使用道具 登录

3#
回复 收起回复
2025-3-28 09:37:27   回复
 赞 赞 0

使用道具 登录

CG 游戏行业专业问题

手机游戏引擎手游引擎Unity3D技术
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表