Skip to content

Creating a shader in a scene that hasn't been saved yet defaults to an invalid UID-like path #110038

@Calinou

Description

@Calinou

Tested versions

  • Reproducible in: 4.5.beta6, 4.5.beta 4ebf67c
  • Not reproducible in: 4.4.1.stable

System information

Godot v4.5.beta (4ebf67c) - Windows 11 (build 26100) - Multi-window, 1 monitor - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 5090 (NVIDIA; 32.0.15.7688) - AMD Ryzen 9 9950X3D 16-Core Processor (32 threads) - 63.55 GiB memory

Issue description

When you create a new shader using the shader creation dialog in the New Shader resource dropdown, the file name will be set to an invalid UID-based filename:

image

This file name is illegal on Windows due to :, so the shader can't be created:

image

This only occurs if you're creating the shader in a scene that hasn't been saved yet. If the scene has been saved, then the shader will be given a valid res:// path by default.

In 4.4.1.stable, an empty res:// path was provided instead, which is still invalid, but at least it was consistently invalid on all platforms (and not looking random):

Image

Steps to reproduce

  • Create a Node3D and a MeshInstance3D child. Add a new BoxMesh to the MeshInstance3D child. Do not save the scene at this point.
  • Add a new ShaderMaterial to the BoxMesh resource, then a new Shader in the ShaderMaterial resource.
  • In the dialog that appears, notice how the file name starts with :: and looks like an UID.

Minimal reproduction project (MRP)

N/A

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Not Critical

    Status

    For team assessment

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions