use awsm_renderer_core::error::AwsmCoreError;
use thiserror::Error;
use crate::{
bind_group_layout::AwsmBindGroupLayoutError,
bind_groups::AwsmBindGroupError,
pipeline_layouts::AwsmPipelineLayoutError,
pipelines::{
compute_pipeline::AwsmComputePipelineError, render_pipeline::AwsmRenderPipelineError,
},
shaders::AwsmShaderError,
};
#[derive(Error, Debug)]
pub enum AwsmShadowError {
#[error("[shadow] unknown light key")]
UnknownLight,
#[error("[shadow] unknown mesh key")]
UnknownMesh,
#[error("[shadow] point-light cube pool exhausted (capacity {0}); raise `max_point_shadows`")]
CubePoolExhausted(u32),
#[error("[shadow] atlas too small for requested resolutions ({need} > {have})")]
AtlasTooSmall {
need: u32,
have: u32,
},
#[error("[shadow] {0}")]
Core(#[from] AwsmCoreError),
#[error("[shadow] {0}")]
Shader(#[from] AwsmShaderError),
#[error("[shadow] {0}")]
BindGroupLayout(#[from] AwsmBindGroupLayoutError),
#[error("[shadow] {0}")]
BindGroup(#[from] AwsmBindGroupError),
#[error("[shadow] {0}")]
PipelineLayout(#[from] AwsmPipelineLayoutError),
#[error("[shadow] {0}")]
RenderPipeline(#[from] AwsmRenderPipelineError),
#[error("[shadow] {0}")]
ComputePipeline(#[from] AwsmComputePipelineError),
}