godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.21k stars 21.22k forks source link

Vulkan: GPU Timeout on MacOS [tested multiple hardware] #67373

Closed RevoluPowered closed 2 years ago

RevoluPowered commented 2 years ago

Godot version

4.0.dev (we cut from 880a0177d12463b612268afe95bd3d8dd565bf52) @Zylann's terrain module on top

System information

multiple hardware tested MacOS 12.4 intel i9 MacOS 12.2 intel i7

Issue description

Game crashes when a complex enough scene is provided and loaded.

No UBSAN/ASAN errors anymore either. (spent entire day literally fixing them all - patch incoming soon :tm:)

Tried MVK_ALLOW_METAL_EVENTS=1 as per some searches but gave me an additional 2 seconds after the scene had loaded before the GPU timeout.

We're having this on ARM processors too. I will try a bisect tomorrow, but any help is appreciated.

This is for the Mirror.

Symptoms entire app hangs, no display output anymore, infinite swap issues or crash VK_DISPLAY_LOST etc.

2022-10-14 00:20:24.210364+0100 godot.macos.opt.tools.x86_64[4888:74403] Execution of the command buffer was aborted due to an error during execution. Caused GPU Timeout Error (00000002:kIOAccelCommandBufferCallbackErrorTimeout)
[mvk-error] VK_ERROR_DEVICE_LOST: Command buffer 0x7fe954f59a00 "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 2): Caused GPU Timeout Error (00000002:kIOAccelCommandBufferCallbackErrorTimeout)
2022-10-14 00:20:24.210533+0100 godot.macos.opt.tools.x86_64[4888:74403] ERROR:  - Message Id Number: 0 | Message Id Name: 
    VK_ERROR_DEVICE_LOST: Command buffer 0x7fe954f59a00 "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 2): Caused GPU Timeout Error (00000002:kIOAccelCommandBufferCallbackErrorTimeout)
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_QUEUE, Handle 105553183017928
at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:171)
ERROR:  - Message Id Number: 0 | Message Id Name: 
    VK_ERROR_DEVICE_LOST: Command buffer 0x7fe954f59a00 "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 2): Caused GPU Timeout Error (00000002:kIOAccelCommandBufferCallbackErrorTimeout)
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_QUEUE, Handle 105553183017928

Steps to reproduce

Honestly dug around a lot and don't know how to reproduce outside of our codebase due to complexity.

Minimal reproduction project

Unable to provide as unsure how to reproduce outside our game.

Calinou commented 2 years ago

Unable to provide as unsure how to reproduce outside our game.

What rendering features do you have enabled in the project? Is there anything that stands out?

RevoluPowered commented 2 years ago

Unable to provide as unsure how to reproduce outside our game.

What rendering features do you have enabled in the project? Is there anything that stands out?

Narrowed the bug down to these scene settings causing the GPU timeout on the sun.

Making them default removes the GPU timeout.

-[node name="Sun1" parent="SpaceEnvironment" index="0"]
-transform = Transform3D(0.866025, 0.433013, -0.25, 0, 0.5, 0.866025, 0.5, -0.75, 0.433013, 0, 0, 0)
-light_color = Color(1, 0.976471, 0.909804, 1)
-light_energy = 3.0
-light_angular_distance = 2.0
-shadow_bias = 0.05
-shadow_blur = 0.4
-directional_shadow_blend_splits = true
-directional_shadow_max_distance = 200.0
-directional_shadow_pancake_size = 60.0
RevoluPowered commented 2 years ago

I did more investigation into the issue with the xcode frame debugger, I have found two issues relevant with the same error: https://github.com/KhronosGroup/MoltenVK/issues/602 https://github.com/KhronosGroup/MoltenVK/issues/836

With the XCode frame debugger attached I could not reproduce the crash.

However both those issue pertain and show exactly the same symptoms and log output.

I believe changing the lighting configuration is a symptom of the problem but not the actual issue. The actual issue seems to be we cause some code to timeout with the compute shaders.

RevoluPowered commented 2 years ago

I have a theory that the reason we can't reproduce on non intel mac's is the issue is hidden by the higher performance of the M1 mac. the machines roughly have a 30% uplift, it might be why they cannot reproduce it since its timing critical.

We timeout when something broken is sent to the GPU. I enabled vulkan shader validation and it doesn't report many issues.

My first port of call is a random blank texture is sent to the compute shader, which is 256 MB and never accessed by the GPU:

Screenshot 2022-10-19 at 16 47 36

Another cause for concern is non unique textures are sent to the GPU more than once, and left alive.

Screenshot 2022-10-19 at 16 49 22

We could potentially reduce these to a single texture for less memory consumption. Happens quite a lot.

Setting some to use a volatile texture might be a good idea.

We also seem to bind to many objects at once and duplicate bindings perhaps a logic error is present:

Screenshot 2022-10-19 at 16 50 40

This is just my initial observations over the past day.

RevoluPowered commented 2 years ago

I will writeup how to configure the frame debugger properly once I can get the "Show in source" button resolving to MoltenVK.

RevoluPowered commented 2 years ago

I spent a few more hours on this, I debugged a lot, eventually I found that if shader validation in XCode is disabled then the crash will occur in xcode.

This leads me to believe that the timeout IS inside the shader and some of the shader is triggering undefined behaviour and thus causing the GPU timeout.

RevoluPowered commented 2 years ago

Enabling these options helps show more debug information for moltenvk + metal:

Screenshot 2022-10-20 at 15 37 25 Screenshot 2022-10-20 at 17 00 06

With shader validation unchecked the engine crashes the OS. With shader validation checked the engine doesn't crash the OS.

by crash the OS I mean: GPU flickers entire screen (even in windowed mode).

RevoluPowered commented 2 years ago

We added some prints today

2022-10-21 18:40:18.885146+0100 godotengine[12183:318547] Execution of the command buffer was aborted due to an error during execution. Caused GPU Timeout Error (00000002:kIOAccelCommandBufferCallbackErrorTimeout)
[mvk-error] VK_ERROR_DEVICE_LOST: MTLCommandBuffer "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 2): Caused GPU Timeout Error (00000002:kIOAccelCommandBufferCallbackErrorTimeout)
2022-10-21 18:40:18.885259+0100 godotengine[12183:318547] ERROR: VALIDATION - Message Id Number: 0 | Message Id Name: 
    VK_ERROR_DEVICE_LOST: MTLCommandBuffer "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 2): Caused GPU Timeout Error (00000002:kIOAccelCommandBufferCallbackErrorTimeout)
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_QUEUE, Handle 140153505442216
at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:158)
ERROR: VALIDATION - Message Id Number: 0 | Message Id Name: 
    VK_ERROR_DEVICE_LOST: MTLCommandBuffer "vkQueueSubmit CommandBuffer on Queue 0-0" execution failed (code 2): Caused GPU Timeout Error (00000002:kIOAccelCommandBufferCallbackErrorTimeout)
    Objects - 1
        Object[0] - VK_OBJECT_TYPE_QUEUE, Handle 140153505442216
   at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:158)
[mvk-info] Encoders for 0x7f77fd3ca060 "vkQueueSubmit CommandBuffer on Queue 0-0":
[mvk-info]  - vkCmdCopyBuffer BlitEncoder: completed
[mvk-info]  - vkCmdCopyBuffer BlitEncoder: completed
[mvk-info]  - vkCmdDispatch ComputeEncoder: completed
[mvk-info]  - vkCmdCopyBuffer BlitEncoder: completed
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: completed
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: completed
[mvk-info]  - vkCmdCopyBuffer BlitEncoder: completed
2022-10-21 18:40:18.951659+0100 godotengine[12183:317298] ERROR: Vulkan: Did not create swapchain successfully.
at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2055)
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: completed
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: completed
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: completed
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: completed
[mvk-info]  - vkCmdDispatch ComputeEncoder: completed
[mvk-info]  - vkCmdCopyBuffer BlitEncoder: completed
[mvk-info]  - vkCmdFillBuffer ComputeEncoder: completed
ERROR: Vulkan: Did not create swapchain successfully.
   at: prepare_buffers (drivers/vulkan/vulkan_context.cpp:2055)
[mvk-info]  - vkCmdCopyBuffer BlitEncoder: completed
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: completed
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: completed
[mvk-info]  - vkCmdCopyBuffer BlitEncoder: pending
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: pending
[mvk-info]  - vkCmdDispatch ComputeEncoder: pending
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: pending
[mvk-info]  - vkCmdDispatch ComputeEncoder: pending
[mvk-info]  - vkCmdCopyBuffer BlitEncoder: pending
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: pending
[mvk-info]  - vkCmdCopyBuffer BlitEncoder: pending
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: pending
[mvk-info]  - vkCmdDispatch ComputeEncoder: pending
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: pending
[mvk-info]  - vkCmdBeginRenderPass RenderEncoder: pending
2022-10-21 18:40:18.952297+0100 godotengine[12183:317298] ERROR: Condition "err" is true. Returning: ERR_CANT_CREATE
at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2132)
ERROR: Condition "err" is true. Returning: ERR_CANT_CREATE
   at: swap_buffers (drivers/vulkan/vulkan_context.cpp:2132)
