Closed jimvdl closed 4 months ago
I'm seeing the same error message using a PbrBundle
with and without the extra bevy_render
dependency.
Bevy 0.13.2
System info:
2024-05-04T18:11:11.728782Z INFO bevy_render::renderer: AdapterInfo { name: "NVIDIA GeForce RTX 2060", vendor: 4318, de
vice: 7944, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "552.12", backend: Vulkan }
2024-05-04T18:11:13.088476Z INFO bevy_diagnostic::system_information_diagnostics_plugin::internal: SystemInfo { os: "Wi
ndows 10 Home", kernel: "19045", cpu: "AMD Ryzen 7 1700 Eight-Core Processor", core_count: "8", memory: "15.9 GiB" }
I played around with this a bit more and got it to start up by explicitly setting my rendering backend to OpenGL - it renders fine but with a bunch of errors.
2024-05-05T09:40:20.754652Z ERROR log: wgpu-hal heuristics assumed that the view dimension will be equal to `D2` rather than `D2Array`.
`D2` textures with `depth_or_array_layers == 1` are assumed to have view dimension `D2`
`D2` textures with `depth_or_array_layers > 1` are assumed to have view dimension `D2Array`
`D2` textures with `depth_or_array_layers == 6` are assumed to have view dimension `Cube`
`D2` textures with `depth_or_array_layers > 6 && depth_or_array_layers % 6 == 0` are assumed to have view dimension `CubeArray`
Powershell:
$Env:WGPU_BACKEND="opengl"
It continues to fail as before if I explicitly set the backend to vulkan
and dx12
.
@jimvdl can you see if that makes any difference for you?
For me no rendering happens, I have roughly the same errors but my GPU doesn't have full OpenGL support (it seems)
I got to the bottom of the error on my end. I was working on migrating an old project over to bevy -- I hadn't realised it was on 2018 Rust edition.
Upgrading to 2021 fixed it for me.
I'm also having the same problem on my Apple machine, it panics as shared above. The issue does not occur if I spawn only the camera or the ground but occurs when I spawn both of them. I'm also new to Bevy and the game development so, got no clues here.
Rust version: 1.78.0
2024-05-09T09:59:35.817984Z INFO bevy_render::renderer: AdapterInfo { name: "Apple M2 Pro", vendor: 0, device: 0, device_type: IntegratedGpu, driver: "", driver_info: "", backend: Metal }
2024-05-09T09:59:36.299343Z INFO bevy_winit::system: Creating new window "App" (0v1)
2024-05-09T09:59:36.335828Z INFO bevy_diagnostic::system_information_diagnostics_plugin::internal: SystemInfo { os: "MacOS 14.4.1 ", kernel: "23.4.0", cpu: "Apple M2 Pro", core_count: "12", memory: "32.0 GiB" }
Cargo.toml
[package]
name = "agustos"
version = "0.1.0"
edition = "2021"
[dependencies]
bevy = { version = "0.13.2", features = ["default"] }
main.rs
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_systems(Startup, (spawn_camera, create_ground))
.run();
}
pub fn spawn_camera(mut commands: Commands) {
commands.spawn((
Camera3dBundle {
transform: Transform::from_xyz(-2., 2.5, 5.0)
.looking_at(Vec3::ZERO, Vec3::Y),
..default()
}
));
}
pub fn create_ground(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
let floor = PbrBundle {
mesh: meshes.add(Plane3d::default().mesh().size(50.0, 50.0)),
material: materials.add(Color::DARK_GREEN),
..default()
};
commands.spawn(floor);
}
Some debugging info about reproducable example from issue description: Just before first panic there are some unassigned bindings processed
DEBUG naga::back::glsl: unassigned binding for Some("viewX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX")
DEBUG naga::back::glsl: unassigned binding for Some("lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX")
DEBUG naga::back::glsl: unassigned binding for Some("point_lightsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX")
DEBUG naga::back::glsl: unassigned binding for Some("cluster_light_index_listsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX")
DEBUG naga::back::glsl: unassigned binding for Some("cluster_offsets_and_countsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX")
DEBUG naga::back::glsl: unassigned binding for Some("globalsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX")
DEBUG naga::back::glsl: unassigned binding for Some("fogX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX")
DEBUG naga::back::glsl: unassigned binding for Some("light_probesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX")
DEBUG naga::back::glsl: unassigned binding for Some("visibility_rangesX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX")
DEBUG naga::back::glsl: unassigned binding for Some("diffuse_environment_mapsX_naga_oil_mod_XMJSXM6K7OBRHEOR2NVSXG2C7OZUWK527MJUW4ZDJNZTXGX")
The last unassigned binding caused first panic. Looks like problem is deep in naga or naga_oil:
AddressSpace::Handle
arm supposed to be for texture or sample, which should be processed earlierI don't know how it should be, so I don't know who does something wrong and where to dig. Maybe @rparrett or @robtfm knows better. I hope it helps.
looks like this naga issue - binding arrays can't be used with emitted glsl. the binding arrays for the env maps are meant to be avoided by not adding them when the shader_format_glsl
feature is enabled, but that check is in bevy_pbr
, not in bevy_render
.
i suspect you just need to either add the feature for bevy
instead of bevy_render
, or add it for bevy_pbr
as well.
i checked and the feature wasn't being passed through properly (either on 0.13 or on main). you'll need to manually add the feature to bevy_pbr's cargo.toml in 0.13 if you need support there.
Bevy version
0.13
Relevant system information
Operating system: Windows 10. Rust version: 1.76.0
What you did
Minimal reproducible example:
Cargo.toml
main.rs
What went wrong
I can render GLTF models fine but once I replace that with a
Cuboid::default
I get the following panic:In my bigger project I'm using GLSL to shade models that I've imported with GLTF, those work perfectly, the shader works and the models are correctly imported and displayed. The only thing that goes wrong is if you use either
MaterialMeshBundle
orPbrBundle
with a basic shape mesh, then the above panic occurs.I can't use
bevy_render
withoutshader_format_glsl
because it's a required feature if you want to shade GLTF meshes with GLSL.Additional information
I'm very new to all this, I've worked with Bevy before without needing any models or meshes (it was basically only a ECS backend) so it might be that I'm just doing something wrong.
if you disable the
shader_format_glsl
feature the above example compiles and runs fine.