DLSS Implementation
- 启动 DLSS not available on this hardware/platform
- 画面一直抖动,用ctrl + alt + F12 debug看jitter并没有生效
- 启用dlss有点模糊
- pipeline
- motion vector resolve
- depth upsampling
- exposure texture
- 对于motion vector 很小的时候会有残影
- render target 重新创建的机制问题
- 抖动,粒子bug
- quality
启动 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
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