From 4665f7b74e1165cd9a3fd03ed8b2d4ff08e4b2d4 Mon Sep 17 00:00:00 2001 From: Jakob Hellermann Date: Fri, 26 Mar 2021 18:51:05 +0100 Subject: [PATCH 1/3] better error messages for shader compilation errors --- crates/bevy_render/src/pipeline/pipeline_compiler.rs | 11 +++++++++-- crates/bevy_render/src/shader/shader.rs | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/crates/bevy_render/src/pipeline/pipeline_compiler.rs b/crates/bevy_render/src/pipeline/pipeline_compiler.rs index b09d7ce8f2af2..3b8f31aa115dc 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,10 @@ 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 + let msg = msg.trim_end(); + panic!("{}\n", msg); +} diff --git a/crates/bevy_render/src/shader/shader.rs b/crates/bevy_render/src/shader/shader.rs index 66376c11c68a9..85f084decc384 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")))] From 1c8e5d45eceef8fc69c5cf02c6fc04a83eea48ba Mon Sep 17 00:00:00 2001 From: Jakob Hellermann Date: Sat, 27 Mar 2021 13:58:36 +0100 Subject: [PATCH 2/3] better gltf error messages --- crates/bevy_gltf/src/loader.rs | 8 ++++---- crates/bevy_render/src/texture/texture.rs | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/bevy_gltf/src/loader.rs b/crates/bevy_gltf/src/loader.rs index 25da841eb3664..a4087eb71acd4 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/texture/texture.rs b/crates/bevy_render/src/texture/texture.rs index ecaad4f7dbf03..8e0494244bbc9 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), } From 2ca43ac2bd1fe75248c68c268a8dda3e4fb6132d Mon Sep 17 00:00:00 2001 From: Jakob Hellermann Date: Mon, 29 Mar 2021 22:18:51 +0200 Subject: [PATCH 3/3] Update crates/bevy_render/src/pipeline/pipeline_compiler.rs Co-authored-by: MinerSebas <66798382+MinerSebas@users.noreply.github.com> --- crates/bevy_render/src/pipeline/pipeline_compiler.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/bevy_render/src/pipeline/pipeline_compiler.rs b/crates/bevy_render/src/pipeline/pipeline_compiler.rs index 3b8f31aa115dc..d8cc2575c41b0 100644 --- a/crates/bevy_render/src/pipeline/pipeline_compiler.rs +++ b/crates/bevy_render/src/pipeline/pipeline_compiler.rs @@ -359,7 +359,9 @@ impl PipelineCompiler { 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 - let msg = msg.trim_end(); + 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); }