Sodium

Sodium

44M Downloads

Improve core shaders warning usability

Madis0 opened this issue ยท 4 comments

commented

Request Description

#2043 added a warning about core shaders partially or fully not working. I built 105c326 and tested with Vanilla Tweaks' Warm Glow and the MCCI server.

The idea is great - the user knows what's wrong, which packs are to blame and that not all core shaders are inherintly broken.

The problem is context:

  • The toasts appear over all screens, but the user cannot and will not (during gameplay) take action on all screens
  • If the user missed the toast, or the name on the toast, they won't have any context by the time they open the resource pack screen to edit it
  • Because it appears on every resource reload, it doesn't care if the user already saw one of the warnings (e.g. one user resource pack and one server resource pack)

To fix this, I suggest:

  • Making the toast permanent on
    • Resource pack selection screen (while the concerning packs are enabled)
    • Server edit screen (if the server is known to have the concerning pack)
    • Resource reload splash screen
  • and temporary on:
    • Options/title screen
    • Pause menu
  • but do not show at all on in-game screens.
  • The temporary toast could show only the server resource pack(s) upon server join, because by that time the user would've acknowledged any self-selected packs either way.
  • Ideally you could also mixin into the vanilla "incompatible resource pack" warning screen/red shade for even more "native look", but maintaining that while keeping compatibility with other mods may become annoying.
commented

Dropping in here as a developer on MCCI where our shaders are now triggering warnings on 1.20.3. Is there a possibility that we can hide the warnings if we acknowledge the issues?

We're aware that editing core terrain shaders can cause a lot of issues and are open to fixing those issues ourselves to ensure the shaders work properly on Sodium. Would you be open to letting the resource pack include some field in its pack.mcmeta that lists all shaders it knows Sodium warns about but that they have fixed to support Sodium. (where those shaders are then excluded from the warnings) That way adding new shaders to the incompatibility list will still alert such server owners, but it gives said owners an option to solve the issues, update their pack.mcmeta and resolve the warnings.

Nevermind, turns out we had the shaders that are now blocked in the pack but they didn't actually do anything, so we didn't realise they were already not having any effect regardless. Sorry!

commented

I think the action plan that we'd want to follow in order to improve this further would be:

  • Create a new menu where any current problems are listed. This would also provide more information on why each issue is happening, what the consequences are, and how you can fix it.
  • Create an indicator on the Main Menu and Pause screen which only shows if there are problems that need addressing.
  • Avoid showing the toasts on every resource reload, unless the resource packs have changed, or if the server has sent a resource pack over.
commented

The toasts appear over all screens, but the user cannot and will not (during gameplay) take action on all screens

The reason why the toast renders on top of everything is to be intentionally obnoxious and difficult to dismiss. We don't use a pop-up screen, because that would steal mouse focus and be very frustrating in multiplayer servers which swap resource packs frequently.

While I understand the user may not be able to immediately deal with the problem, I do think it's important that we show a warning immediately upon discovering the problematic resource pack. Otherwise, the user may get into a situation where many objects don't render correctly in a multiplayer server, with no real understanding as to what's going on.

If the user missed the toast, or the name on the toast, they won't have any context by the time they open the resource pack screen to edit it...

Yes, this is a flaw with the current toasts system, and we want to add a more permanent area where all current problems (and their potential solutions) are listed. This will become especially important as we start to flag software incompatibilities more aggressively.

Ideally, we'd add an indicator to the Pause screen and Main menu, which says there are problems that need addressing. This could then be interacted with to open a new menu listing all the problems and their solutions, as mentioned above.

Because it appears on every resource reload, it doesn't care if the user already saw one of the warnings...

I agree that showing the warning on every resource reload is not great. But we can't easily determine if a resource pack has changed, or if the server is sending over a new resource pack. In the best case, we show the warning only when the user modifies the list of resource packs, and any time when the server applies a resource pack.

commented

We now generate a "compatibility report" which is written the log file when incompatible resource packs are loaded (commit). This gives players a more obvious error in the log file, and it provides links to documentation about why the incompatibility exists and how they can resolve it.

image

Some additional work is going to be needed to plug all of this into the Video Settings screen so that users have a graphical interface for accessing the information.