UE5 图像优化
参考 https://dev.epicgames.com/documentation/en-us/unreal-engine/configuration-files-in-unreal-engine 修改 自用 Engine.ini
文件放到暖暖的安装路径里 ~\InfinityNikki\X6Game\Saved\Config\Windows\
修改完后,文件权限设置成只读,防止游戏启动时给抹掉。
[SystemSettings]
;分辨率
r.ScreenPercentage=66.7
;33.3=超级性能,50=性能,58=平衡,66.7=质量,100=DLAA。根据自己显卡负载选择
r.SecondaryScreenPercentage.GameViewport=100
r.NGX.DLSS.Preset=5 ;5=PresetE
;Lumen质量
r.AOQuality=2
r.Lumen.TraceMeshSDFs=1
r.Lumen.Reflections.Foliage=1
r.Lumen.RadianceCache.NumFramesToKeepCachedProbes=8
;Lumen漫反射精度
r.Lumen.ScreenProbeGather.ShortRangeAO=1
;1=启用ShrotRangeAO,0=启用SSAO
r.Lumen.ScreenProbeGather.RadianceCache.ProbeResolution=32
r.Lumen.ScreenProbeGather.RadianceCache.NumProbesToTraceBudget=1000
r.Lumen.ScreenProbeGather.DownsampleFactor=8
r.Lumen.ScreenProbeGather.TracingOctahedronResolution=16
r.Lumen.ScreenProbeGather.IrradianceFormat=0
r.Lumen.ScreenProbeGather.StochasticInterpolation=0
r.Lumen.ScreenProbeGather.FullResolutionJitterWidth=.5
r.Lumen.ScreenProbeGather.TwoSidedFoliageBackfaceDiffuse=1
r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.FullResDepth=1
r.Lumen.ScreenProbeGather.Temporal.MaxFramesAccumulated=32
r.Lumen.ScreenProbeGather.AdaptiveProbeMinDownsampleFactor=4
r.Lumen.ScreenProbeGather.IntegrationTileClassification=1
r.Lumen.ScreenProbeGather.ImportanceSample=1
;Lumen半透明漫反射精度
r.Lumen.TranslucencyVolume.GridPixelSize=32
r.Lumen.TranslucencyVolume.TraceFromVolume=1
r.Lumen.TranslucencyVolume.TracingOctahedronResolution=4
r.Lumen.TranslucencyVolume.RadianceCache.ProbeResolution=16
r.Lumen.TranslucencyVolume.RadianceCache.NumProbesToTraceBudget=1000
;LumenScene精度
r.LumenScene.Radiosity=1
r.LumenScene.Radiosity.ProbeSpacing=4
r.LumenScene.Radiosity.HemisphereProbeResolution=4
r.LumenScene.DirectLighting.UpdateFactor=32
r.LumenScene.SurfaceCache.AtlasSize=4096
r.LumenScene.SurfaceCache.CardCaptureRefreshFraction=0.125
;Lumen反射精度
r.Lumen.Reflections.Allow=1
r.Lumen.Reflections.DownsampleFactor=1
r.Lumen.TranslucencyReflections.FrontLayer.Allow=1
r.Lumen.TranslucencyReflections.FrontLayer.Enable=1
;视距相关
r.DetailMode=3 ;高细节模式
r.ViewDistanceScale=1 ;视距比例设置为1,增加可视距离范围,使远处物体更清晰
foliage.LODDistanceScale=1 ;植被LOD距离比例设置为1,增加植被细节的显示距离,使远处的植被更详细
;贴图相关
r.TextureQuality=4
r.MaxAnisotropy=16 ;各向异性过滤质量
r.MipMapLODBias=-1
;Mip MapLOD 偏移,默认为0,值越小越清晰,但是会Shaders出现严重摩尔纹效应,穿黑丝时推荐设置为1
;后期
r.Tonemapper.Quality=5 ;后期质量
r.Tonemapper.Sharpen=1 ;后期锐化程度,参数暂时失效
r.BloomQuality=5 ;柔光质量
r.DepthOfFieldQuality=3 ;景深质量
r.LensFlareQuality=3 ;眩光质量
;级联阴影
r.ShadowQuality=4 ;阴影质量设置为5
r.Shadow.CSM.MaxCascades=10 ;级联阴影最大数目,平滑过渡
r.Shadow.MaxCSMResolution=4096 ;级联阴影最大分辨率
r.Shadow.PerObject=1 ;启用每个对象单独计算阴影,提高阴影的准确性和细节
r.Shadow.CachedShadowsCastFromMovablePrimitives=1
;启用可移动物体投射的缓存阴影,减少实时计算,提高性能
r.Shadow.TexelsPerPixel=5
r.Shadow.PreShadowResolutionFactor=1.2
;预阴影分辨率因子设置为1.2,提高阴影的分辨率和质量
r.Shadow.Preshadows=1 ;启用预阴影,提高性能
r.Shadow.CachePreShadow=1 ;启用预阴影缓存,提高性能
;体积雾
r.VolumetricFog.GridPixelSize=4
r.VolumetricFog.GridSizeZ=128
r.VolumetricFog.HistoryMissSupersampleCount=16
;屏幕空间反射
r.SSR.Quality=4 ;屏幕空间反射质量设置为4,启用最高质量的反射效果,使反射更加逼真和清晰
r.SSR.Temporal=1 ;启用屏幕空间反射的时间抗锯齿,减少反射的闪烁和噪点,使反射更稳定
r.SSR.MaxRoughness=1.0
;设置屏幕空间反射的最大粗糙度为1.0,所有粗糙度值的表面都可以产生反射
r.SSR.HalfResSceneColor=0
;不使用半分辨率的场景颜色缓冲区进行屏幕空间反射计算,确保反射的高分辨率质量
;特效
FX.AllowAsyncTick=1
FX.BatchAsync=1
FX.BatchAsyncBatchSize=32
FX.EarlyScheduleAsync=1
fx.Niagara.AllowAsyncWorkToEndOfFrame=1
;光照
r.LightFunctionQuality=3
r.HighQualityLightMaps=1
;材质
r.MaterialQualityLevel=3
;抗锯齿
r.TemporalAA.Quality=2
r.TSR.History.R11G11B10=1
r.TSR.History.UpdateQuality=3
r.TSR.RejectionAntiAliasingQuality=2
r.TSR.ShadingRejection.Flickering=1
;TSR高质量
r.TSR.History.ScreenPercentage=200
r.TSR.Velocity.WeightClampingSampleCount=4
;TSR中质量
;r.TSR.History.ScreenPercentage=100
;r.TSR.Velocity.WeightClampingSampleCount=2
;优化相关设置
r.AllowGlobalClipPlane=1
;启用全局裁剪平面,允许使用全局裁剪平面进行场景裁剪,提高渲染灵活性
r.AllowDepthBoundsTest=1
;启用深度边界测试,优化深度相关的计算,提高渲染性能
r.UseClusteredDeferredShading=1
;是否启用支持的灯光的集群延迟渲染,0 为关闭(默认),1 为开启(实际上需要 SM5 才能真正开启)
r.ShaderPipelineCache.ClearOSCache=1
;是否启用操作系统级别的缓存清理,1 = 启用,在安装后清理着色器管线缓存,0 = 禁用,不清理缓存
r.EnableAsyncComputeTranslucencyLightingVolumeClear=1
;启用异步计算以清除半透明光照体积,提升性能,减少计算开销
r.AsyncCreateLightPrimitiveInteractions=1
;启用异步创建光源与原始交互,提升性能,通过并行处理减少延迟
;其他杂项
lod.TemporalLag=0
a.URO.ForceAnimRate=1
;光追,失效
;r.Lumen.HardwareRayTracing=True
;r.Lumen.HardwareRayTracing.LightingMode=2
;r.Lumen.TranslucencyReflections.FrontLayer.EnableForProject=True
;r.RayTracing=True
;r.RayTracing.Shadows=True
;r.DistanceFields.SupportEvenIfHardwareRayTracingSupported=0
;DLSS-RR,依赖光追
;r.NGX.DLSS.denoisermode=1
;r.Lumen.Reflections.BilateralFilter=0
;r.Lumen.Reflections.ScreenSpaceReconstruction=0
;r.lumen.Reflections.Temporal=0
;r.Shadow.Denoiser=0
;关掉Lumen反射,启用SSR与Lumen粗糙反射混合。堡垒之夜Xbox方法,但性能没提升,先关了
;r.ReflectionMethod=2 ;启用SSR
;r.Lumen.Reflections.Allow=0 ;关闭Lumen反射
;r.Lumen.Reflections.RadianceCache=1 ;Lumen提供粗糙反射,与SSR混合
然而就会出现一个问题,就是黑丝这种高密度半透明网格的 moiré pattern 会特别严重。
死去的图形学记忆冲击着我,啊 是 MipMap LOD 偏移!
摩尔纹: Shaders 与 MipMap LOD Bias
r.MipMapLODBias=1
4K 屏上给调成 1 还可以接受,画面细节也还可以;
但是在 2K 屏测试,用 1 档偏移还是挺严重的,全局 2 档的化其他画面细节又会损失太严重了
穿个黑丝好难😭

抽卡过程逆向
无限暖暖整个登录流程和抽卡数据获取都是走的 HTTPS ,直接 Fiddler 安装好根证书就可以解码

反倒是卡拉彼丘的战绩查询要难获取得多
虽然启动器是套壳 Edge 还是 WebKit 来着走的腾讯游戏数据接口
但只能抓取当前登录账号的数据,不能查 MMR 队友的水表😠
而游戏内的数据封包只能靠调试来二进制来分析
SDK DUMP
然后就来注入调试一下无限暖暖吧
Unreal Engine 5.4.4
Outdated
Offsets (Global):
Code:
GObjects = 0x09CE1CF0;
AppendString = 0x0091BDC0;
GNames = 0x09BF4280;
GWorld = 0x099AA670;
ProcessEvent = 0x00B352F0;
ProcessEventIdx = 0x0000004D;
Anti-Cheat: ACE
Working injector: GearInjector
DUMP 出的 SDK 