DLSS Implementation

启动 DLSS not available on this hardware/platform

需要把dll拷贝到客户端的启动目录下,之后根据客户端配置放到统一路径下

画面一直抖动,用ctrl + alt + F12 debug看jitter并没有生效

因为每一帧都重新initializeDLSSFeature,可能导致dlss并没有真正生效。 只在dlss配置有更新, or rende_target resolution有变或者最终的display resolution有更改时才重新initialize.

启用dlss有点模糊

校正motion vector

  • 把相机的位置作为新的世界坐标系原点
  • 但一些屏幕上很小的动态物缓慢运动时还是会糊 考虑是不是低LOD下的动画精度不够

pipeline

Alt text

motion vector resolve

在传入dlss之前,motion vector要做一些处理

  • 部分静态物的motion vector 默认给了(1, 1), 需要根据前后帧相机算出静态物的motion vector
  • dlss 需要的motion vector 是 prev_uv - current_uv,这个要弄对,我们引擎原先的mv正好是相反的
  • dlss需要的motion vector 是以像素为单位的,不是uv,所以要么在shader里给motion vector乘以resolution,或者DLSS参数的InMVScaleX, InMVScaleY要设置为resolution的值

depth upsampling

后处理在dlss pass 之后的depth需要upsampling到display resolution, 目前采用最简单的linear upsampling,但讲道理可能会有问题,比如motion vector之类的,需要验证。

exposure texture

我们游戏的关卡部分开了自动曝光,部分没开,试了下, exposure texture 如果给nullptr也不会有什么影响,可能底层给了默认值。

对于motion vector 很小的时候会有残影

P界面展示角色的时候,背景是很暗的纯色,人物有细微的动作,motion vector很小,出现残影。 exposure texture还是要给,哪怕是一张默认的图,不然会有ghosting, 在一些场景里。 最后发现刀盾还是motion vector为0导致的,因为之前TAA就碰到的一个问题,ammo的previous position

render target 重新创建的机制问题

DLSS开关,包括使用特定模式都会导致 RT 的 resolution 切换,这里要注意render target的切换以及其对其他pass的影响。

抖动,粒子bug

抖动 -- rigid instance 更新position有bug 粒子 -- viewport设置

quality

  • 1080p scale ratio要达到0.7效果才还可以
  • 4k balance模式下scale ratio在0.6左右,效果可以 昊京城关卡从56帧到72,提升10多帧,dlss耗时1.8ms
Copyright © tingxia.top 2021 all right reserved,powered by Gitbook该文件修订时间: 2022-08-03 16:22:17

results matching ""

    No results matching ""