4.0

  • crosire
  • Topic Author
More
5 years 4 months ago - 5 years 4 months ago #1 by crosire 4.0 was created by crosire
It's time for the big update! I spent the last couple of months completly rewriting the ReShade FX compiler from ground up. This new compiler is now fully standalone, blazing fast, has much better error recovery (Got a syntax error in your code somewhere? No problem, it will try and finish compiling anyway.), better support for various code features (array assignments and switch statements work properly now) and paves the future for Vulkan support (it can now not only generate HLSL and GLSL, but also SPIR-V). But that's not all. ReShade got a major UI overhaul to make working with it even more productive. This includes an in-game code editor, texture preview, many changes to variable editing to make it more accessible and lots of new styling options to customize the UI to your likings.

Note: Because of the compiler changes, a very small amount of effects may no longer compile in ReShade 4.0 (if they are using intrinsic functions in constant expressions). These need to be updated by their authors. But all effects in the standard repository do work.

The default keyboard shortcut for opening the in-game overlay has changed to the "Home" ("Pos 1" on some keyboards) button.

Because images are more descriptive than a thousand words:



Improved error handling and code editor in action:

New styling settings:

Docking system thanks to github.com/ocornut/imgui/issues/2109 :


Changelog

4.0.0:
  • Rewrote ReShade FX compiler from ground up to generate SSA code (way too many changes to list them all)
  • Added #line directives to HLSL/GLSL output for better error messages when HLSL/GLSL compilation fails
  • Added error for array declarations without a size
  • Added error when attempting to cast arrays
  • Added variable name to error messages referring to variables
  • Added context menu to variable widgets with option to reset them to their default value
  • Added option to display boolean values as combo box instead of checkbox (via < ui_type = "combo"; >)
  • Added option to save preset and settings with screenshot
  • Added in-game code editor
  • Added experimental variable editing UI which uses tabs instead of trees (disabled by default, can be enabled in settings)
  • Added progress bar to loading progress on splash bar
  • Added separate FPS and frame time overlay and changed their font to the same as the UI
  • Added radio button widget (via < ui_type = "radio"; ui_items = "Button 1\0Button 2\0...\0"; >)
  • Added support for "ui_tooltip" annotation to techniques
  • Show techniques belonging to effects that failed to compile in the technique list
  • Updated to latest ImGUI with support for docking
  • Changed effect loading to use multiple threads for initial compilation with the ReShade FX compiler and only compile the generated HLSL/GLSL code for those effects that are enabled
  • Delayed effect loading to the first frame
  • Changed default keyboard shortcut to open the UI to "Home"
  • Changed default color scheme (thanks to CeeJay)
  • Changed drag widget to a slider widget (old one is still available via < ui_type = "drag2"; >)
  • Changed font scaling to actually re-create the font atlas with a different font size instead of scaling the atlas texture
  • Changed setup to use relative search paths by default
  • Changed setup to select Steam installation directory by default if present
  • Create a default preset file on launch if none exists (so no changes are lost if the user forgot to create one)
  • Reworked styling settings
  • Reworked various UI widgets (e.g. search path selection, preprocessor settings, ...)
  • Reworked statistics UI design and added texture preview
  • Improved performance of update loop for special uniform variables (those with a < source = ...;> annotation)
  • Fixed text input not working if raw input is used with legacy keyboard messages disabled
  • Fixed mouse cursor being reset to the window corner on first call when input blocking is active
  • Fixed race condition when accessing input causing ReShade to ignore keyboard strokes sometimes
  • Fixed errors staying on splash screen after reloading shaders
  • Fixed crash when constant folding encounters a divide by zero expression
  • Fixed implicit type conversion rules for functions with multiple parameters
  • Fixed window becoming inactive when global alpha is set to zero
  • Fixed LOD bias for textures with auto-generated mipmaps in D3D9
  • Fixed crash if sampler bindings exceed the input resource slot limit in D3D10/D3D11
  • Removed API specific effect compilers and instead handle everything in standalone ReShade FX compiler
  • Removed support for custom #pragma directives
  • Removed user name filtering from log output
  • Removed support for intrinsic functions in constant expressions from ReShade FX compiler
  • Removed performance mode hint popup (should be obvious enough with the checkbox now)
  • ...

