It works perfectly fine with RTSS, just don’t turn on RTSS’s framerate limiter because it sucks
There’s no need for any new config files, just set TargetFPS= to whatever you want.
It works perfectly fine with RTSS, just don’t turn on RTSS’s framerate limiter because it sucks
There’s no need for any new config files, just set TargetFPS= to whatever you want.
After I updated to the Sept 10 2020 version I can no longer see any RTSS stats just on this game and I’ve ensured I have toggled it on. Very strange.
It could be the Steam overlay, it tends to cause problems with RTSS in D3D12 games. Disabling the Steam overlay could fix the problem.
They’re normally compatible things, but for some reason the combination of Special K + Steam overlay + RTSS makes Steam and RTSS not like each other, lol.
It used to work before I updated to the latest version, My other steam games work fine until now. I have my steam overlay disabled.
I am still using local injection maybe thats factor ? If I start to use global where can I modify the config files ?
Global Injection stores the config files in Documents\My Mods\SpecialK\Profiles<Game Name>, it’s easier if you just use SKIF because it has a button you can click to open the config file.
Yes I use SKIF, I didnt know it was clickable until your post. I’ll switch to global after this game session
If I dont have SKFI running, RTSS is fine. I delete dxgi.dll and dxgi.ini, launched global injection.
Game crashes back to menu windows , no RTSS display.
EDIT:
It only crashes if I dont use the recommended config files
This is the latest settings I can find, are there further changes needed on it to improve performance ?
Half those settings don’t even do anything in the latest version of Special K, where are you getting them from?
SwapChainWait=82
that is either 0 or some value not equal to zero now, tuning a specific value makes no difference anymore. LimiterTolerance
is no longer a thing, that was eliminated in V 0.11.0.45 or so if I recall.
Really these settings are optimal, the engine doesn’t let you change the backbuffer count or I would include an override for that.
You should be doing local injection. Not using skif for Horizon Zero Dawn.
The config file should look similar to this:
[API.Hook]
LastKnown=128
d3d9=false
d3d9ex=false
d3d11=false
OpenGL=false
d3d12=true
Vulkan=false
[Window.System]
Borderless=true
Center=true
Fullscreen=true
[Render.FrameRate]
TargetFPS=30.0
SleeplessRenderThread=true
SleeplessWindowThread=false
EnableMMCSS=true
MaxBusyWaitPercent=0.666
PreRenderLimit=3
BackBufferCount=2
PresentationInterval=1
LimitEnforcementPolicy=2
[Render.DXGI]
UseFlipDiscard=true
AllowTearingInDWM=true
DropLateFrames=true
SwapChainWait=1
[Macro.Latency]
Ctrl+Shift+1=LimitSite 2
Ctrl+Shift+2=LimitSite 4[
Latest SK to use with Horizon Zero Dawn
Someone posted it on this thread, I cannot recall who it was, So I just need to change the target FPS and nothing else ?
Hello!
Yes, looks good. TargetFPS is the most important. Find out what’s good for your GPU.
You could change “SwapChainWait=66” too, but that shoudn’t make no difference anymore.
Very important is PresentationInterval=1. I had the last weeks =-1, so i had seen a lot of tearing.
Now tried =1 and WOW, the benchmark gives me flat line 60 FPS for GPU.
I don’t know, if MaxBusyWaitPercent=0.825 is good enough for my RX 5700 XT & 60Hz monitor?
And if RefreshRate=-1.0 better set to RefreshRate=1.0 ?
I use SK 0.11.0.45 for borderless gaming. Make it sense to use the new SK 0.11.0.48?
Is there something new or better for HZD?
Best regards, TM
The MaxBusyWait setting generally isn’t a big deal unless you are targeting really low framerates and the CPU might spend long periods of time just checking the clock to see if it’s time to feed the GPU a new frame yet or not. If your TargetFPS is high (e.g. 60+ FPS), it’s likely your CPU is waiting on the GPU rather than the other way around and it really doesn’t matter how efficient or inefficient the CPU is being.
I don’t suggest anyone mess with that setting, I’ve tuned it for like 98% of cases.
As for PresentationInterval, turning V-SYNC on in game would have accomplished the same thing
-1 = use the game’s setting and this interval is what defines V-SYNC (0=Off, 1= Sync every refresh, 2 = Sync every 2 refreshes, …).
And regarding Special K v 0.11.0.48, I’d say avoid it for now. I have fixed a bunch of issues that it introduced, but am not yet ready to release 0.11.0.49. When .49 is released, that will be the stable version you want.
Thanks - I like your work. Have a good time while evolving further into DirectX12 games.
TargetFPS and PresentationInterval I know from reading the thread.
What can you tell me about this?
Should be the monitors refresh rate but you have the option to specify more precise values like 59.94 instead of 60
-1 or -1.0 should be leaving it to application controlled instead of overriding it.
Using really low values will hopefully do similar or revert to the lowest supported at least.
EDIT: Although I do not know if 59 / 60 is much of a big deal anymore with SpecialK.
Some displays round it to 59 others to 60 when the internal could be 59.24 I think or 59.94 for when it’s rounded down or up to the nearest full value.
(Might see 59Hz as a option in the OS for configuring the screens refresh rate for example.)
It’s also better if you use RescanRatio instead of RefreshRate for D3D11/D3D12.
DXGI supports fractional refresh rates but if you try to express them in decimal form it usually leads to rounding errors and D3D11/12 not actually finding a matching resolution / refresh rate combination.
So, for say 60.0 Hz you could use RescanRatio=60000/1000, for 59.94, you could use 59940/1000.
The RefreshRate setting in the INI file will be computed from RescanRatio, but it’s going to get some floating-point errors. SK will always use RescanRatio to ask for a refresh rate without these rounding problems if it sees the ratio in the INI file.
If I could draw SK’s control panel in D3D12, this would all be much simpler. The “Display” menu has a drop-down list for refresh rate overrides that does the ratio stuff for you and you’d never have to know any of this
Okay thx, then forcing RescanRatio=60/1 and RefreshRate=60.0 is not required to get (more?) stable 60Hz?
RescanRatio=-1/1 & RefreshRate=-1.0 should be still more flexible, if I forgot after seeing movie in 25 (50) Hz to change back to 60 Hz for my monitor (TV) or something else, isn’t it?
Info: FreeSync is not possible with my TV, so 60 Hz is my best option for gaming.
And still another question to this:
I’ve got SwapChainWait=66 in my dxgi.ini, should this stay or is SwapChainWait=10 better?
I’ve mixed some of the advices here & using sk-file “borderless+fullscreen” from 2020-08-14 3:27.
What’s wrong with using the in-game refresh rate settings?
If you need to use a different refresh rate than your desktop, this is about the only remaining use-case for Fullscreen Exclusive mode. I avoid Fullscreen Exclusive whenever possible because windowed mode is, contrary to popular belief from non-developers, capable of fine-tuning latency with more precision than fullscreen exclusive.
Incidentally, I run my 4K OLED at 50 Hz because I like the flicker
Its Black Frame Insertion is higher contrast than 60 Hz is. That one scenario aside, I usually just go with whatever the desktop’s running at for refresh.
===
If you’re using the standalone version of Special K that has been linked a few times in the past few posts, the value of SwapChainWait
no longer matters, it is either off (set to 0) or on (any other value). The behavior is the same no matter what non-zero value you use now.
While on this discussion, setting SwapChainWait
will prevent you from using Fullscreen Exclusive mode (this is one of those advanced features only available in windowed mode). So you’re actually shooting yourself in the foot here, you can’t have both a fullscreen refresh override and a waitable swapchain.
I didn’t want anything but knowing. And now I know.
I use SK 0.11.0.45 in borderless mode @ 60 Hz. All is fine.
Hello everyone, first of all, thank you for all the wonderfull job done with this game!
i have a simple question. Is recommend using G-Sync + Specialk limiter + in game/nvidia v-sync or i can use SpecialK waitable swapchains method + G-Sync (V-sync in game/nvidia disabled).
Don’t disable V-Sync with a waitable swapchain, there’s no point in waiting on the swapchain without V-Sync. The entire point of waitiable swapchains is to efficiently delay the submission of a finished frame until the GPU is ready to accept a new one.
If you get that wait behavior perfectly correct, it eliminates penalties for V-Sync.
SK gets it perfect