Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Godot Icon should have sharp lines #457

Closed
BenMcLean opened this issue Feb 8, 2020 · 23 comments
Closed

Godot Icon should have sharp lines #457

BenMcLean opened this issue Feb 8, 2020 · 23 comments

Comments

@BenMcLean
Copy link

BenMcLean commented Feb 8, 2020

The Godot icon included with every project is super helpful to get a quick texture for prototyping purposes. It being a little face is especially good since it can stand for the player in a fast prototype.

However, the current Godot icon has smoothly fading pixels between it's white and blue parts. Instead, I think it should have a sharp divide between the blue portions and the white portions. That way, it'll look good if it's treated as 2D blocky pixel art and still look alright if it's blurred like by default.

Describe the project you are working on:

This is not for a specific project. It's any project that uses the icon.

Describe the problem or limitation you are having in your project:

The icon doesn't look like an image should when filters are turned off, and it looks more blurry than it should look when filters are turned on.

Describe how this feature / enhancement will help you overcome this problem or limitation:

Proper sharp lines will help clearly show what Godot's filters are doing, where if the test image is already anti-aliased, then it becomes much less clear to see how much is being done by Godot's filters versus how much anti-aliasing was already in the image.

Show a mock up screenshots/video or a flow diagram explaining how your proposal will work:
On the left is what Godot's current icon looks like with filters turned off. On the right is a rough mockup of what Godot's icon should look like with filters turned off.
Comparison

Describe implementation detail for your proposal (in code), if possible:

Just replace the icon with something that doesn't have anti-aliasing already in it, and do the anti-aliasing at runtime.

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

Every new Godot project.

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

Every new Godot project.

@clayjohn
Copy link
Member

clayjohn commented Feb 8, 2020

Just turn off filtering when you import the icon. Then it will be pixelated instead of smooth.

@BenMcLean
Copy link
Author

Just turn off filtering when you import the icon. Then it will be pixelated instead of smooth.

That's not what I'm saying. I've done that. And what comes out doesn't have blue pixels and then white pixels. It has blue pixel, light blue pixel, even lighter blue pixel, mostly white pixel, white pixel. Not a smooth gradient (because I turned off filtering) but a quantized gradient because the gradient is part of the original image.

You can see this if you open the icon up in a pixel art editing program such as Aseprite or even just in plain old GIMP.

@BenMcLean
Copy link
Author

BenMcLean commented Feb 8, 2020

I'm saying it should use indexed colors and the total number of colors should be super low, like maybe five colors. There should be navy blue, sky blue, black, white, transparent and that's all. Right now, it has many different shades instead of just those colors.

@clayjohn
Copy link
Member

clayjohn commented Feb 8, 2020

Can you explain the purpose in greater detail? A mock-up is probably necessary for this.

Also please update your proposal to follow the template as you are currently breaking Rule 1

@Calinou
Copy link
Member

Calinou commented Feb 8, 2020

Instead, I think it should have a sharp divide between the blue portions and the white portions. That way, it'll look good if it's treated as 2D blocky pixel art and still look alright if it's blurred like by default.

This will break the antialiasing that's otherwise used in the project manager. We don't intend to have a "pixel art" appearance in the rest of the Godot interface.

If you wish to use textures for prototyping, it's better to rely on NoiseTexture instead (or GradientTexture, once we allow changing its height and rotating it).

@BenMcLean
Copy link
Author

Here's a comparison. On the left is what the current icon looks like with filters turned off, and on the right is what it should look like with filters turned off.
Comparison

@BenMcLean
Copy link
Author

The image on the right is just my clumsy mock-up but it should be enough to communicate the general idea that we should have sharp lines and should not introduce anti-aliasing in the image itself, because with filters, that gives us two levels of anti-aliasing which are unnecessary and make the image look extra blurry when it shouldn't.

@BenMcLean
Copy link
Author

First, we've got anti-aliasing that happens in the image itself when it gets made in InkScape or whatever. And then, when it gets loaded into Godot with filters, those filters are doing anti-aliasing again on top of that. At least one of those passes is unnecessary and shouldn't be there. It should be doing anti-aliasing only once.

@Calinou
Copy link
Member

Calinou commented Feb 8, 2020

@BenMcLean Filtering without anti-aliasing won't look quite as good as filtering with anti-aliasing. This is a general issue in image rendering; we can't fix it.

