Closed alice-i-cecile closed 1 month ago
I think deferred_rendering is broken too
2024-10-01T19:43:15.414646Z INFO bevy_diagnostic::system_information_diagnostics_plugin::internal: SystemInfo { os: "Windows 11 Pro", kernel: "22631", cpu: "AMD Ryzen 9 7950X 16-Core Processor", core_count: "16", memory: "63.2 GiB" }
HookApp::findGameWindow, injectWindow: 0000000000000000
HookApp::findGameWindow, graphicsWindow: 0000000000000000
OverlayConnector::onMessage,overlay.init
2024-10-01T19:43:16.256784Z INFO bevy_render::renderer: AdapterInfo { name: "NVIDIA GeForce RTX 2080 Ti", vendor: 4318, device: 7687, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "560.94", backend: Vulkan }
2024-10-01T19:43:16.750808Z INFO bevy_winit::system: Creating new window "App" (0v1#4294967296)
HookApp::deferHook,
HookApp::findGameWindow, injectWindow: 0000000000000000
HookApp::findGameWindow, graphicsWindow: 0000000000480DA8
2024-10-01T19:43:16.862308Z INFO bevy_input::gamepad: Gamepad 44v1#4294967340 connected.
2024-10-01T19:43:17.191075Z WARN bevy_pbr::render::mesh_view_bindings: Too many textures in mesh pipeline view layout, this might cause us to hit `wgpu::Limits::max_sampled_textures_per_shader_stage` in some environments.
HookApp::deferHook,
2024-10-01T19:43:18.219489Z ERROR wgpu_core::device::global: Device::create_render_pipeline error: Error matching ShaderStages(FRAGMENT) shader requirements against the pipeline
2024-10-01T19:43:18.219683Z ERROR wgpu::backend::wgpu_core: Handling wgpu errors as fatal by default
thread 'Async Compute Task Pool (3)' panicked at C:\Users\chris\.cargo\registry\src\index.crates.io-6f17d22bba15001f\wgpu-22.1.0\src\backend\wgpu_core.rs:3411:5:
wgpu error: Validation Error
Caused by:
In Device::create_render_pipeline, label = 'deferred_lighting_pipeline'
Error matching ShaderStages(FRAGMENT) shader requirements against the pipeline
Shader global ResourceBinding { group: 0, binding: 22 } is not available in the pipeline layout
View dimension D3 (is array: false) doesn't match the binding Sampler(Filtering)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Encountered a panic in system `bevy_render::render_resource::pipeline_cache::PipelineCache::process_pipeline_queue_system`!
thread '<unnamed>' panicked at C:\Users\chris\tmp\bevy\crates\bevy_render\src\render_resource\pipeline_cache.rs:580:28:
index out of bounds: the len is 0 but the index is 14
Encountered a panic in system `bevy_render::renderer::render_system`!
@ChristopherBiscardi Agreed: https://github.com/bevyengine/bevy/issues/15525
Meshlet example/rendering is also broken :(
3d in wasm/webgpu is also broken since https://github.com/bevyengine/bevy/pull/13497
1 error(s) generated while compiling the shader:
:704:25 error: no matching call to textureSampleLevel(texture_depth_2d_array, sampler, vec2<f32>, i32, f32)
14 candidate functions:
textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, level: L) -> f32 where: A is i32 or u32, L is i32 or u32
textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, level: f32) -> vec4<f32> where: A is i32 or u32
textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, level: L, offset: vec2<i32>) -> f32 where: A is i32 or u32, L is i32 or u32
textureSampleLevel(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: A, level: f32) -> vec4<f32> where: A is i32 or u32
textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: L, offset: vec2<i32>) -> f32 where: L is i32 or u32
textureSampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: A, level: L) -> f32 where: A is i32 or u32, L is i32 or u32
textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, level: f32, offset: vec2<i32>) -> vec4<f32> where: A is i32 or u32
textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: L) -> f32 where: L is i32 or u32
textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32, offset: vec2<i32>) -> vec4<f32>
textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32>
textureSampleLevel(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: L) -> f32 where: L is i32 or u32
textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32, offset: vec3<i32>) -> vec4<f32>
textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32>
textureSampleLevel(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32>
let sampled_depth = textureSampleLevel(directional_shadow_texturesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX, directional_shadow_textures_linear_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX, light_local_3, array_index_3, 0f);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
it's also broken in wasm/webgl2 for another reason:
wgpu error: Validation Error
Caused by:
In Device::create_bind_group, label = 'mesh_view_bind_group'
Buffer binding 8 range 20480 exceeds `max_*_buffer_binding_size` limit 16384
3d in wasm/webgpu is also broken since #13497
1 error(s) generated while compiling the shader: :704:25 error: no matching call to textureSampleLevel(texture_depth_2d_array, sampler, vec2<f32>, i32, f32) 14 candidate functions: textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, level: L) -> f32 where: A is i32 or u32, L is i32 or u32 textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, level: f32) -> vec4<f32> where: A is i32 or u32 textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, level: L, offset: vec2<i32>) -> f32 where: A is i32 or u32, L is i32 or u32 textureSampleLevel(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: A, level: f32) -> vec4<f32> where: A is i32 or u32 textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: L, offset: vec2<i32>) -> f32 where: L is i32 or u32 textureSampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: A, level: L) -> f32 where: A is i32 or u32, L is i32 or u32 textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, level: f32, offset: vec2<i32>) -> vec4<f32> where: A is i32 or u32 textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: L) -> f32 where: L is i32 or u32 textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32, offset: vec2<i32>) -> vec4<f32> textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32> textureSampleLevel(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: L) -> f32 where: L is i32 or u32 textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32, offset: vec3<i32>) -> vec4<f32> textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> textureSampleLevel(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> let sampled_depth = textureSampleLevel(directional_shadow_texturesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX, directional_shadow_textures_linear_samplerX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX, light_local_3, array_index_3, 0f); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
it's also broken in wasm/webgl2 for another reason:
wgpu error: Validation Error Caused by: In Device::create_bind_group, label = 'mesh_view_bind_group' Buffer binding 8 range 20480 exceeds `max_*_buffer_binding_size` limit 16384
Which example is this? I tried a couple of the 3d examples but they all worked on wasm/webgl2 for me.
Which example is this? I tried a couple of the 3d examples but they all worked on wasm/webgl2 for me.
examples pbr
and 3d_scene
. after testing on more browsers, it crashes in Safari and Chromium, but works in Firefox after freezing for a few seconds
Which example is this? I tried a couple of the 3d examples but they all worked on wasm/webgl2 for me.
examples
pbr
and3d_scene
. after testing on more browsers, it crashes in Safari and Chromium, but works in Firefox after freezing for a few seconds
Ah, I was testing in firefox. I didn't expect it to be browser-specific, fun.
Which example is this? I tried a couple of the 3d examples but they all worked on wasm/webgl2 for me.
examples
pbr
and3d_scene
. after testing on more browsers, it crashes in Safari and Chromium, but works in Firefox after freezing for a few seconds
Both of those work for me with webgl2 on firefox and chromium on Linux. I hope it's not OSX specific =/
from https://docs.rs/wgpu/latest/wgpu/struct.Limits.html#method.downlevel_webgl2_defaults, I guess max_*_buffer_binding_size
is max_uniform_buffer_binding_size
which should be limited to 16KiB on WebGL2. It's not mandatory for browser to respect it, but it's the standard... and we're requesting more
transmission
example is also broken.
Looks like bloom depended on the old behavior where it would stop being extracted depending on Camera
value. In transmission
example, pressing H
key (which toggles Camera.hdr
) crashes it.
wgpu error: Validation Error
Caused by:
In RenderPass::end
In a set_pipeline command
Render pipeline targets are incompatible with render pass
Incompatible color attachments at indices [0]: the RenderPass uses textures with formats [Some(Rgba8UnormSrgb)] but the RenderPipeline with 'bloom_upsampling_pipeline' label uses attachments with formats [Some(Rgba16Float)]
Currently ExtractComponents
plugin does nothing if extract_component
returns None
. Shouldn't components be removed in that case?
For example in addition to bloom, ChromaticAberration starts to return None
from its extract_component
if intensity becomes zero, which is I think not synchronoized currently.
Edit: Uh, this does not work if some components in ExtractComponent::Out
bundle are shared across ExtractComponent
impls?
auto_exposure
also seems completely broken. (tested macos, win/4080). separate issue created: #15824
ssao
as well, bisected to #15320. run and press 151515
and observe nothing changing.
All of the examples in the original message work for me (I just checked them off in the message). I've tested all of the other examples mentioned and they either (1) work for me or (2) have a separate tracking issue.
I'm closing this out. If you identify a case that is still broken, please open a new issue scoped to it.
Opened #15997 and #15998. They may be platform specific if you weren't able to reproduce.
The example runs shows several example regressions, per @rparrett on Discord.
Retained rendering world #15320 or various required components changes are both plausible.
This is in addition to #15563.