bevy_shader/
lib.rs

1#![expect(missing_docs, reason = "Not all docs are written yet, see #3492.")]
2
3extern crate alloc;
4
5mod shader;
6mod shader_cache;
7pub use shader::*;
8pub use shader_cache::*;
9
10/// The shader prelude.
11///
12/// This includes the most common types in this crate, re-exported for your convenience.
13pub mod prelude {
14    #[doc(hidden)]
15    pub use crate::Shader;
16}
17
18#[doc(hidden)]
19pub mod _macro {
20    pub use bevy_asset;
21}
22
23/// Inline shader as an `embedded_asset` and load it permanently.
24///
25/// This works around a limitation of the shader loader not properly loading
26/// dependencies of shaders.
27#[macro_export]
28macro_rules! load_shader_library {
29    ($asset_server_provider: expr, $path: literal $(, $settings: expr)?) => {
30        $crate::_macro::bevy_asset::embedded_asset!($asset_server_provider, $path);
31        let handle: $crate::_macro::bevy_asset::prelude::Handle<$crate::prelude::Shader> =
32            $crate::_macro::bevy_asset::load_embedded_asset!(
33                $asset_server_provider,
34                $path
35                $(,$settings)?
36            );
37        core::mem::forget(handle);
38    }
39}