4.0.1:
  • Added option to change the clock format
  • Changed slider widget to be used with < ui_type = "slider"; > instead of < ui_type = "drag"; >
  • Changed "Show HLSL/GLSL" button to toggle the editor window
  • Fixed issues with UI elements disapearing in some OpenGL games
  • Fixed crash when using special keys for toggle keys
  • Fixed ReShade forcing OpenGL contexts to OpenGL 4.5, when 4.3 is enough
  • Fixed shader creation failure on D3D10/11 devices with non-default feature level
  • Fixed using "continue" statement causing the compiler to generate infinite loops
  • Fixed text editor not being cleared when reloading effects

4.0.2:
  • Added option to uninstall ReShade to setup tool
  • Added column to technique list that shows the toggle key bound to a technique
  • Added cursor animation reset when selecting or entering text in code editor (so it looks like how other text editors behave)
  • Added checkerboard background to texture preview, so alpha blended textures are more visible
  • Changed search box to only filter techniques and not uniforms
  • Fixed keyboard shortcuts not being ignored while editing text in code editor
  • Fixed code editor not being cleared after pressing the reload keyboard shortcut
  • Fixed crash if user entered certain keyboard shortcut values in the configuration
  • Fixed "glClipControl" being called on OpenGL 4.3 contexts where this function does not exist (it exists since 4.5)
  • Fixed button to edit preprocessor definitions not staying at the top of the variable list
  • Fixed background dock space overlapping windows when dragging them around (which made it really hard to dock to windows together)
  • Fixed relative effect and texture search paths not starting at DLL location
Last edit: 5 years 4 months ago by crosire. Reason: Updated to 4.0.2
The following user(s) said Thank You: Wicked Sick, CeeJay.dk, Kleio420, ninjafada, Alex_outer, Tom Yum 72, SpinelessJelly, sajittarius, klotim, brussell and 54 other people also said thanks.
The topic has been locked.
  • Kleio420
More
5 years 4 months ago #2 by Kleio420 Replied by Kleio420 on topic 4.0
its just nice your still willing to push updates out for this
The topic has been locked.
  • klotim
More
5 years 4 months ago - 5 years 4 months ago #3 by klotim Replied by klotim on topic 4.0
Thank you for the update.
It doesn't work for Diablo 2 anymore tho...
Works fine with 3.4.1

Log:
Warning: Spoiler!
Last edit: 5 years 4 months ago by klotim.
The topic has been locked.
  • Fruitrocket
More
5 years 4 months ago - 5 years 4 months ago #4 by Fruitrocket Replied by Fruitrocket on topic 4.0
Man, this new update makes me feel like Steven Seagal...

Ain't nobody gonna have a chance against my killer graphics! :evil:
Last edit: 5 years 4 months ago by crosire. Reason: Remove FSK18 grade graphics (sorry)
The following user(s) said Thank You: Aelius Maximus
The topic has been locked.
  • Wicked Sick
More
5 years 4 months ago - 5 years 4 months ago #5 by Wicked Sick Replied by Wicked Sick on topic 4.0
Thanks a lot, Crosire!

EDIT:

Man, just tried it real quick, have to work tomorrow and it is already 1 am over here. but, my god, this is the best GUI for ReShade so far, and the shaders load so freaking fast really!!

Amazing work!

Just one thing, is it possible to hide the seconds of the clock?
Last edit: 5 years 4 months ago by Wicked Sick.
The topic has been locked.
  • sets
More
5 years 4 months ago #6 by sets Replied by sets on topic 4.0
can you make it so we can drag the main windows ? i want to drag it to the fight side of my screen but looks like it's locked on the left side on V4.0
The topic has been locked.
  • BlueSkyKnight
More
5 years 4 months ago - 5 years 4 months ago #7 by BlueSkyKnight Replied by BlueSkyKnight on topic 4.0
Thank you for your hard work.

The new in-game shader editing makes like a lot easier thank you so much for this.

Where I list game crashing problems with this release? Is it ok if I post here or do I post it in troubleshooting?

Opengl problems :P...
Last edit: 5 years 4 months ago by BlueSkyKnight.
The following user(s) said Thank You: flyynn
The topic has been locked.
  • NotAgOat
More
5 years 4 months ago #8 by NotAgOat Replied by NotAgOat on topic 4.0
Dude this is incredible! We really appreciate the insane amount of work you invest in this thing. I basically reshade every single game I play at this point.
The topic has been locked.
  • Mike Gous
More
5 years 4 months ago #9 by Mike Gous Replied by Mike Gous on topic 4.0
The HighPassSharpStrength in my ini file =2.000. In the Reshade Menu against HighPassSharpStrength the slider shows then that it is already at it's maximum. That means I cannot increase the strength say to 3. The only way to change it to 3 is to quit the game and make the amendment in the inI file. In some games I even use a strength of 20.
What I actually want is for the maximum of HighPassSharpStrength in the Reshade Menu to be increased, if possible.
The topic has been locked.
  • Mike Gous
More
5 years 4 months ago #10 by Mike Gous Replied by Mike Gous on topic 4.0
Sorry. I see if I go to Statistics on the Reshade Menu I can edit the maximum. I am still learning. Very good job Crosire. :)
The topic has been locked.
  • seri14
More
5 years 4 months ago #11 by seri14 Replied by seri14 on topic 4.0
Please remove me from changeset. or replace to "requested from user"
My change has completely overwritten
The topic has been locked.
  • OtisInf
More
5 years 4 months ago - 5 years 4 months ago #12 by OtisInf Replied by OtisInf on topic 4.0
Great stuff! :)

(edit)
Works great in AC:Odyssey.

Though one thing I really don't like is the switch to sliders: they're much more imprecise. E.g. the manual focus parameter in cinematic dof is changing very smoothly when using the old drag widget, but with 4.0 it's a slider and this moves with chunks. Even if I use ALT while dragging it doesn't make a difference. This makes using the UI clunky as it's less precise and less smooth. (or in other words: cumbersome). for some values a 'slider' might be a good choice, but the ui_step is not really effective. (In fact, the slider always seems to slide with 0.5 steps, no matter what I specify in ui_step, which is set to 0.001)

So what to do? Change all drag to drag2 in all shaders, or do you want to make a change in 4.0 where you revert this change and simply make drag2 the 'slider' widget? There's little time tho. As soon as people see this change and will change their shaders from drag to drag2 to get the precise control back, there's no way to revert this change.

(edit) I can't move (or close it with X) the window either Martigen, so that's a bug.

(edit) Digging through the ImGui source, Slider widgets don't really use a speed, compared to drag widgets. So the ui_step value isn't used while dragging, only when you click the buttons (which is tedious if you have to click a LOT while dragging would solve that).

I'd really like to see this change reversed! If not, I'll change all my shaders asap.
Last edit: 5 years 4 months ago by OtisInf.
The topic has been locked.
  • Martigen
More
5 years 4 months ago - 5 years 4 months ago #13 by Martigen Replied by Martigen on topic 4.0
Incredible Crosire! Amazing changes and the new compiler is blindingly fast! I had to enable a bunch of shaders and disable Performance mode before I saw the loading bar, and that was only for a split-second!

Some issues I've found -- don't know if this is just me, but tested across two games, one D3D11 one OpenGL, 64-bit dll and 32-bit dll respectively:
  • I can't seem to move the Reshade window, it's locked on the left side of the screen. I can resize it horizontally, but that's all.
  • The 'X' close button at the top right of the window doesn't work
  • I can't see a way to individually assign a key to a shader or group of shaders any more?

And one suggestion:
When clicking the 'Show HLSL..' code window, make pressing it again close the window (so it acts like a toggle). Right now you need to click 'X' on the top right to close it (this close button works!).
Last edit: 5 years 4 months ago by Martigen.
The topic has been locked.
  • ShoterXX
More
5 years 4 months ago #14 by ShoterXX Replied by ShoterXX on topic 4.0
Man, if i weren't so sleep-deprived right now, I'd jump into it!
The topic has been locked.
  • ixthUA
More
5 years 4 months ago #15 by ixthUA Replied by ixthUA on topic 4.0
I tried in several directx9 applications, first start is fine - i can create a profile and configure shaders, but on 2nd start games freeze like this: i.imgur.com/uBllRT6.png
The topic has been locked.
  • crosire
  • Topic Author
More
5 years 4 months ago - 5 years 4 months ago #16 by crosire Replied by crosire on topic 4.0

Wicked Sick wrote: Just one thing, is it possible to hide the seconds of the clock?

Arrg. First people want seconds on the clock, now they want them removed again =D. It's not possible right. Will probably add an option for this.

sets wrote: can you make it so we can drag the main windows ? i want to drag it to the fight side of my screen but looks like it's locked on the left side on V4.0

It's not locked exactly. You can drag the tabs individually and all dock them on the right side of the window (see GIF in first post).

BlueSkyKnight wrote: Where I list game crashing problems with this release? Is it ok if I post here or do I post it in troubleshooting?

Troubleshooting section as usual.

Mike Gous wrote: What I actually want is for the maximum of HighPassSharpStrength in the Reshade Menu to be increased, if possible.

I advise to go trough the tutorial ReShade gives on first launch =). You can always Ctrl + click on a value to set it to something out of bounds (this is mentioned in said tutorial).

seri14 wrote: Please remove me from changeset. or replace to "requested from user"
My change has completely overwritten

You still did the inital implementation and had the idea. Credit where credit is due.

OtisInf wrote: So what to do? Change all drag to drag2 in all shaders, or do you want to make a change in 4.0 where you revert this change and simply make drag2 the 'slider' widget? There's little time tho. As soon as people see this change and will change their shaders from drag to drag2 to get the precise control back, there's no way to revert this change.

The fastest way to got the sliders was to replace the existing drag widget with it. But I can revert this and change to "slider" and modify all shaders in reshade-shaders to use sliders instead if this is desired.

OtisInf wrote: (edit) I can't move (or close it with X) the window either Martigen, so that's a bug.

Not really a bug, this is a design decision. The GUI is docked to the left of the screen by default. You can move each tab individually to dock them into a window and them move them as a whole.

Martigen wrote: I can't see a way to individually assign a key to a shader or group of shaders any more?

Right click on them to open the context menu. See second GIF in first post.
Last edit: 5 years 4 months ago by crosire.
The topic has been locked.
  • GERgta
More
5 years 4 months ago #17 by GERgta Replied by GERgta on topic 4.0
Amazing update, thank you!
The topic has been locked.
  • Martigen
More
5 years 4 months ago - 5 years 4 months ago #18 by Martigen Replied by Martigen on topic 4.0

crosire wrote:

Martigen wrote: I can't see a way to individually assign a key to a shader or group of shaders any more?

Right click on them to open the context menu. See second GIF in first post.

Thanks Crosire!

One other thing: I use DisplayDepth regularly to check/setup depth effects. I've updated to the latest version of the shaders.

There is some confusion here for me: Clicking DisplayDepth didn't show what I expected -- no worries, clicking 'Use Preprocessor Definitions' fixed that. But the description for this option says doing this shouldn't be unnecessary if they match the 'Depth Input Settings'. I presume this refers to the settings directly below -- but does this now mean that in order to configure depth effects for a game you must use DisplayDepth to set them up/make changes? No more configuring this in a central location via preprocessors under the Settings tab?
Last edit: 5 years 4 months ago by Martigen.
The topic has been locked.
  • seri14
More
5 years 4 months ago #19 by seri14 Replied by seri14 on topic 4.0
Please do not
The topic has been locked.
  • OtisInf
