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

Make it possible to open projects in the editor if their bake data is not present on the filesystem (for version control usage) #11110

Open
Calinou opened this issue Nov 7, 2024 · 1 comment

Comments

@Calinou
Copy link
Member

Calinou commented Nov 7, 2024

Describe the project you are working on

The Godot editor 🙂

Describe the problem or limitation you are having in your project

Currently, when you try to open a scene in the editor that has missing baked resource data, it won't open with a dependency error.

This is problematic in workflows where you add this baked data to your .gitignore. Such a workflow is often desired when you want to keep the VCS repository size as small as possible, particularly when using Git. Git's decentralized approach means that you have to clone the whole repository's history to be able to perform the full suite of Git operations, and Git LFS is expensive if you use a lot of storage.

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

Make it possible to open projects in the editor if their bake data is not present on the filesystem (for version control usage).

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

The following baked resource types should be ignored in dependency error dialogs:

  • LightmapGIData (typical extensions: .lmbake + .exr + _shadow.png)
  • VoxelGIData (typical extension: .VoxelGI_data.res)
  • ArrayOccluder3D (typical extension: .occ)
  • Texture3D, but only within GPUParticlesCollisionSDF3D (typical extension: .GPUParticlesCollisionSDF3D_data.exr)
`.gitignore` file to ignore baked file types
# LightmapGIData (baked in LightmapGI)
*.lmbake
# NOTE: This may also ignore HDR panoramas if they are in OpenEXR format.
# Consider preventing specific folders from being ignored using `!some_folder/*.exr` below `*.exr`.
*.exr
# Separate shadowmask texture.
# NOTE: This may ignore unrelated textures, so double-check what files this ignores in your project.
*_shadow.png

# VoxelGIData (baked in VoxelGI)
*.VoxelGI_data.res

# ArrayOccluder3D (baked in OccluderInstance3D)
*.occ

# GPUParticlesCollisionSDF3D's Texture
*.GPUParticlesCollisionSDF3D_data.exr

Instead, the scene should open as usual with a warning printed in the editor. The paths to the missing baked resources (and their type) should be printed, along with the node paths requesting those resources if possible.

This should apply to running a project from a terminal as well, so you can test the project right away after opening it once in the editor. A warning should also be printed when the scene that requests missing baked resources is loaded.

The only restriction we may want to have in place is that you can't export a project with missing baked data, so that you can't accidentally export a project without baked lightmaps, for instance. This is particularly important on CI as headless exporting cannot bake data that requires a GPU (such as lightmaps) if this data wasn't committed to version control beforehand.

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

No, as this is built-in editor behavior that can't be overridden.

One way to circumvent this would be to generate dummy data in place of the file paths expected by your project, but it's a lot of work to do and would be best done using system-specific scripts as opposed to an editor plugin. It would also not ensure the user is warned when opening scenes with missing baked data (as the editor would see "valid" baked data, even if incorrect).

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

This is about improving the VCS ability of Godot projects.

@passivestar
Copy link

Also when you bake a lightmap on an imported gltf scene and then modify the scene and re-import godot will throw errors about missing objects. I think they should be ignored silently, perhaps this could be handled as a part of a solution to this proposal since these problems seem to be related

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

2 participants