Welcome, Guest.
Username: Password: Remember me

TOPIC: 4.0

4.0 3 weeks 5 days ago #1

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
Cheers, crosire =)
Last Edit: 3 weeks 2 days ago by crosire. Reason: Updated to 4.0.2
The administrator has disabled public write access.
The following user(s) said Thank You: Wicked Sick, CeeJay.dk, Kleio420, ninjafada, Alex_outer, Tom Yum 72, SpinelessJelly, sajittarius, klotim, brussell and this user have 42 others thankyou

4.0 3 weeks 5 days ago #2

its just nice your still willing to push updates out for this
The administrator has disabled public write access.

4.0 3 weeks 5 days ago #3

Thank you for the update.
It doesn't work for Diablo 2 anymore tho...
Works fine with 3.4.1

Log:
Warning: Spoiler! [ Click to expand ]
Last Edit: 3 weeks 5 days ago by klotim.
The administrator has disabled public write access.

4.0 3 weeks 5 days ago #4

Man, this new update makes me feel like Steven Seagal...

Ain't nobody gonna have a chance against my killer graphics! :evil:
Last Edit: 3 weeks 5 days ago by crosire. Reason: Remove FSK18 grade graphics (sorry)
The administrator has disabled public write access.
The following user(s) said Thank You: Aelius Maximus

4.0 3 weeks 5 days ago #5

  • Wicked Sick
  • Wicked Sick's Avatar
  • Offline
  • Die young or suffer (Forgive my poor English)
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?
Finding relief somewhere between a tree's branch and its shade.
Last Edit: 3 weeks 5 days ago by Wicked Sick.
The administrator has disabled public write access.

4.0 3 weeks 5 days ago #6

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 administrator has disabled public write access.

4.0 3 weeks 5 days ago #7

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...
My GitHub page where you can get the Latest release of SuperDepth3D github.com/BlueSkyDefender/Depth3D

My PayPal Me Link If you like to donate paypal.me/BlueSkyDefender

Also my steam page steamcommunity.com/id/BlueSkyDefender

Discord Server discord.gg/W2f7YhX
Last Edit: 3 weeks 5 days ago by BlueSkyKnight.
The administrator has disabled public write access.
The following user(s) said Thank You: flyynn

4.0 3 weeks 5 days ago #8

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 administrator has disabled public write access.

4.0 3 weeks 5 days ago #9

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 administrator has disabled public write access.

4.0 3 weeks 5 days ago #10

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 administrator has disabled public write access.

4.0 3 weeks 5 days ago #11

Please remove me from changeset. or replace to "requested from user"
My change has completely overwritten
The administrator has disabled public write access.

4.0 3 weeks 5 days ago #12

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: 3 weeks 5 days ago by OtisInf.
The administrator has disabled public write access.

4.0 3 weeks 5 days ago #13

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: 3 weeks 5 days ago by Martigen.
The administrator has disabled public write access.

4.0 3 weeks 5 days ago #14

Man, if i weren't so sleep-deprived right now, I'd jump into it!
The administrator has disabled public write access.

4.0 3 weeks 5 days ago #15

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 administrator has disabled public write access.

4.0 3 weeks 5 days ago #16

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.
Cheers, crosire =)
Last Edit: 3 weeks 4 days ago by crosire.
The administrator has disabled public write access.

4.0 3 weeks 4 days ago #17

Amazing update, thank you!
Greets, GER.
The administrator has disabled public write access.

4.0 3 weeks 4 days ago #18

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: 3 weeks 4 days ago by Martigen.
The administrator has disabled public write access.

4.0 3 weeks 4 days ago #19

Please do not
The administrator has disabled public write access.

4.0 3 weeks 4 days ago #20

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: 3 weeks 4 days ago by OtisInf.
The administrator has disabled public write access.