use thiserror::Error;
pub type RendererResult<T> = Result<T, RendererError>;
#[derive(Error, Debug)]
pub enum RendererError {
#[error("Renderer error: {0}")]
Generic(String),
#[error("Bad texture error: {0}")]
BadTexture(String),
#[error("Device lost")]
DeviceLost,
#[error("Invalid render state: {0}")]
InvalidRenderState(String),
#[error("Buffer creation failed: {0}")]
BufferCreationFailed(String),
#[error("Texture creation failed: {0}")]
TextureCreationFailed(String),
#[error("Pipeline creation failed: {0}")]
PipelineCreationFailed(String),
#[error("Shader compilation failed: {0}")]
ShaderCompilationFailed(String),
#[error("WGPU error")]
Wgpu(#[from] wgpu::Error),
#[error("Invalid texture ID: {0}")]
InvalidTextureId(u64),
}