godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.12k stars 69 forks source link

Add project settings to suppress certain log messages #10471

Open viktor-ferenczi opened 3 weeks ago

viktor-ferenczi commented 3 weeks ago

Describe the project you are working on

Godot Voxel plugin based on a fragment shader writing to NORMAL, TANGENT and BINORMAL without reading them from the mesh.

Describe the problem or limitation you are having in your project

The engine is giving a repeated warning, which does not apply to my shader, causing log spam:

servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp:3854 - Attempting to use a shader (res://addons/voxel/Shaders/Opaque.gdshader) that requires tangents with a mesh that doesn't contain tangents. Ensure that meshes are imported with the 'ensure_tangents' option. If creating your own meshes, add an ARRAY_TANGENT array (when using ArrayMesh) or call generate_tangents() (when using SurfaceTool). (User)

It happens to other assets of other game developers as well, causing a lot of log spam.

It has been a long standing issue. Please see the discussion here: https://github.com/godotengine/godot/issues/84875

That ticket is closed, but the problem is not resolved in general.

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

Since such log spam issues will likely happen in the future, I I suggest adding a generic temporary solution as a set of project settings:

The config dialog should include a warning that such filters/limits on logging should be removed once their root cause is fixed. Also a warning that rules by code location are likely to be invalidated by Godot updates, which is normal.

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

If the game developer faces such log spam and it cannot be fixed in other ways, then he/she configures a filter to reduce or eliminate the offending log messages.

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

It cannot be worked around without having a full custom Godot build with the offending log removed from the code.

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

It cannot be done with an add-on.

AThousandShips commented 3 weeks ago

See also: