godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.13k stars 83 forks source link

Add transparency to the editor UI #2017

Closed alexfreyre closed 2 years ago

alexfreyre commented 3 years ago

Describe the project you are working on

Some 3D art projects in VR and multiple projections.

Describe the problem or limitation you are having in your project

Although every project is done inside the engine, I often feel that the engine and my work are two visually isolated things. I would like them to be visually integrated.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

The idea is to provide transparency to the interface and at the same time blur the background image. With this feature the main viewport is extended to the entire screen making Godot and the project visually integrated.

The idea also includes that the image of the viewport, both 2D or 3D, also persists in the text editor and that the user feels programming on the project that he is doing, not in an isolated text.

I think it can be an option that can be turned on or off, as well as the amount of transparency / opacity and blur could be tweaked.

The images below, intended only to illustrate the idea, are made in GIMP and are presented as a starting point.

the actual editor: actual

80% opacity: 03

50% opacity: 02

25% opacity: 05

10% opacity: 06

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

I am not a programmer

If this enhancement will not be used often, can it be worked around with a few lines of script?

I guess it is not so complicated to do, but I don't know.

Is there a reason why this should be core and not an add-on in the asset library?

I think it is core

KoBeWi commented 3 years ago

You can already change transparency of the UI (at least in 4.0), the problem is that you will just see the clear color below. The viewport rectangle you see is everything that is rendered. Expanding it to the whole window might require some major editor changes.

Jummit commented 3 years ago

That looks very stilish, but I think this is something up to the user to configure with window compositors.

Off-topic This is kinda meta, but I expect a good proposal to do a little bit of research about what it proposes. Simply putting "I am not a programmer" in IMO the most important field of the proposal makes it look like the author quickly made the proposal because it sounded cool, but doesn't care enough to do the groundwork of a feature proposal.
Zireael07 commented 3 years ago

Extending the viewport to what is covered by the UI is not only additional work, but one that will not be appreciated by most people (since most people want the UI to be as clear as possible they'll keep the opacity at 100%) AND it will probably introduce performance problems (we already have the editor hogging CPU or GPU on some Macs, for instance)

alexfreyre commented 3 years ago

I agree with all answers so far almost in everything, but I wanted to share these ideas and see what happen then. I can say that in KDE I don't experiment any performance problem by using transparencies and blur, obviously performance here, is a more important aspect than some style.

If this kind of visual solution likes, I am confident that you guys, like always, will find the most performant and short solution. I don't know if it is possible not to expand the main viewport, instead of that, maybe can be created a 2nd in the outer space at 25% of the resolution or less, then biased (like with textures in Godot shaders) or blurred with some algorithm. Maybe, another solution is to duplucate the main viewport and scale it so the whole window as a background for the panels (maybe re-scale at lower res?), then blurred, the fact here is integrate the panels with your wieport not to achieve a fancy effect.

I have tried a project called Veda for IDEs, for programming GLSL shaders, when you turn it on the whole window turn into your shader and you write obove your own work, not on a separated panel nor see the shader on a mini viewport, I want to have same kind of experience in Godot and don't want a fancy UI theme I want a different experience.

Personally I feel the panels as opaque walls that stretch the viewport and my work inside of it stuck visually in a small portion of the screen.

Godot compared with others engines in a lot of senses is very very particular, so I wanted with this idea to bring some UI feature that any other engine hasn't but, all KDE apps have, some Gnome things has, Windows, Mac...

The UI hasn't touched for a while and personally I would like to see something fresh, new, different to celebrate the work done for 4.0,

I try with this PR bring some ideas about the UI in a general sense, thinking in something that could be done as an effect in general, because changing in the UI style of labels, buttons, etc (things that need to be improved) it need to much discussions, not a possibility now, being under development a lot of things in 4.0.

thanks for all answers!

Calinou commented 3 years ago

Adding "acrylic" support would require a lot of OS-specific wrangling and have a significant performance cost for little gain. Blurring isn't that cheap, especially on low-end/integrated GPUs.

The UI hasn't touched for a while and personally I would like to see something fresh, new, different to celebrate the work done for 4.0,

There will be an editor theme redesign in 4.0 (made by yours truly) :slightly_smiling_face:

alexfreyre commented 3 years ago

There will be an editor theme redesign in 4.0 (made by yours truly) slightly_smiling_face

I have downloaded and compiled your fork and I like it more than the actual, but it can be improved, In gray look a little similar to CryEngine, which is really good, from my point of view Cry has the best UI from all engines that exist now, its UI has been very well worked by really good designers.

We need to modernize the actual Godot UI, there are subtle changes that can provide a better and simpler experience. I would like to work on some design PR.

@Calinou is there someone with you working on this editor UI? I can do some PR for the UI with several solutions and maybe something will come out of there, what do you think? and where do you think I can do that PR, here or in your fork?

Calinou commented 3 years ago

is there someone with you working on this editor UI? I can do some PR for the UI with several solutions and maybe something will come out of there, what do you think? and where do you think I can do that PR, here or in your fork?

Sorry, I'd prefer to work on it alone until I open a pull request with the "definitive" version.

2plus2makes5 commented 3 years ago

Wow that looks so cool and stylish! But yeah i agree with those saying that it can be problematic.

I guess that it could be used for something like the "simulate" mode of the Unreal Engine that makes the game run directly in the editor, that way one could play the game while keeping an eye on nodes and even modifying them, maybe hiding the unnecessary tabs, or maybe there could be a sort of advanced debug mode that let us show/hide the editor in the game window so we can take a look at nodes.

Now that i think about it a "simulate"-like mode wouldn't be a bad idea in my opinion.

dalexeev commented 3 years ago

It looks pretty nice and some people will probably find the visual increase in the workspace useful (but less useful for 2D than 3D). We could add this, but only if the behavior is configurable. Personally, I will not be upset if this is not implemented, but at the same time I think this proposal is very cool.

KDE uses this effect for the desktop panels and I don't notice any performance loss. At the same time, simple Godot shaders heat up my laptop pretty quickly. Why this happens is a mystery to me.

YuriSizov commented 2 years ago

It seems there isn't much support for this feature, so I'm going to close this proposal. Thanks for creating it, though! Feel free to open a discussion in this repository to seek more support for this idea, and maybe someone will figure out how to implement it too.