kanisen 发表于 2019-11-26 20:07:30

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

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





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

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



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资源包。

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/483517c8-6289-4b20-ad47-ddac0ca283ff_640_1.jpeg

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/a0d9f17e-12e4-45e0-ba8a-c72a0619caef_640_2.jpeg

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/d49dd7e4-9e2b-498c-af05-8599cebbda61_640_3.jpeg

Ray Tracing光线追踪功能配置

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/e2dc0623-7f91-4592-bd08-a441a7ffc460_640_4.jpeg

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/be8a0e97-b2aa-410c-bbf6-1a5488ca026f_640_5.jpeg

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

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

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

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

光线追踪效果

光线追踪环境遮蔽

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/ccdc2dd5-8299-4a9e-8676-c3019645a538_640_6.jpeg

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

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

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

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/ed7b7396-5fd7-4ce2-a478-1140b5ecaf9c_640_7.jpeg

光线追踪反射

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/6e00aef9-879d-4645-be0c-5066e9bf8475_640_8.jpeg

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选项即完整分辨率的效果示例。

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/5bb62b98-36b3-4e0f-b550-14da1c71a3fd_640_9.jpeg

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/bea73048-3465-4ade-8892-4a029f933bf0_640_10.jpeg

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/5f6ce957-4989-449d-9f49-adfada0139c1_640_11.jpeg

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

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

光线追踪矩形区域光

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/a8feacce-e108-466d-be96-e44483634947_640_12.jpeg

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

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

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

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

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/2f448cb9-3cc9-47cf-bdb3-d66e109a8fed_640_13.jpeg

主要可见性光线追踪

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/296d1f67-6e0d-4f55-a738-4ab948f1db2b_640_14.jpeg

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

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

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

当Maximal Depth最大深度设为1。

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/6831d5ff-018f-484b-b05d-5c51a65c23e7_640_15.jpeg

当Maximal Depth最大深度设为5。

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/48a0a78d-fd6f-4223-9b01-690b7eb1bd8d_640_16.jpeg

当Maximal Depth最大深度设为7。

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/ccc320f6-b475-4b68-bf56-1e8e67b62bd7_640_17.jpeg

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

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/b435636a-1c27-4a6f-a2ed-9ccb13eaf93f_640_18.jpeg

间接漫反射光照

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

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/fac1129a-cbeb-48b2-9543-62b6fb5a09ab_640_19.jpeg

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全屏调试模式。

https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/bffa7d03-a4c0-4af2-a863-c2c8b329a9b0_640_20.jpeg



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


https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/cfe4bebb-6a98-45d8-9571-fc7a3eee7700_640_21.jpeg

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


材质制作


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


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


https://connect-cdn-prd-cn.unitychina.cn/20190611/p/images/c082d9a0-6af6-4a6c-8f18-4bf0c485ae1a_640_22.jpeg





Weidaliya 发表于 2024-11-11 22:11:34

谢谢分享经验~!

导弹 发表于 2025-3-28 09:37:27

{:1_229:}
页: [1]
查看完整版本: 【转载】Unity Experimental DXR项目介绍--实时光线追踪功能