More
5 years 4 months ago - 5 years 4 months ago #20 by OtisInf Replied by OtisInf on topic 4.0

crosire wrote:

OtisInf wrote: So what to do? Change all drag to drag2 in all shaders, or do you want to make a change in 4.0 where you revert this change and simply make drag2 the 'slider' widget? There's little time tho. As soon as people see this change and will change their shaders from drag to drag2 to get the precise control back, there's no way to revert this change.

The fastest way to got the sliders was to replace the existing drag widget with it. But I can revert this and change to "slider" and modify all shaders in reshade-shaders to use sliders instead if this is desired.

Yeah it's abit of a catch22: using sliders by default gives users a better idea what to do, (I use sliders for that reason in my own ImGui using code), tho they do come with a downside (no ui_step/speed control). I deliberately set a ui_step value, which is now ignored (when dragging). If there's a way to make the slider move with the ui_step set, it's solved. I don't see this possible in the latest ImGui code however. Having some float range controls display as sliders and others as drags might confuse the user with 'wtf are the boxes without the sliding thingy', so I get the reason to change the default. Not sure how far you're willing to go with this. The best way would be to have a sliderscalarN which supports the speed/ui_step like DragScalarN does. I don't know if replacing the call to ScalarBehavior() with a call to DragBehavior() in sliderscalarN would fix it (but that breaks drop-in replacement of imgui code, so more work for you). That would solve: you can keep the change you made, no shader has to be updated, and the sliders behave as expected (obeying the ui_step).

It appears the slider has the biggest downside when the min-max range is rather huge. E.g. when the slider covers 0-1 it's ok-ish. When it's covering the range 0-150, it's not: it then steps with 0.5. Not sure if there's an automatic way to determine that and flip to drags after a certain point. (or e.g. when a ui_step is defined < 0.1)

OtisInf wrote: (edit) I can't move (or close it with X) the window either Martigen, so that's a bug.

Not really a bug, this was a design decision mostly born out of me failing to get a proper default window set up with the new docking branch of ImGui. So I left it as it is. You can move each tab individually to dock them into a window and them move them as a whole. I'll introduce a default window again once I get it working properly.

I had a hard time with this, but after some messing around it indeed is doable to make a panel floating, then drag the other tabs into that panel as new tabs and then keep a floating window. Till you accidentally dock it to e.g. the top and you have a full screen tabbed interface, which brings you back to step one where you have to peel off the tabs (which are now full screen too, so you have to resize them) and recreate the window you had. I'm sorry, you likely spend a lot of time on this, but this is rather frustrating to use. It's great when you want to have the editor, log, and settings in view, but when you want to tweak some effect it's not helpful. Essentially, what's best here is that if you drag the window bar or the window, it becomes a floating window with all the tabs in it, like you would get with manually dragging the tabs into a floating panel, so you can float it around. Dock it if you want or keep it floating. If you accidentally dock it in the center/top so you get a full screen UI, dragging the window / bar to make the whole set floating as 1 window with tabs again should get the default width (which is the behavior with most docking controls for e.g. .net as well).

This might not be possible (yet) with the state of the docking branch (as Omar still works on that I see), it's what I think would solve it.

(edit) Looking at: github.com/ocornut/imgui/issues/2109 , it says: "You can click the button on the upper-left corner to open a menu listing all the tabs by name. You can click and drag this button to undock an entire node when it is docking (so you can redock it elsewhere):" This indeed works *if there's a panel docked somewhere else*. So if you dock e.g. 'about' to the right side, you can now drag the complete window with all the tabs away from the docked left side by click+drag the down arrow button in the top left. this doesn't work if all panels are docked inside the same window to a side.

Not sure if this is an ImGui bug or something you can do/config. It would make things a bit more easier to use.
Last edit: 5 years 4 months ago by OtisInf.
The topic has been locked.
We use cookies
We use cookies on our website. Some of them are essential for the operation of the forum. You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.