clayjohn commented 2 years ago

RevoluPowered and I debugged this a little further today. We think that the issue is not reproducible on the mobile renderer which points to the root issue being in either the scene shader or in a compute shader. We analyzed typical draw calls in the xcode debugger and did not see anything totally out of the ordinary (although between Vulkan -> MoltenVK -> Metal a lot of debug info is lost so I am not confident in what we saw).

My best guess is something is breaking in the cluster building resulting in pathological loops forming in the scene shader

Next steps:

  1. Force disable lighting by adding #define MODE_UNSHADED to the top of the clustered rendering shader. See if this impacts the crash
  2. Force disable, lighting, decals, and reflection probes by commenting out the 3 for loops over cluster data with the format for (uint i = item_from; i < item_to; i++) {. See if this impacts the crash
  3. Compare the results from the cluster builder on macOS in XCode to the results on a non-macOS computer for a similar scene (i.e. validate the output of the cluster builder manually)
  4. Same as 3. except force disable subgroups on the non-macOS computer ~5. Pare down the clustered renderer by removing compute shader dispatches one by one until the problem goes away~
RevoluPowered commented 2 years ago

I noticed something potentially bad. We don't lock the version of the metal API we use as far as I can see. Metal 3 has vastly different features compared to Metal 2.

I posted this question in godot rendering chat, so putting here:

is there any way to lock apple dependencies to specific versions? Like for metal rendering for example.
I am curious because right now it is set by the version of xcode we install, then moltenvk uses and adopts that.
It could be hairy because metal 3 has support for RT, and other features, but transparently becomes available.
My assumption is that we can't include them in our repository to ensure a specific version is used right?
The xcode beta/nonbeta flips support for lots of features and OS version essentially too.
Which is why I think it could be an issue, we are consuming a random API version with a different surface each time per machine.
So probably I'll try to find a way to lock this explicitly if nobody has any suggestions on how to do this?

Our bug in this case could also be caused by a machine using an outdated version of metal. I don't believe it's the issue but I am going to try testing with a higher OS and XCode version.

RevoluPowered commented 2 years ago

RevoluPowered and I debugged this a little further today. We think that the issue is not reproducible on the mobile renderer which points to the root issue being in either the scene shader or in a compute shader. We analyzed typical draw calls in the xcode debugger and did not see anything totally out of the ordinary (although between Vulkan -> MoltenVK -> Metal a lot of debug info is lost so I am not confident in what we saw).

My best guess is something is breaking in the cluster building resulting in pathological loops forming in the scene shader

Next steps:

  1. Force disable lighting by adding #define MODE_UNSHADED to the top of the clustered rendering shader. See if this impacts the crash
  2. Force disable, lighting, decals, and reflection probes by commenting out the 3 for loops over cluster data with the format for (uint i = item_from; i < item_to; i++) {. See if this impacts the crash
  3. Compare the results from the cluster builder on macOS in XCode to the results on a non-macOS computer for a similar scene (i.e. validate the output of the cluster builder manually)
  4. Same as 3. except force disable subgroups on the non-macOS computer
  5. Pare down the clustered renderer by removing compute shader dispatches one by one until the problem goes away

Thanks sir! We will be able to check today.

RevoluPowered commented 2 years ago

from step one we get this crash (from our internal engine version) will test normal base godot tomorrow:


             ^
-[MTLDebugRenderCommandEncoder setRenderPipelineState:]:1580: failed assertion `Set Render Pipeline State Validation
The sample count (1) does not match the renderPipelineState's sample count (4)
'
-[MTLDebugRenderCommandEncoder setRenderPipelineState:]:1580: failed assertion `Set Render Pipeline State Validation
The sample count (1) does not match the renderPipelineState's sample count (4)```
clayjohn commented 2 years ago

from step one we get this crash

             ^
-[MTLDebugRenderCommandEncoder setRenderPipelineState:]:1580: failed assertion `Set Render Pipeline State Validation
The sample count (1) does not match the renderPipelineState's sample count (4)
'
-[MTLDebugRenderCommandEncoder setRenderPipelineState:]:1580: failed assertion `Set Render Pipeline State Validation
The sample count (1) does not match the renderPipelineState's sample count (4)```

This appears to be related to the cluster builder: https://github.com/godotengine/godot/blob/2b505b74b9b0a7005586ecaa9aa1236e86b18437/servers/rendering/renderer_rd/cluster_builder_rd.cpp#L57

RevoluPowered commented 2 years ago

2022-10-25 21:53:03.930364+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:03.930459+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:03.930500+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:03.930535+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:03.930743+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:03.930817+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:03.930859+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:03.934680+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:03.934802+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:03.934842+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:03.934874+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:03.934904+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:03.934987+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:03.935021+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:03.935050+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:03.935079+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:03.935124+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:03.935216+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:03.935265+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:03.935301+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:05.961842+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:05.961938+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:05.961979+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:05.962019+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:05.962249+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:05.962297+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:05.965796+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:05.965860+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.339494+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.339926+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.339987+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.340028+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.343690+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.343748+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.343784+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.343815+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.343845+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.343969+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.344011+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.344043+0100 godotengine[1987:38175] ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
at: merge_with (core/math/aabb.cpp:51)
ERROR: AABB size is negative, this is not supported. Use AABB.abs() to get an AABB with a positive size.
   at: merge_with (core/math/aabb.cpp:51)
2022-10-25 21:53:08.400494+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.400607+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.400669+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.400708+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.400890+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.400935+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.401016+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.401066+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.401103+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.401137+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.401202+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.401235+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.401511+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.401563+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.401601+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.401634+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.401667+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.401805+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.401861+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.401900+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.401934+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.401967+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.402041+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.402090+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.402209+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.402256+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.402292+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.402324+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.402358+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.402450+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.402493+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.402536+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.402568+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.402660+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.402716+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.402754+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.402878+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.402925+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.402959+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.402993+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.403024+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.403137+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.403172+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.403242+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.403276+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.403309+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.403379+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.403433+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.403558+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.403604+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.403638+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.403670+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.403708+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.403776+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.403828+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.403867+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.403900+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.403935+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.403994+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.404035+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.404163+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.404209+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.404241+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.404273+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.404350+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.404389+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.404422+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.404457+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.404540+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.404621+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.404675+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.404716+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.404869+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.404925+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.404958+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.404991+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.405083+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.405133+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.405170+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.405204+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
2022-10-25 21:53:08.405236+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: true
at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
ERROR: Condition "!material" is true. Returning: true
   at: material_casts_shadows (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2688)
2022-10-25 21:53:08.405349+0100 godotengine[1987:38175] ERROR: Condition "!material" is true. Returning: false
at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
ERROR: Condition "!material" is true. Returning: false
   at: material_is_animated (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2675)
2022-10-25 21:53:08.405397+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
ERROR: Condition "!material" is true.
   at: material_get_instance_shader_parameters (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2701)
2022-10-25 21:53:08.405433+0100 godotengine[1987:38175] ERROR: Condition "!material" is true.
at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)
ERROR: Condition "!material" is true.
   at: material_update_dependency (servers/rendering/renderer_rd/storage_rd/material_storage.cpp:2713)```
RevoluPowered commented 2 years ago

TODO:

RevoluPowered commented 2 years ago

Patches to make to get MSAA to not crash and skeleton not to crash/hang

@@ -1091,11 +1091,11 @@ void Skeleton3D::force_update_bone_children_transforms(int p_bone_idx) {
        int child_bone_size = b.child_bones.size();
        for (int i = 0; i < child_bone_size; i++) {
            bones_to_process.push_back(b.child_bones[i]);
        }

-       emit_signal(SceneStringNames::get_singleton()->bone_pose_changed, current_bone_idx);
+       //emit_signal(SceneStringNames::get_singleton()->bone_pose_changed, current_bone_idx);
    }
    rest_dirty = false;
 }

 // Helper functions
@@ -52,11 +52,11 @@ ClusterBuilderSharedDataRD::ClusterBuilderSharedDataRD() {
        cluster_render.cluster_render_shader.initialize(versions);
        cluster_render.shader_version = cluster_render.cluster_render_shader.version_create();
        cluster_render.shader = cluster_render.cluster_render_shader.version_get_shader(cluster_render.shader_version, 0);
        cluster_render.shader_pipelines[ClusterRender::PIPELINE_NORMAL] = RD::get_singleton()->render_pipeline_create(cluster_render.shader, RD::get_singleton()->framebuffer_format_create_empty(), vertex_format, RD::RENDER_PRIMITIVE_TRIANGLES, RD::PipelineRasterizationState(), RD::PipelineMultisampleState(), RD::PipelineDepthStencilState(), RD::PipelineColorBlendState(), 0);
        RD::PipelineMultisampleState ms;
-       ms.sample_count = RD::TEXTURE_SAMPLES_4;
+       ms.sample_count = RD::TEXTURE_SAMPLES_1;
        cluster_render.shader_pipelines[ClusterRender::PIPELINE_MSAA] = RD::get_singleton()->render_pipeline_create(cluster_render.shader, RD::get_singleton()->framebuffer_format_create_empty(), vertex_format, RD::RENDER_PRIMITIVE_TRIANGLES, RD::PipelineRasterizationState(), ms, RD::PipelineDepthStencilState(), RD::PipelineColorBlendState(), 0);
    }
    {
        Vector<String> versions;
        versions.push_back("");
@@ -5,11 +5,11 @@
 #VERSION_DEFINES

 #include "scene_forward_clustered_inc.glsl"

 #define SHADER_IS_SRGB false
-
+#define MODE_UNSHADED
 /* INPUT ATTRIBS */

 layout(location = 0) in vec3 vertex_attrib;

 //only for pure render depth when normal is not used
@@ -475,11 +475,11 @@ void main() {
 #version 450

 #VERSION_DEFINES

 #define SHADER_IS_SRGB false
-
+#define MODE_UNSHADED
 /* Specialization Constants (Toggles) */

 layout(constant_id = 0) const bool sc_use_forward_gi = false;
 layout(constant_id = 1) const bool sc_use_light_projector = false;
 layout(constant_id = 2) const bool sc_use_light_soft_shadows = false;

Required for ASAN / UBSAN to pass

@@ -401,11 +401,11 @@ public:
    _FORCE_INLINE_ uint32_t mesh_surface_get_lod(void *p_surface, float p_model_scale, float p_distance_threshold, float p_mesh_lod_threshold, uint32_t *r_index_count = nullptr) const {
        Mesh::Surface *s = reinterpret_cast<Mesh::Surface *>(p_surface);

        int32_t current_lod = -1;
        if (r_index_count) {
-           *r_index_count = s->index_count;
+           *(r_index_count) = s->index_count;
        }
        for (uint32_t i = 0; i < s->lod_count; i++) {
            float screen_size = s->lods[i].edge_length * p_model_scale / p_distance_threshold;
            if (screen_size > p_mesh_lod_threshold) {
                break;
clayjohn commented 2 years ago

Force disable lighting by adding #define MODE_UNSHADED to the top of the clustered rendering shader (vertex and fragment). We now know this prevents the crash

New next steps:

  1. Apply patch from above
  2. Undo #define MODE_UNSHADED
  3. Determine if one of Omni Light, Spot Light, Decals, Reflection Probes is used in the scene
  4. Try manually commenting out the following chunks: https://github.com/godotengine/godot/blob/2b505b74b9b0a7005586ecaa9aa1236e86b18437/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl#L1815-L1884

https://github.com/godotengine/godot/blob/2b505b74b9b0a7005586ecaa9aa1236e86b18437/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl#L1886-L1957

https://github.com/godotengine/godot/blob/2b505b74b9b0a7005586ecaa9aa1236e86b18437/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl#L934-L1038

https://github.com/godotengine/godot/blob/2b505b74b9b0a7005586ecaa9aa1236e86b18437/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl#L1380-L1447

  1. If none of the above remove the crash, manually comment out the DirectionalLight3D code: https://github.com/godotengine/godot/blob/2b505b74b9b0a7005586ecaa9aa1236e86b18437/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl#L1496-L1813
RevoluPowered commented 2 years ago

L1832 of this file is sus as bad data could come from CPU and cause this to run infinitely and trigger timeout, will follow advised route.

godot/servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl

RevoluPowered commented 2 years ago

Patch to correct datatypes to ensure using unsigned int (GLSL compiler complains they're int not uint):

@@ -689,11 +687,11 @@ vec4 fog_process(vec3 vertex) {
    return vec4(fog_color, fog_amount);
 }

 void cluster_get_item_range(uint p_offset, out uint item_min, out uint item_max, out uint item_from, out uint item_to) {
    uint item_min_max = cluster_buffer.data[p_offset];
-   item_min = item_min_max & 0xFFFF;
+   item_min = item_min_max & 0xFFFFu;
    item_max = item_min_max >> 16;

    item_from = item_min >> 5;
    item_to = (item_max == 0) ? 0 : ((item_max - 1) >> 5) + 1; //side effect of how it is stored, as item_max 0 means no elements
 }
@@ -956,13 +954,13 @@ void fragment_shader(in SceneData scene_data) {
            uint merged_mask = mask;
 #endif

            while (merged_mask != 0) {
                uint bit = findMSB(merged_mask);
-               merged_mask &= ~(1 << bit);
+               merged_mask &= ~(1u << bit);
 #ifdef USE_SUBGROUPS
-               if (((1 << bit) & mask) == 0) { //do not process if not originally here
+               if (((1u << bit) & mask) == 0) { //do not process if not originally here
                    continue;
                }
 #endif
                uint decal_index = 32 * i + bit;

@@ -1417,13 +1415,13 @@ void fragment_shader(in SceneData scene_data) {
            uint merged_mask = mask;
 #endif

            while (merged_mask != 0) {
                uint bit = findMSB(merged_mask);
-               merged_mask &= ~(1 << bit);
+               merged_mask &= ~(1u << bit);
 #ifdef USE_SUBGROUPS
-               if (((1 << bit) & mask) == 0) { //do not process if not originally here
+               if (((1u << bit) & mask) == 0) { //do not process if not originally here
                    continue;
                }
 #endif
                uint reflection_index = 32 * i + bit;

@@ -1773,13 +1771,13 @@ void fragment_shader(in SceneData scene_data) {
 #endif

            float shadow = 1.0;
 #ifndef SHADOWS_DISABLED
            if (i < 4) {
-               shadow = float(shadow0 >> (i * 8) & 0xFF) / 255.0;
+               shadow = float(shadow0 >> (i * 8u) & 0xFFu) / 255.0;
            } else {
-               shadow = float(shadow1 >> ((i - 4) * 8) & 0xFF) / 255.0;
+               shadow = float(shadow1 >> ((i - 4u) * 8u) & 0xFFu) / 255.0;
            }

            shadow = shadow * directional_lights.data[i].shadow_opacity + 1.0 - directional_lights.data[i].shadow_opacity;
 #endif

@@ -1837,13 +1835,13 @@ void fragment_shader(in SceneData scene_data) {
            uint merged_mask = mask;
 #endif

            while (merged_mask != 0) {
                uint bit = findMSB(merged_mask);
-               merged_mask &= ~(1 << bit);
+               merged_mask &= ~(1u << bit);
 #ifdef USE_SUBGROUPS
-               if (((1 << bit) & mask) == 0) { //do not process if not originally here
+               if (((1u << bit) & mask) == 0) { //do not process if not originally here
                    continue;
                }
 #endif
                uint light_index = 32 * i + bit;

@@ -1908,13 +1906,13 @@ void fragment_shader(in SceneData scene_data) {
            uint merged_mask = mask;
 #endif

            while (merged_mask != 0) {
                uint bit = findMSB(merged_mask);
-               merged_mask &= ~(1 << bit);
+               merged_mask &= ~(1u << bit);
 #ifdef USE_SUBGROUPS
-               if (((1 << bit) & mask) == 0) { //do not process if not originally here
+               if (((1u << bit) & mask) == 0) { //do not process if not originally here
                    continue;
                }
 #endif

                uint light_index = 32 * i + bit;
@@ -2063,11 +2061,11 @@ void fragment_shader(in SceneData scene_data) {

            float sRed = floor((cRed / pow(2.0f, exps - B - N)) + 0.5f);
            float sGreen = floor((cGreen / pow(2.0f, exps - B - N)) + 0.5f);
            float sBlue = floor((cBlue / pow(2.0f, exps - B - N)) + 0.5f);
            //store as 8985 to have 2 extra neighbour bits
-           uint light_rgbe = ((uint(sRed) & 0x1FF) >> 1) | ((uint(sGreen) & 0x1FF) << 8) | (((uint(sBlue) & 0x1FF) >> 1) << 17) | ((uint(exps) & 0x1F) << 25);
+           uint light_rgbe = ((uint(sRed) & 0x1FFu) >> 1) | ((uint(sGreen) & 0x1FFu) << 8) | (((uint(sBlue) & 0x1FFu) >> 1) << 17) | ((uint(exps) & 0x1Fu) << 25);

            imageStore(emission_grid, grid_pos, uvec4(light_rgbe));
            imageStore(emission_aniso_grid, grid_pos, uvec4(light_aniso));
        }
    }
@@ -2097,12 +2095,12 @@ void fragment_shader(in SceneData scene_data) {

 #ifdef MODE_RENDER_VOXEL_GI
    if (bool(instances.data[instance_index].flags & INSTANCE_FLAGS_USE_VOXEL_GI)) { // process voxel_gi_instances
        uint index1 = instances.data[instance_index].gi_offset & 0xFFFF;
        uint index2 = instances.data[instance_index].gi_offset >> 16;
-       voxel_gi_buffer.x = index1 & 0xFF;
-       voxel_gi_buffer.y = index2 & 0xFF;
+       voxel_gi_buffer.x = index1 & 0xFFu;
+       voxel_gi_buffer.y = index2 & 0xFFu;
    } else {
        voxel_gi_buffer.x = 0xFF;
        voxel_gi_buffer.y = 0xFF;
    }
 #endif
RevoluPowered commented 2 years ago

Patch I made to prevent the crash, this no longer crashes with these lines disabled


@@ -1513,198 +1511,199 @@ void fragment_shader(in SceneData scene_data) {
                continue; // Statically baked light and object uses lightmap, skip
            }

            float shadow = 1.0;

-           if (directional_lights.data[i].shadow_opacity > 0.001) {
-               float depth_z = -vertex.z;
-               vec3 light_dir = directional_lights.data[i].direction;
-               vec3 base_normal_bias = normalize(normal_interp) * (1.0 - max(0.0, dot(light_dir, -normalize(normal_interp))));
-
-#define BIAS_FUNC(m_var, m_idx)                                                                 \
-   m_var.xyz += light_dir * directional_lights.data[i].shadow_bias[m_idx];                     \
-   vec3 normal_bias = base_normal_bias * directional_lights.data[i].shadow_normal_bias[m_idx]; \
-   normal_bias -= light_dir * dot(light_dir, normal_bias);                                     \
-   m_var.xyz += normal_bias;
-
-               //version with soft shadows, more expensive
-               if (sc_use_directional_soft_shadows && directional_lights.data[i].softshadow_angle > 0) {
-                   uint blend_count = 0;
-                   const uint blend_max = directional_lights.data[i].blend_splits ? 2 : 1;
-
-                   if (depth_z < directional_lights.data[i].shadow_split_offsets.x) {
-                       vec4 v = vec4(vertex, 1.0);
-
-                       BIAS_FUNC(v, 0)
-
-                       vec4 pssm_coord = (directional_lights.data[i].shadow_matrix1 * v);
-                       pssm_coord /= pssm_coord.w;
-
-                       float range_pos = dot(directional_lights.data[i].direction, v.xyz);
-                       float range_begin = directional_lights.data[i].shadow_range_begin.x;
-                       float test_radius = (range_pos - range_begin) * directional_lights.data[i].softshadow_angle;
-                       vec2 tex_scale = directional_lights.data[i].uv_scale1 * test_radius;
-                       shadow = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
-                       blend_count++;
-                   }
-
-                   if (blend_count < blend_max && depth_z < directional_lights.data[i].shadow_split_offsets.y) {
-                       vec4 v = vec4(vertex, 1.0);
-
-                       BIAS_FUNC(v, 1)
-
-                       vec4 pssm_coord = (directional_lights.data[i].shadow_matrix2 * v);
-                       pssm_coord /= pssm_coord.w;
-
-                       float range_pos = dot(directional_lights.data[i].direction, v.xyz);
-                       float range_begin = directional_lights.data[i].shadow_range_begin.y;
-                       float test_radius = (range_pos - range_begin) * directional_lights.data[i].softshadow_angle;
-                       vec2 tex_scale = directional_lights.data[i].uv_scale2 * test_radius;
-                       float s = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
-
-                       if (blend_count == 0) {
-                           shadow = s;
-                       } else {
-                           //blend
-                           float blend = smoothstep(0.0, directional_lights.data[i].shadow_split_offsets.x, depth_z);
-                           shadow = mix(shadow, s, blend);
-                       }
-
-                       blend_count++;
-                   }
-
-                   if (blend_count < blend_max && depth_z < directional_lights.data[i].shadow_split_offsets.z) {
-                       vec4 v = vec4(vertex, 1.0);
-
-                       BIAS_FUNC(v, 2)
-
-                       vec4 pssm_coord = (directional_lights.data[i].shadow_matrix3 * v);
-                       pssm_coord /= pssm_coord.w;
-
-                       float range_pos = dot(directional_lights.data[i].direction, v.xyz);
-                       float range_begin = directional_lights.data[i].shadow_range_begin.z;
-                       float test_radius = (range_pos - range_begin) * directional_lights.data[i].softshadow_angle;
-                       vec2 tex_scale = directional_lights.data[i].uv_scale3 * test_radius;
-                       float s = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
-
-                       if (blend_count == 0) {
-                           shadow = s;
-                       } else {
-                           //blend
-                           float blend = smoothstep(directional_lights.data[i].shadow_split_offsets.x, directional_lights.data[i].shadow_split_offsets.y, depth_z);
-                           shadow = mix(shadow, s, blend);
-                       }
-
-                       blend_count++;
-                   }
-
-                   if (blend_count < blend_max) {
-                       vec4 v = vec4(vertex, 1.0);
-
-                       BIAS_FUNC(v, 3)
-
-                       vec4 pssm_coord = (directional_lights.data[i].shadow_matrix4 * v);
-                       pssm_coord /= pssm_coord.w;
-
-                       float range_pos = dot(directional_lights.data[i].direction, v.xyz);
-                       float range_begin = directional_lights.data[i].shadow_range_begin.w;
-                       float test_radius = (range_pos - range_begin) * directional_lights.data[i].softshadow_angle;
-                       vec2 tex_scale = directional_lights.data[i].uv_scale4 * test_radius;
-                       float s = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
-
-                       if (blend_count == 0) {
-                           shadow = s;
-                       } else {
-                           //blend
-                           float blend = smoothstep(directional_lights.data[i].shadow_split_offsets.y, directional_lights.data[i].shadow_split_offsets.z, depth_z);
-                           shadow = mix(shadow, s, blend);
-                       }
-                   }
-
-               } else { //no soft shadows
-
-                   vec4 pssm_coord;
-                   float blur_factor;
-
-                   if (depth_z < directional_lights.data[i].shadow_split_offsets.x) {
-                       vec4 v = vec4(vertex, 1.0);
-
-                       BIAS_FUNC(v, 0)
-
-                       pssm_coord = (directional_lights.data[i].shadow_matrix1 * v);
-                       blur_factor = 1.0;
-                   } else if (depth_z < directional_lights.data[i].shadow_split_offsets.y) {
-                       vec4 v = vec4(vertex, 1.0);
-
-                       BIAS_FUNC(v, 1)
-
-                       pssm_coord = (directional_lights.data[i].shadow_matrix2 * v);
-                       // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
-                       blur_factor = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.y;
-                   } else if (depth_z < directional_lights.data[i].shadow_split_offsets.z) {
-                       vec4 v = vec4(vertex, 1.0);
-
-                       BIAS_FUNC(v, 2)
-
-                       pssm_coord = (directional_lights.data[i].shadow_matrix3 * v);
-                       // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
-                       blur_factor = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.z;
-                   } else {
-                       vec4 v = vec4(vertex, 1.0);
-
-                       BIAS_FUNC(v, 3)
-
-                       pssm_coord = (directional_lights.data[i].shadow_matrix4 * v);
-                       // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
-                       blur_factor = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.w;
-                   }
-
-                   pssm_coord /= pssm_coord.w;
-
-                   shadow = sample_directional_pcf_shadow(directional_shadow_atlas, scene_data.directional_shadow_pixel_size * directional_lights.data[i].soft_shadow_scale * blur_factor, pssm_coord);
-
-                   if (directional_lights.data[i].blend_splits) {
-                       float pssm_blend;
-                       float blur_factor2;
-
-                       if (depth_z < directional_lights.data[i].shadow_split_offsets.x) {
-                           vec4 v = vec4(vertex, 1.0);
-                           BIAS_FUNC(v, 1)
-                           pssm_coord = (directional_lights.data[i].shadow_matrix2 * v);
-                           pssm_blend = smoothstep(0.0, directional_lights.data[i].shadow_split_offsets.x, depth_z);
-                           // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
-                           blur_factor2 = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.y;
-                       } else if (depth_z < directional_lights.data[i].shadow_split_offsets.y) {
-                           vec4 v = vec4(vertex, 1.0);
-                           BIAS_FUNC(v, 2)
-                           pssm_coord = (directional_lights.data[i].shadow_matrix3 * v);
-                           pssm_blend = smoothstep(directional_lights.data[i].shadow_split_offsets.x, directional_lights.data[i].shadow_split_offsets.y, depth_z);
-                           // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
-                           blur_factor2 = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.z;
-                       } else if (depth_z < directional_lights.data[i].shadow_split_offsets.z) {
-                           vec4 v = vec4(vertex, 1.0);
-                           BIAS_FUNC(v, 3)
-                           pssm_coord = (directional_lights.data[i].shadow_matrix4 * v);
-                           pssm_blend = smoothstep(directional_lights.data[i].shadow_split_offsets.y, directional_lights.data[i].shadow_split_offsets.z, depth_z);
-                           // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
-                           blur_factor2 = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.w;
-                       } else {
-                           pssm_blend = 0.0; //if no blend, same coord will be used (divide by z will result in same value, and already cached)
-                           blur_factor2 = 1.0;
-                       }
-
-                       pssm_coord /= pssm_coord.w;
-
-                       float shadow2 = sample_directional_pcf_shadow(directional_shadow_atlas, scene_data.directional_shadow_pixel_size * directional_lights.data[i].soft_shadow_scale * blur_factor2, pssm_coord);
-                       shadow = mix(shadow, shadow2, pssm_blend);
-                   }
-               }
-
-               shadow = mix(shadow, 1.0, smoothstep(directional_lights.data[i].fade_from, directional_lights.data[i].fade_to, vertex.z)); //done with negative values for performance
-
-#undef BIAS_FUNC
-           } // shadows
+//         if (directional_lights.data[i].shadow_opacity > 0.001) {
+//             float depth_z = -vertex.z;
+//             vec3 light_dir = directional_lights.data[i].direction;
+//             vec3 base_normal_bias = normalize(normal_interp) * (1.0 - max(0.0, dot(light_dir, -normalize(normal_interp))));
+//
+////#define BIAS_FUNC(m_var, m_idx)                                                                 \
+////   if(m_idx < directional_lights.data.length() ) {                                             \
+////   m_var.xyz += light_dir * directional_lights.data[i].shadow_bias[m_idx];                     \
+////   vec3 normal_bias = base_normal_bias * directional_lights.data[i].shadow_normal_bias[m_idx]; \
+////   normal_bias -= light_dir * dot(light_dir, normal_bias);                                     \
+////   m_var.xyz += normal_bias; }
+//
+//             //version with soft shadows, more expensive
+//             if (sc_use_directional_soft_shadows && directional_lights.data[i].softshadow_angle > 0) {
+//                 uint blend_count = 0;
+//                 const uint blend_max = directional_lights.data[i].blend_splits ? 2 : 1;
+//
+//                 if (depth_z < directional_lights.data[i].shadow_split_offsets.x) {
+//                     vec4 v = vec4(vertex, 1.0);
+//
+////                       BIAS_FUNC(v, i)
+//
+//                     vec4 pssm_coord = (directional_lights.data[i].shadow_matrix1 * v);
+//                     pssm_coord /= pssm_coord.w;
+//
+//                     float range_pos = dot(directional_lights.data[i].direction, v.xyz);
+//                     float range_begin = directional_lights.data[i].shadow_range_begin.x;
+//                     float test_radius = (range_pos - range_begin) * directional_lights.data[i].softshadow_angle;
+//                     vec2 tex_scale = directional_lights.data[i].uv_scale1 * test_radius;
+//                     shadow = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
+//                     blend_count++;
+//                 }
+//
+//                 if (blend_count < blend_max && depth_z < directional_lights.data[i].shadow_split_offsets.y) {
+//                     vec4 v = vec4(vertex, 1.0);
+//
+////                       BIAS_FUNC(v, i)
+//
+//                     vec4 pssm_coord = (directional_lights.data[i].shadow_matrix2 * v);
+//                     pssm_coord /= pssm_coord.w;
+//
+//                     float range_pos = dot(directional_lights.data[i].direction, v.xyz);
+//                     float range_begin = directional_lights.data[i].shadow_range_begin.y;
+//                     float test_radius = (range_pos - range_begin) * directional_lights.data[i].softshadow_angle;
+//                     vec2 tex_scale = directional_lights.data[i].uv_scale2 * test_radius;
+//                     float s = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
+//
+//                     if (blend_count == 0) {
+//                         shadow = s;
+//                     } else {
+//                         //blend
+//                         float blend = smoothstep(0.0, directional_lights.data[i].shadow_split_offsets.x, depth_z);
+//                         shadow = mix(shadow, s, blend);
+//                     }
+//
+//                     blend_count++;
+//                 }
+//
+//                 if (blend_count < blend_max && depth_z < directional_lights.data[i].shadow_split_offsets.z) {
+//                     vec4 v = vec4(vertex, 1.0);
+//
+////                       BIAS_FUNC(v, i)
+//
+//                     vec4 pssm_coord = (directional_lights.data[i].shadow_matrix3 * v);
+//                     pssm_coord /= pssm_coord.w;
+//
+//                     float range_pos = dot(directional_lights.data[i].direction, v.xyz);
+//                     float range_begin = directional_lights.data[i].shadow_range_begin.z;
+//                     float test_radius = (range_pos - range_begin) * directional_lights.data[i].softshadow_angle;
+//                     vec2 tex_scale = directional_lights.data[i].uv_scale3 * test_radius;
+//                     float s = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
+//
+//                     if (blend_count == 0) {
+//                         shadow = s;
+//                     } else {
+//                         //blend
+//                         float blend = smoothstep(directional_lights.data[i].shadow_split_offsets.x, directional_lights.data[i].shadow_split_offsets.y, depth_z);
+//                         shadow = mix(shadow, s, blend);
+//                     }
+//
+//                     blend_count++;
+//                 }
+//
+//                 if (blend_count < blend_max) {
+//                     vec4 v = vec4(vertex, 1.0);
+//
+////                       BIAS_FUNC(v, i)
+//
+//                     vec4 pssm_coord = (directional_lights.data[i].shadow_matrix4 * v);
+//                     pssm_coord /= pssm_coord.w;
+//
+//                     float range_pos = dot(directional_lights.data[i].direction, v.xyz);
+//                     float range_begin = directional_lights.data[i].shadow_range_begin.w;
+//                     float test_radius = (range_pos - range_begin) * directional_lights.data[i].softshadow_angle;
+//                     vec2 tex_scale = directional_lights.data[i].uv_scale4 * test_radius;
+//                     float s = sample_directional_soft_shadow(directional_shadow_atlas, pssm_coord.xyz, tex_scale * directional_lights.data[i].soft_shadow_scale);
+//
+//                     if (blend_count == 0) {
+//                         shadow = s;
+//                     } else {
+//                         //blend
+//                         float blend = smoothstep(directional_lights.data[i].shadow_split_offsets.y, directional_lights.data[i].shadow_split_offsets.z, depth_z);
+//                         shadow = mix(shadow, s, blend);
+//                     }
+//                 }
+//
+//             } else { //no soft shadows
+//
+//                 vec4 pssm_coord;
+//                 float blur_factor;
+//
+//                 if (depth_z < directional_lights.data[i].shadow_split_offsets.x) {
+//                     vec4 v = vec4(vertex, 1.0);
+//
+////                       BIAS_FUNC(v, i)
+//
+//                     pssm_coord = (directional_lights.data[i].shadow_matrix1 * v);
+//                     blur_factor = 1.0;
+//                 } else if (depth_z < directional_lights.data[i].shadow_split_offsets.y) {
+//                     vec4 v = vec4(vertex, 1.0);
+//
+////                       BIAS_FUNC(v, i)
+//
+//                     pssm_coord = (directional_lights.data[i].shadow_matrix2 * v);
+//                     // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
+//                     blur_factor = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.y;
+//                 } else if (depth_z < directional_lights.data[i].shadow_split_offsets.z) {
+//                     vec4 v = vec4(vertex, 1.0);
+//
+////                       BIAS_FUNC(v, i)
+//
+//                     pssm_coord = (directional_lights.data[i].shadow_matrix3 * v);
+//                     // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
+//                     blur_factor = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.z;
+//                 } else {
+//                     vec4 v = vec4(vertex, 1.0);
+//
+////                       BIAS_FUNC(v, i)
+//
+//                     pssm_coord = (directional_lights.data[i].shadow_matrix4 * v);
+//                     // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
+//                     blur_factor = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.w;
+//                 }
+//
+//                 pssm_coord /= pssm_coord.w;
+//
+//                 shadow = sample_directional_pcf_shadow(directional_shadow_atlas, scene_data.directional_shadow_pixel_size * directional_lights.data[i].soft_shadow_scale * blur_factor, pssm_coord);
+//
+//                 if (directional_lights.data[i].blend_splits) {
+//                     float pssm_blend;
+//                     float blur_factor2;
+//
+//                     if (depth_z < directional_lights.data[i].shadow_split_offsets.x) {
+//                         vec4 v = vec4(vertex, 1.0);
+////                           BIAS_FUNC(v, i)
+//                         pssm_coord = (directional_lights.data[i].shadow_matrix2 * v);
+//                         pssm_blend = smoothstep(0.0, directional_lights.data[i].shadow_split_offsets.x, depth_z);
+//                         // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
+//                         blur_factor2 = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.y;
+//                     } else if (depth_z < directional_lights.data[i].shadow_split_offsets.y) {
+//                         vec4 v = vec4(vertex, 1.0);
+////                           BIAS_FUNC(v, i)
+//                         pssm_coord = (directional_lights.data[i].shadow_matrix3 * v);
+//                         pssm_blend = smoothstep(directional_lights.data[i].shadow_split_offsets.x, directional_lights.data[i].shadow_split_offsets.y, depth_z);
+//                         // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
+//                         blur_factor2 = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.z;
+//                     } else if (depth_z < directional_lights.data[i].shadow_split_offsets.z) {
+//                         vec4 v = vec4(vertex, 1.0);
+////                           BIAS_FUNC(v, i)
+//                         pssm_coord = (directional_lights.data[i].shadow_matrix4 * v);
+//                         pssm_blend = smoothstep(directional_lights.data[i].shadow_split_offsets.y, directional_lights.data[i].shadow_split_offsets.z, depth_z);
+//                         // Adjust shadow blur with reference to the first split to reduce discrepancy between shadow splits.
+//                         blur_factor2 = directional_lights.data[i].shadow_split_offsets.x / directional_lights.data[i].shadow_split_offsets.w;
+//                     } else {
+//                         pssm_blend = 0.0; //if no blend, same coord will be used (divide by z will result in same value, and already cached)
+//                         blur_factor2 = 1.0;
+//                     }
+//
+//                     pssm_coord /= pssm_coord.w;
+//
+//                     float shadow2 = sample_directional_pcf_shadow(directional_shadow_atlas, scene_data.directional_shadow_pixel_size * directional_lights.data[i].soft_shadow_scale * blur_factor2, pssm_coord);
+//                     shadow = mix(shadow, shadow2, pssm_blend);
+//                 }
+//             }
+//
+//             shadow = mix(shadow, 1.0, smoothstep(directional_lights.data[i].fade_from, directional_lights.data[i].fade_to, vertex.z)); //done with negative values for performance
+//
+//#undef BIAS_FUNC
+//         } // shadows
RevoluPowered commented 2 years ago

Patch to fix the issue is incoming, we found it was the subgroup support in moltenvk

RevoluPowered commented 2 years ago

Fixes: https://github.com/godotengine/godot/pull/67912 - important if you like your debugger to work https://github.com/godotengine/godot/pull/67913 - important if you don't want msaa to randomly crash on you https://github.com/godotengine/godot/pull/67915 - the most important one

BgitSand commented 2 years ago

System: Macbook Air M1, 16GB RAM. 512GB SSD Ventura MacOS 13.0 Final Release CEMU 2.09 Experimental and all past builds from 2.0.7 MetalVK 1.2.0 Game: Zelda Breath of the Wild All Graphic pack cheats for BOTW activated; using Mods FPS++, Extension Memory, Remove Distant Fog; activated Enhancement and Graphics options using default 1280x720 resolution.

Hi. I would like to know if this is the reason why CEMU experimental builds keep randomly crashing when running BOTW after a number of gaming sessions (often times after one gaming session only, esp with newer builds from 2.0.8) and restarting CEMU and the game? Error generated is always "Failed to create pipeline cache." Is this project intended to resolve the shaders and pipeline cache corruption bug in current builds of CEMU experimental? Would really want to know. Thank you for your great work!

Here is one of my CEMU crash logs:

Log: 10:06:48.715] ------- Init Cemu 2.0-999999 (experimental) ------- [10:06:48.715] Init Wii U memory space (base: 0x00000002027e2000) [10:06:48.715] mlc01 path: /Users/user/Library/Application Support/Cemu/mlc01 [10:06:48.715] Used CPU extensions: SSSE3, SSE4.1, AES-NI [10:06:48.715] IOSU_CRYPTO: No otp.bin found. Online mode cannot be used [10:06:48.715] IOSU_CRYPTO: No Seeprom.bin found. Online mode cannot be used [10:06:48.727] Failed to read valid PlayDiary header [10:06:53.225] Mounting title 00050000101c9400 [10:06:53.225] Base: /Users/user/Documents/BOTW Cemu/The Legend of Zelda Breath of the Wild [ALZE01] [Folder] [10:06:53.225] Update: /Users/user/Documents/BOTW Cemu/The Legend of Zelda Breath of the Wild (UPDATE DATA) (v208) (3.243 GB) (USA) (unpacked) [Folder] [10:06:53.225] DLC: /Users/user/Documents/BOTW Cemu/The Legend of Zelda Breath of the Wild (DLC) (2.182 GB) (USA) (unpacked) [Folder] [10:06:53.772] COS: System fonts found. Generated shareddata (26609KB) [10:06:53.778] ------- Init Vulkan graphics backend ------- [10:06:53.779] Vulkan instance version: 1.2 [10:06:53.780] Using GPU: Apple M1 [10:06:53.780] Driver version: 1.2.0 [10:06:53.780] VK_EXT_custom_border_color not supported. Cannot emulate arbitrary border color [10:06:53.780] VulkanLimits: UBAlignment 16 nonCoherentAtomSize 16 [10:06:53.785] Using available debug function: vkCreateDebugUtilsMessengerEXT() [10:06:53.785] Vulkan device memory info: [10:06:53.785] Heap 0 - Size 16384MB Flags 0x00000001 [10:06:53.785] Memory 0 - HeapIndex 0 Flags 0x00000001 [10:06:53.785] Memory 1 - HeapIndex 0 Flags 0x0000000f [10:06:53.785] Memory 2 - HeapIndex 0 Flags 0x0000000b [10:06:53.785] Memory 3 - HeapIndex 0 Flags 0x00000011 [10:06:53.785] VK_FORMAT_D24_UNORM_S8_UINT not supported [10:06:53.785] VK_FORMAT_R4G4B4A4_UNORM_PACK16 not supported [10:06:53.785] VK_FORMAT_R4G4_UNORM_PACK8 not supported [10:06:53.785] VK_FORMAT_R5G6B5_UNORM_PACK16 not supported [10:06:53.785] VK_FORMAT_R5G5B5A1_UNORM_PACK16 not supported [10:06:53.790] Vulkan: Can't find mailbox present mode [10:06:53.792] ------- Loaded title ------- [10:06:53.792] TitleId: 00050000-101c9400 [10:06:53.792] TitleVersion: v208 [10:06:53.792] TitleRegion: US [10:06:53.792] Save path: /Users/user/Library/Application Support/Cemu/mlc01/usr/save/00050000/101C9400/user/ [10:06:53.792] Shader cache file: shaderCache/transferable/00050000101c9400.bin [10:06:53.792] gameprofile path: gameProfiles/default/00050000101c9400.ini [10:06:53.792] RPX hash (updated): fb7911ad [10:06:53.792] RPX hash (base): dcac9927 [10:06:53.792] Graphic pack: Using modified RAM mapping 10000000-a0000000 (+1310720KiB) [10:06:53.792] Graphic pack: Using modified RAM mapping a0000000-e0000000 (+589824KiB) [10:06:53.922] Loaded module 'u-king' with checksum 0x6267bfd0 [10:06:53.922] RPL link time: 128ms [10:06:54.065] HLE scan time: 143ms [10:06:54.065] ------- Active settings ------- [10:06:54.065] CPU-Mode: Multi-core recompiler [10:06:54.065] Load shared libraries: true [10:06:54.065] Use precompiled shaders: auto (gameprofile) [10:06:54.065] Full sync at GX2DrawDone: true [10:06:54.065] Async compile: false [10:06:54.065] Console language: English [10:06:54.073] Vulkan-Info: Allocated additional memory for textures from device-local memory [10:06:54.174] ------- Activate graphic packs ------- [10:06:54.176] Applying patch group 'BotW_InfiniteAmiibo_V208' [10:06:54.176] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Infinite Amiibo [10:06:54.176] Applying patch group 'BotW_InfiniteStamina_V208' [10:06:54.176] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Infinite Stamina [10:06:54.176] Applying patch group 'BotW_InfiniteUrbosa_V208' [10:06:54.176] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Infinite Urbosa's Fury [10:06:54.178] Vulkan: Can't find mailbox present mode [10:06:54.178] Applying patch group 'BotW_ArrowDrawSpeed_V208' [10:06:54.179] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Arrow Draw Speed [Presets: 1x (Default)] [10:06:54.179] Applying patch group 'BotW_Durability_V208' (Codecave: 01800000-01800004) [10:06:54.179] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Durability [Presets: x1 (Default)] [10:06:54.179] Applying patch group '9999StampsLimit' [10:06:54.179] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/9999 Map Stamps Limit [10:06:54.180] Applying patch group 'BotW_InfiniteDaruk_V208' [10:06:54.180] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Infinite Daruk's Protection [10:06:54.180] Applying patch group 'BotW_InfiniteMotorcycleEnergy_V208' [10:06:54.180] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Infinite Motorcycle Energy [10:06:54.180] Applying patch group 'BotW_InfiniteRevali_V208' [10:06:54.180] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Infinite Revali's Gale [10:06:54.180] Applying patch group 'BotW_InfiniteMipha_V208' [10:06:54.180] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Infinite Mipha's Grace [10:06:54.180] Vulkan: Can't find mailbox present mode [10:06:54.180] Applying patch group 'BotW_MotorcycleAllRegions_V208' [10:06:54.180] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Spawn Motorcycle In All Regions [10:06:54.180] Applying patch group 'BotW_InfiniteHearts_V208' [10:06:54.180] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Infinite Hearts [10:06:54.181] Applying patch group 'BotwMasterModeOptionsV208' [10:06:54.181] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Master Mode Options [Presets: Disabled (Default),Disabled (Default),Enabled (Default),Enabled (Default),Enabled (Default),Enabled (Default),Enabled (Default),Enabled (Default),Disabled (Default)] [10:06:54.181] Applying patch group 'BotW_InfiniteArrows_V208' [10:06:54.181] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Cheats/Infinite Arrows [10:06:54.186] Applying patch group 'BotW_Gamespeed_V208' (Codecave: 01800100-018003d0) [10:06:54.186] Applying patch group 'BotW_Ragdolls_V208' (Codecave: 01800400-01800410) [10:06:54.186] Applying patch group 'BotW_FenceMethod_V208' (Codecave: 01800500-0180056c) [10:06:54.186] Applying patch group 'BotW_Cutscene_V208' (Codecave: 01800600-01800838) [10:06:54.186] Applying patch group 'BotW_VSync_V208' (Codecave: 01800900-018009a4) [10:06:54.186] Applying patch group 'BotW_ControllerScrollSpeed_V208' (Codecave: 01800a00-01800ddc) [10:06:54.186] Applying patch group 'BotW_WaterPhysics_V208' (Codecave: 01800e00-01800e38) [10:06:54.186] Applying patch group 'BotW_LoadingScreen_V208' [10:06:54.186] Applying patch group 'BotW_KorokChasing_V208' (Codecave: 01800f00-01800f20) [10:06:54.186] Set vsync frequency to 500 (graphic pack The Legend of Zelda: Breath of the Wild/Mods/FPS++) [10:06:54.186] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Mods/FPS++ [Presets: Advanced Settings,60FPS Limit (Default),No FPS Limit (for benchmarking),Automatically Limit In Few Cutscenes (Recommended),Disabled (Default, dynamically adjust game speed),8 Frames Averaged (Default),Performance Fence (Default),Disabled (Default)] [10:06:54.186] Applying patch group 'BotW_ExtendedMemory_V208' [10:06:54.186] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Mods/Extended Memory [10:06:54.187] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Enhancements [Presets: t3nka Neutral+,Enabled,Normal Reflections,Low (4 samples, Default),Ultra (8x, Default)] [10:06:54.202] Applying patch group 'BotW_GUIAspectRatio_V208' (Codecave: 01801000-01803398) [10:06:54.202] Applying patch group 'BotW_AspectRatio_Shared' (Codecave: 01803400-01803408) [10:06:54.202] Applying patch group 'BotW_AspectRatio_V208' [10:06:54.202] Applying patch group 'BotW_GUIScreenNames_V208' (Codecave: 01803500-0180447f) [10:06:54.205] Activate graphic pack: The Legend of Zelda: Breath of the Wild/Graphics [Presets: 16:9 (Default),1280x720 (HD, Default),Edge HUD (Default),Normal FXAA (Default),Medium (100%, Default),High (Default)] [10:06:54.205] ------- Init Audio backend ------- [10:06:54.205] DirectSound: not supported [10:06:54.205] XAudio 2.8: not supported [10:06:54.205] XAudio 2.7: not supported [10:06:54.205] Cubeb: available [10:06:54.205] ------- Run title ------- [10:06:54.317] Recompiler initialized. CPU extensions: [10:06:54.339] IOSU_ACT: using account default in first slot [10:06:59.126] Vulkan: Can't find mailbox present mode [10:07:00.588] Vulkan-Info: Allocated additional memory for textures from device-local memory [10:07:08.619] Failed to create graphics pipeline. Error -3 [10:07:08.629] Vulkan-Info: Allocated additional memory for textures from device-local memory [10:07:09.171] Vulkan-Info: Allocated additional memory for textures from device-local memory [10:07:09.898] Vulkan-Info: Allocated additional memory for textures from device-local memory [10:07:09.998] Vulkan-Info: Allocated additional memory for textures from device-local memory [10:07:23.104] Failed to create graphics pipeline. Error -3 [10:07:23.201] Failed to create graphics pipeline. Error -3 [10:07:23.217] Failed to create graphics pipeline. Error -3 [10:07:23.232] Failed to create graphics pipeline. Error -3 [10:07:23.245] Failed to create graphics pipeline. Error -3 [10:07:23.245] Failed to create graphics pipeline. Error -3 [10:07:23.289] Failed to create graphics pipeline. Error -3 [10:07:23.313] Failed to create graphics pipeline. Error -3 [10:07:23.594] Failed to create graphics pipeline. Error -3 [10:07:23.964] Failed to create graphics pipeline. Error -3 [10:07:24.026] Failed to create graphics pipeline. Error -3 [10:07:24.048] Failed to create graphics pipeline. Error -3 [10:07:24.115] Failed to create graphics pipeline. Error -3 [10:07:24.116] Failed to create graphics pipeline. Error -3 [10:07:24.546] Failed to create graphics pipeline. Error -3 [10:07:24.728] Failed to create graphics pipeline. Error -3 [10:07:24.863] Failed to create graphics pipeline. Error -3 [10:07:24.867] Failed to create graphics pipeline. Error -3 [10:07:24.879] Failed to create graphics pipeline. Error -3 [10:07:24.892] Failed to create graphics pipeline. Error -3 [10:07:24.967] Failed to create graphics pipeline. Error -3 [10:07:24.994] Failed to create graphics pipeline. Error -3 [10:07:25.056] Failed to create graphics pipeline. Error -3 [10:07:25.105] Failed to create graphics pipeline. Error -3 [10:07:25.115] Failed to create graphics pipeline. Error -3 [10:07:25.130] Failed to create graphics pipeline. Error -3 [10:07:25.654] Vulkan-Info: Allocated additional memory for textures from device-local memory [10:07:32.068] Failed to create graphics pipeline. Error -3 [10:07:36.493] Vulkan-Info: Allocated additional memory for textures from device-local memory [10:07:36.614] Failed to create graphics pipeline. Error -3 [10:07:36.618] Failed to create graphics pipeline. Error -3 [10:07:36.619] Failed to create graphics pipeline. Error -3 [10:07:36.620] Failed to create graphics pipeline. Error -3 [10:07:36.620] Failed to create graphics pipeline. Error -3 [10:07:36.621] Failed to create graphics pipeline. Error -3 [10:07:36.622] Failed to create graphics pipeline. Error -3 [10:07:36.760] Failed to create graphics pipeline. Error -3 [10:07:36.760] Failed to create graphics pipeline. Error -3 [10:07:41.886] Failed to create graphics pipeline. Error -3 [10:08:43.596] Failed to create graphics pipeline. Error -3 [10:08:43.828] Failed to create graphics pipeline. Error -3 [10:08:43.862] Failed to create graphics pipeline. Error -3 [10:08:43.882] Failed to create graphics pipeline. Error -3 [10:08:43.912] Failed to create graphics pipeline. Error -3 [10:08:43.912] Failed to create graphics pipeline. Error -3 [10:08:44.033] Failed to create graphics pipeline. Error -3 [10:08:44.111] Failed to create graphics pipeline. Error -3 [10:08:44.398] Failed to create graphics pipeline. Error -3 [10:08:44.479] Failed to create graphics pipeline. Error -3 [10:08:44.503] Failed to create graphics pipeline. Error -3 [10:08:44.583] Failed to create graphics pipeline. Error -3 [10:08:48.882] Failed to create graphics pipeline. Error -3 [10:08:48.946] Failed to create graphics pipeline. Error -3 [10:08:48.966] Failed to create graphics pipeline. Error -3 [10:08:48.984] Failed to create graphics pipeline. Error -3 [10:08:49.001] Failed to create graphics pipeline. Error -3 [10:08:49.034] Failed to create graphics pipeline. Error -3 [10:08:53.033] Failed to create graphics pipeline. Error -3 [10:08:53.078] Failed to create graphics pipeline. Error -3 [10:08:53.097] Failed to create graphics pipeline. Error -3 [10:08:53.116] Failed to create graphics pipeline. Error -3 [10:08:55.990] Failed to create graphics pipeline. Error -3 [10:08:56.029] Failed to create graphics pipeline. Error -3 [10:08:56.230] Failed to create graphics pipeline. Error -3 [10:08:56.270] Failed to create graphics pipeline. Error -3 [10:08:56.270] Failed to create graphics pipeline. Error -3 [10:08:57.069] Failed to create graphics pipeline. Error -3 [10:09:16.821] Failed to create graphics pipeline. Error -3 [10:09:17.094] Failed to create graphics pipeline. Error -3 [10:09:17.201] Failed to create graphics pipeline. Error -3 [10:09:17.228] Failed to create graphics pipeline. Error -3 [10:09:35.990] Failed to create graphics pipeline. Error -3 [10:09:35.997] Failed to create graphics pipeline. Error -3 [10:09:36.062] Failed to create graphics pipeline. Error -3 [10:09:36.068] Failed to create graphics pipeline. Error -3 [10:09:36.611] Failed to create graphics pipeline. Error -3 [10:09:36.630] Failed to create graphics pipeline. Error -3 [10:09:36.660] Failed to create graphics pipeline. Error -3 [10:09:36.661] Failed to create graphics pipeline. Error -3 [10:09:36.814] Failed to create graphics pipeline. Error -3 [10:09:36.848] Failed to create graphics pipeline. Error -3 [10:09:37.198] Failed to create graphics pipeline. Error -3 [10:09:37.202] Failed to create graphics pipeline. Error -3 [10:09:37.202] Failed to create graphics pipeline. Error -3 [10:09:37.230] Failed to create graphics pipeline. Error -3 [10:09:37.262] Failed to create graphics pipeline. Error -3 [10:09:37.362] Failed to create graphics pipeline. Error -3 [10:09:37.363] Failed to create graphics pipeline. Error -3 [10:09:37.364] Failed to create graphics pipeline. Error -3 [10:09:37.364] Failed to create graphics pipeline. Error -3 [10:09:37.366] Failed to create graphics pipeline. Error -3 [10:09:37.391] Failed to create graphics pipeline. Error -3 [10:09:37.611] Failed to create graphics pipeline. Error -3 [10:09:37.671] Failed to create graphics pipeline. Error -3 [10:09:37.749] Failed to create graphics pipeline. Error -3 [10:09:37.814] Failed to create graphics pipeline. Error -3 [10:09:37.815] Failed to create graphics pipeline. Error -3 [10:09:37.841] Failed to create graphics pipeline. Error -3 [10:09:37.841] Failed to create graphics pipeline. Error -3 [10:09:37.868] Failed to create graphics pipeline. Error -3 [10:09:37.893] Failed to create graphics pipeline. Error -3 [10:09:40.839] Failed to create graphics pipeline. Error -3 [10:09:40.853] Failed to create graphics pipeline. Error -3 [10:09:48.093] Failed to create graphics pipeline. Error -3 [10:09:48.094] Failed to create graphics pipeline. Error -3 [10:10:00.002] Failed to create graphics pipeline. Error -3 [10:10:00.088] Failed to create graphics pipeline. Error -3 [10:10:00.104] Failed to create graphics pipeline. Error -3 [10:10:00.113] Failed to create graphics pipeline. Error -3 [10:10:00.125] Failed to create graphics pipeline. Error -3 [10:10:00.126] Failed to create graphics pipeline. Error -3 [10:10:00.153] Failed to create graphics pipeline. Error -3 [10:10:00.183] Failed to create graphics pipeline. Error -3 [10:10:00.257] Failed to create graphics pipeline. Error -3 [10:10:00.284] Failed to create graphics pipeline. Error -3 [10:10:00.318] Failed to create graphics pipeline. Error -3 [10:12:30.169] Failed to create graphics pipeline. Error -3 [10:12:30.175] Failed to create graphics pipeline. Error -3 [10:12:30.314] Failed to create graphics pipeline. Error -3 [10:12:30.672] Failed to create graphics pipeline. Error -3 [10:12:30.761] Failed to create graphics pipeline. Error -3 [10:12:30.769] Failed to create graphics pipeline. Error -3 [10:13:52.730] Failed to create graphics pipeline. Error -3 [10:13:52.745] Failed to create graphics pipeline. Error -3 [10:13:52.760] Failed to create graphics pipeline. Error -3 [10:13:52.775] Failed to create graphics pipeline. Error -3 [10:13:52.790] Failed to create graphics pipeline. Error -3 [10:13:52.805] Failed to create graphics pipeline. Error -3 [10:13:52.821] Failed to create graphics pipeline. Error -3 [10:13:52.839] Failed to create graphics pipeline. Error -3 [10:13:52.844] Failed to create graphics pipeline. Error -3 [10:13:52.861] Failed to create graphics pipeline. Error -3 [10:13:52.869] Failed to create graphics pipeline. Error -3 [10:13:52.870] Failed to create graphics pipeline. Error -3 [10:13:52.907] Failed to create graphics pipeline. Error -3 [10:13:52.929] Failed to create graphics pipeline. Error -3 [10:13:52.939] Failed to create graphics pipeline. Error -3 [10:13:52.962] Failed to create graphics pipeline. Error -3 [10:13:52.985] Failed to create graphics pipeline. Error -3 [10:13:53.008] Failed to create graphics pipeline. Error -3 [10:13:53.030] Failed to create graphics pipeline. Error -3 [10:13:53.054] Failed to create graphics pipeline. Error -3 [10:13:53.055] Failed to create graphics pipeline. Error -3 [10:13:53.063] Failed to create graphics pipeline. Error -3 [10:13:53.063] Failed to create graphics pipeline. Error -3 [10:13:53.073] Failed to create graphics pipeline. Error -3 [10:13:53.074] Failed to create graphics pipeline. Error -3 [10:13:53.075] Failed to create graphics pipeline. Error -3 [10:13:53.110] Failed to create graphics pipeline. Error -3 [10:13:53.134] Failed to create graphics pipeline. Error -3 [10:13:53.148] Failed to create graphics pipeline. Error -3 [10:13:53.149] Failed to create graphics pipeline. Error -3 [10:15:11.846] Failed to create graphics pipeline. Error -3 [10:15:11.847] Failed to create graphics pipeline. Error -3 [10:15:11.863] Failed to create graphics pipeline. Error -3 [10:15:11.880] Failed to create graphics pipeline. Error -3 [10:15:11.885] Failed to create graphics pipeline. Error -3 [10:15:11.936] Failed to create graphics pipeline. Error -3 [10:15:11.937] Failed to create graphics pipeline. Error -3 [10:15:11.956] Failed to create graphics pipeline. Error -3 [10:15:11.980] Failed to create graphics pipeline. Error -3 [10:15:50.418] Failed to create graphics pipeline. Error -3 [10:15:50.442] Failed to create graphics pipeline. Error -3 [10:17:10.464] Failed to create graphics pipeline. Error -3 [10:17:10.566] Failed to create graphics pipeline. Error -3 [10:17:11.015] Failed to create graphics pipeline. Error -3 [10:17:13.237] Failed to create graphics pipeline. Error -3 [10:18:01.438] Failed to create graphics pipeline. Error -3 [10:21:44.677] Failed to create graphics pipeline. Error -3 [10:22:31.600] Failed to create graphics pipeline. Error -3 [10:23:20.861] Failed to create graphics pipeline. Error -3 [10:23:20.867] Failed to create graphics pipeline. Error -3 [10:25:59.346] Failed to create graphics pipeline. Error -3 [10:25:59.408] Failed to create graphics pipeline. Error -3 [10:25:59.461] Failed to create graphics pipeline. Error -3 [10:25:59.574] Failed to create graphics pipeline. Error -3 [10:25:59.731] Failed to create graphics pipeline. Error -3 [10:25:59.781] Failed to create graphics pipeline. Error -3 [10:26:00.036] Failed to create graphics pipeline. Error -3 [10:26:22.759] Failed to create graphics pipeline. Error -1000012000 [10:26:41.379] Failed to create graphics pipeline. Error -3 [10:26:41.399] Failed to create graphics pipeline. Error -3 [10:26:41.473] Failed to create graphics pipeline. Error -3 [10:26:41.497] Failed to create graphics pipeline. Error -3 [10:26:41.522] Failed to create graphics pipeline. Error -3 [10:26:41.766] Failed to create graphics pipeline. Error -3 [10:26:41.863] Failed to create graphics pipeline. Error -3 [10:26:41.882] Failed to create graphics pipeline. Error -3 [10:26:41.919] Failed to create graphics pipeline. Error -3 [10:26:41.937] Failed to create graphics pipeline. Error -3 [10:26:45.141] Vulkan-Info: Allocated additional memory for textures from device-local memory [10:26:46.584] Failed to create graphics pipeline. Error -3 [10:26:46.593] Failed to create graphics pipeline. Error -3 [10:26:46.672] Failed to create graphics pipeline. Error -3 [10:26:46.691] Failed to create graphics pipeline. Error -3 [10:27:12.334] Vulkan-Info: Allocated additional memory for textures from device-local memory [10:27:37.213] Failed to create graphics pipeline. Error -3 [10:27:39.288] Failed to create graphics pipeline. Error -3 [10:27:39.289] Failed to create graphics pipeline. Error -3 [10:27:39.322] Failed to create graphics pipeline. Error -3 [10:27:39.350] Failed to create graphics pipeline. Error -3 [10:27:39.679] Failed to create graphics pipeline. Error -3 [10:27:49.530] Failed to create graphics pipeline. Error -3 [10:27:49.551] Failed to create graphics pipeline. Error -3 [10:27:50.018] Failed to create graphics pipeline. Error -3 [10:29:15.527] Failed to create graphics pipeline. Error -3 [10:29:55.281] Failed to create graphics pipeline. Error -1000012000 [10:29:55.282] Failed to create graphics pipeline. Error -1000012000 [10:29:55.438] Failed to create graphics pipeline. Error -1000012000 [10:31:38.341] Failed to create graphics pipeline. Error -1000012000 [10:31:47.805] Failed to create graphics pipeline. Error -3 [10:31:48.195] Failed to create graphics pipeline. Error -3 [10:33:52.625] Failed to create graphics pipeline. Error -3 [10:33:53.813] Failed to create graphics pipeline. Error -3 [10:33:54.160] Failed to create graphics pipeline. Error -3

RevoluPowered commented 2 years ago

Fixed by https://github.com/godotengine/godot/pull/67915