diff --git a/crates/bevy_gltf/src/loader.rs b/crates/bevy_gltf/src/loader.rs index 7631686b9f..c9ff4becb6 100644 --- a/crates/bevy_gltf/src/loader.rs +++ b/crates/bevy_gltf/src/loader.rs @@ -39,7 +39,7 @@ use crate::{Gltf, GltfNode}; pub enum GltfError { #[error("unsupported primitive mode")] UnsupportedPrimitive { mode: Mode }, - #[error("invalid GLTF file")] + #[error("invalid GLTF file: {0}")] Gltf(#[from] gltf::Error), #[error("binary blob is missing")] MissingBlob, @@ -47,11 +47,11 @@ pub enum GltfError { Base64Decode(#[from] base64::DecodeError), #[error("unsupported buffer format")] BufferFormatUnsupported, - #[error("invalid image mime type")] + #[error("invalid image mime type: {0}")] InvalidImageMimeType(String), - #[error("failed to load an image")] + #[error("{0}")] ImageError(#[from] TextureError), - #[error("failed to load an asset path")] + #[error("failed to load an asset path: {0}")] AssetIoError(#[from] AssetIoError), } diff --git a/crates/bevy_render/src/pipeline/pipeline_compiler.rs b/crates/bevy_render/src/pipeline/pipeline_compiler.rs index b09d7ce8f2..d8cc2575c4 100644 --- a/crates/bevy_render/src/pipeline/pipeline_compiler.rs +++ b/crates/bevy_render/src/pipeline/pipeline_compiler.rs @@ -143,7 +143,7 @@ impl PipelineCompiler { &specialized_descriptor.shader_stages.vertex, &pipeline_specialization.shader_specialization, ) - .unwrap(); + .unwrap_or_else(|e| panic_shader_error(e)); specialized_descriptor.shader_stages.vertex = specialized_vertex_shader.clone_weak(); let mut specialized_fragment_shader = None; specialized_descriptor.shader_stages.fragment = specialized_descriptor @@ -158,7 +158,7 @@ impl PipelineCompiler { fragment, &pipeline_specialization.shader_specialization, ) - .unwrap(); + .unwrap_or_else(|e| panic_shader_error(e)); specialized_fragment_shader = Some(shader.clone_weak()); shader }); @@ -356,3 +356,12 @@ impl PipelineCompiler { Ok(()) } } + +fn panic_shader_error(error: ShaderError) -> ! { + let msg = error.to_string(); + let msg = msg + .trim_end() + .trim_end_matches("Debug log:") // if this matches, then there wasn't a debug log anyways + .trim_end(); + panic!("{}\n", msg); +} diff --git a/crates/bevy_render/src/shader/shader.rs b/crates/bevy_render/src/shader/shader.rs index 9672dfdfac..2e1d5b5f36 100644 --- a/crates/bevy_render/src/shader/shader.rs +++ b/crates/bevy_render/src/shader/shader.rs @@ -24,12 +24,12 @@ pub enum ShaderStage { #[derive(Error, Debug)] pub enum ShaderError { /// Shader compilation error. - #[error("Shader compilation error: {0}")] + #[error("Shader compilation error:\n{0}")] Compilation(String), #[cfg(any(target_os = "ios", all(target_arch = "aarch64", target_os = "macos")))] /// shaderc error. - #[error("shaderc error")] + #[error("shaderc error: {}")] ShaderC(#[from] shaderc::Error), #[cfg(any(target_os = "ios", all(target_arch = "aarch64", target_os = "macos")))] diff --git a/crates/bevy_render/src/texture/texture.rs b/crates/bevy_render/src/texture/texture.rs index ecaad4f7db..8e0494244b 100644 --- a/crates/bevy_render/src/texture/texture.rs +++ b/crates/bevy_render/src/texture/texture.rs @@ -287,7 +287,7 @@ pub enum TextureError { InvalidImageMimeType(String), #[error("invalid image extension")] InvalidImageExtension(String), - #[error("failed to load an image")] + #[error("failed to load an image: {0}")] ImageError(#[from] image::ImageError), }