Skip to main content

wgpu_3dgs_viewer/
error.rs

1use thiserror::Error;
2
3use crate::core;
4
5/// The error type for [`Renderer::new`](crate::Renderer::new).
6#[derive(Debug, Error)]
7pub enum RendererCreateError {
8    #[error(
9        "\
10        model size exceeds the device limit: {model_size} > {device_limit}, \
11        try smaller model or more aggressive compression\
12        "
13    )]
14    ModelSizeExceedsDeviceLimit { model_size: u64, device_limit: u32 },
15    #[error("{0}")]
16    WeslCompile(#[from] wesl::Error),
17}
18
19/// The error type for [`Preprocessor::new`](crate::Preprocessor::new).
20#[derive(Debug, Error)]
21pub enum PreprocessorCreateError {
22    #[error(
23        "\
24        model size exceeds the device limit: {model_size} > {device_limit}, \
25        try smaller model or more aggressive compression\
26        "
27    )]
28    ModelSizeExceedsDeviceLimit { model_size: u64, device_limit: u32 },
29    #[error("{0}")]
30    ComputeBundleBuild(#[from] core::ComputeBundleBuildError),
31    #[error("{0}")]
32    WeslCompile(#[from] wesl::Error),
33}
34
35/// The error type for [`Viewer::new`](crate::Viewer::new).
36#[derive(Debug, Error)]
37pub enum ViewerCreateError {
38    #[error("{0}")]
39    RendererCreate(#[from] RendererCreateError),
40    #[error("{0}")]
41    PreprocessorCreate(#[from] PreprocessorCreateError),
42}
43
44/// The error type for accessing model in [`MultiModelViewer`](crate::MultiModelViewer).
45#[cfg(feature = "multi-model")]
46#[derive(Debug, Error)]
47pub enum MultiModelViewerAccessError {
48    #[error("model with the given key does not exist")]
49    ModelNotFound,
50}