@Xrayez
Copy link
Contributor

Xrayez commented Feb 8, 2020

For the sake of curiosity, how is the source icon texture created/generated in that case for each project? Does it get rendered by SVG module at runtime similarly to other editor icons? Or is it just data? It would be nice to see the actual difference.

@Calinou
Copy link
Member

Calinou commented Feb 8, 2020

@Xrayez It's rendered by the SVG module when the project is created. This means its size varies depending on the editor scale. This is also why I would advise not relying on it for prototyping 🙂

We could try to find a way to make the icon always render at a predetermined size, but you still can't expect your icon size to not change over time (e.g. if you replace it).

@BenMcLean
Copy link
Author

@Calinou Then perhaps my feature request should instead be to make the icon of Godot itself be an image that is intentionally optimized for rapid prototyping.

@Calinou
Copy link
Member

Calinou commented Feb 8, 2020

@BenMcLean I don't think this is going to happen, sorry. The icon needs to look identifiable enough so it can be distinguished from projects that already have a final icon in place.

If you have more needs for procedural texture generation, look into making an editor plugin for this. It's defintiely feasible.

@BenMcLean
Copy link
Author

Tutorial makers already use icon.png as the example texture in their tutorials. My idea is: let's just make that official, and make sure it's a good image for that purpose.

Just an idea. Not every idea gets accepted, whatever.

@Calinou
Copy link
Member

Calinou commented Feb 8, 2020

@BenMcLean Not all tutorials are about making pixel art games 🙂

@golddotasksquestions
Copy link

@BenMcLean
Godot games are still to a large part pixel art games, but not all by any means.
The Godot icon has to serve it's purpose as placeholder for so many things. As Player icon, as shader texture, as Light texture, Sprite texture for non pixelart games, Sprite texture for pixelart games, for 3D geometry texture, as background, and thousand things in between.
At 64 pixel, with a lot of anti aliasing within the graphic, square but not really square due to round corners, some transparency but not all around, some value differences but not the whole dynamic, ect, this icon is not not ideal as texture for any particular purpose, but not a day goes by when I'm not amazed how reasonably well it does as placeholder for all these case applications.

If I were to change a single thing about it, I could not use it anymore as placeholder in another case.

@timothyqiu
Copy link
Member

I think a project icon should just stay a project icon. But it's indeed helpful to have something for rapid 2D prototyping.

In 3D, we have basic meshes like cube and sphere. In 2D, there are no such basic shapes (a Shape2D proposal: godotengine/godot#6750), so icon.png is the only thing quickly available as a placeholder, even though it's not intended.

Apart from the proposed Shape2D, providing some dedicated prototyping textures can also do the job. Just like the Suzanne monkey in Blender.

@girng
Copy link

girng commented Feb 11, 2020

I don't understand? Different images might look different based on filter and non-filter? This is normal isn't it

@golddotasksquestions
Copy link

BenMcLean wants no anti-aliasing between colors when filtering is turned off @girng

@noidexe
Copy link

noidexe commented Feb 19, 2020

I created a Sprite, then in Texture chose New NoiseTexture. Disabled filtering and added a new OpenSimplexNoise, setting period all the way down to 0.1.
That took me 29 seconds. Add maybe a few more to save it as a file and that's it.
The editor icon is abused because there is no downside to it. As soon as there is one I think you should use something else.

In the same way than one user may need some placeholder pixelart another may want some placeholder spritesheet, other some sound assets, etc. Wouldn't it make more sense to have a "PlaceholderLibrary" project in the AssetLib? You can download it when you need it and when installing you just untick the stuff you don't need. Or maybe you download it once to a folder and just copy from that. Or maybe a set of of PlaceholderPack_Pixelart, PlaceholderPack_3DChar, etc.

@Calinou
Copy link
Member

Calinou commented Apr 14, 2020

Kenney has released a set of prototyping textures for 3D. He's also released isometric prototyping textures and a simplified platformer pack, both of which could be useful for 2D games.

If someone is interested in making them as quick as possible to set up in Godot, they could upload those packs to the asset library.

@Calinou
Copy link
Member

Calinou commented Apr 30, 2020

I'll close this proposal due to lack of support (see the reactions on the first post).

@aaronfranke
Copy link
Member

If you want a better icon, here is the original SVG file:

DefaultProjectIcon.zip

And here is an optimized 128x128 version:

icon

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants