Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
dc59700
specialize
ecoskey Jan 14, 2025
9f30913
add proc macros
ecoskey Jan 14, 2025
722dfd6
minor cleanup
ecoskey Jan 14, 2025
30430fc
fix error name
ecoskey Jan 14, 2025
3d9d120
imports exports
ecoskey Jan 14, 2025
565d093
reexport macros
ecoskey Jan 14, 2025
568071b
rework things for accuracy
ecoskey Jan 14, 2025
aa1c5a3
Merge branch 'main' into new_specialize
ecoskey Jan 14, 2025
cc201d0
port custom_phase_item for demo
ecoskey Jan 14, 2025
6ea5fd3
add base descriptor trait
ecoskey Jan 14, 2025
7e084d4
small fixes
ecoskey Jan 14, 2025
bd877a1
rename trait
ecoskey Jan 15, 2025
346b588
macro v2
ecoskey Jan 15, 2025
fcf9ab1
macro v2
ecoskey Jan 15, 2025
5a33a21
error msg
ecoskey Jan 15, 2025
ba5225d
macro v2 done
ecoskey Jan 15, 2025
04b9c94
macro v3
ecoskey Jan 16, 2025
a3980a7
Merge branch 'main' into new_specialize
ecoskey Jan 16, 2025
4119bb3
fix internal imports
ecoskey Jan 16, 2025
6d3d69f
style
ecoskey Jan 16, 2025
9d6ab8f
docs
ecoskey Jan 16, 2025
e73df3a
typos
ecoskey Jan 16, 2025
65fab96
fix docs
ecoskey Jan 16, 2025
ac33d13
fix CI
ecoskey Jan 16, 2025
ef379ce
Merge branch 'main' into new_specialize
ecoskey Jan 17, 2025
41a98bd
function type alias
ecoskey Jan 17, 2025
ceb777e
Merge branch 'main' into new_specialize
ecoskey Jan 18, 2025
8cd525d
cleanup
ecoskey Feb 2, 2025
9e05804
Update specialize.rs
ecoskey Feb 4, 2025
8ced8d1
clarity
ecoskey Feb 5, 2025
a144c9f
Merge branch 'main' into new_specialize
ecoskey Feb 10, 2025
0451483
Merge branch 'main' into new_specialize
ecoskey Feb 16, 2025
7e5b23f
fix imports
ecoskey Apr 8, 2025
49274fd
Merge branch 'main' into new_specialize
ecoskey Apr 8, 2025
2f1c210
Merge branch 'main' into new_specialize
ecoskey Jun 22, 2025
1a8acac
fix import
ecoskey Jun 22, 2025
fbd87b1
rename to `GetBaseDescriptor`
ecoskey Jun 22, 2025
30fdac5
make specialization fallible
ecoskey Jun 22, 2025
63f3ce6
fix rename
ecoskey Jun 23, 2025
bb35b21
merge derive macros
ecoskey Jun 23, 2025
f5fec5c
add roundabout
ecoskey Jun 23, 2025
ef1b18d
fix macro codegen
ecoskey Jun 23, 2025
a4abde3
add docs
ecoskey Jun 23, 2025
93bbde8
add derive macro for SpecializeKey
ecoskey Jun 23, 2025
7c4caca
add migration guide
ecoskey Jun 23, 2025
931b935
edit migration guide
ecoskey Jun 23, 2025
cc6179c
fix imports
ecoskey Jun 23, 2025
7baf54f
Merge branch 'main' into new_specialize
ecoskey Jun 23, 2025
786dad9
fix docs and macro
ecoskey Jun 23, 2025
035ef0c
use derive in example
ecoskey Jun 23, 2025
22b27b2
fix migration guide
ecoskey Jun 23, 2025
e1b0a11
Update composable_specialization.md
ecoskey Jun 23, 2025
41ee916
fix docs
ecoskey Jun 24, 2025
2f5bdff
Merge branch 'main' into new_specialize
ecoskey Jun 27, 2025
5594740
wording
ecoskey Jun 28, 2025
75d870d
rename to SpecializationKey
ecoskey Jun 30, 2025
98b896e
rename macros
ecoskey Jun 30, 2025
5e2089a
rename caches and keys
ecoskey Jul 1, 2025
9c36c39
rename trait
ecoskey Jul 1, 2025
2de8795
Merge branch 'main' into new_specialize
ecoskey Jul 1, 2025
37a2a4a
Merge branch 'main' into new_specialize
ecoskey Jul 1, 2025
0eb25e4
rename modules
ecoskey Jul 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions crates/bevy_render/macros/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
mod as_bind_group;
mod extract_component;
mod extract_resource;
mod specializer;

use bevy_macro_utils::{derive_label, BevyManifest};
use proc_macro::TokenStream;
Expand All @@ -14,6 +15,10 @@ pub(crate) fn bevy_render_path() -> syn::Path {
BevyManifest::shared().get_path("bevy_render")
}

pub(crate) fn bevy_ecs_path() -> syn::Path {
BevyManifest::shared().get_path("bevy_ecs")
}

#[proc_macro_derive(ExtractResource)]
pub fn derive_extract_resource(input: TokenStream) -> TokenStream {
extract_resource::derive_extract_resource(input)
Expand Down Expand Up @@ -102,6 +107,20 @@ pub fn derive_render_sub_graph(input: TokenStream) -> TokenStream {
derive_label(input, "RenderSubGraph", &trait_path)
}

/// Derive macro generating an impl of the trait `Specialize`
///
/// This only works for structs whose members all implement `Specialize`
#[proc_macro_derive(Specialize, attributes(specialize, key, base_descriptor))]
pub fn derive_specialize(input: TokenStream) -> TokenStream {
specializer::impl_specialize(input)
}

/// Derive macro generating the most common impl of the trait `SpecializerKey`
#[proc_macro_derive(SpecializerKey)]
pub fn derive_specializer_key(input: TokenStream) -> TokenStream {
specializer::impl_specializer_key(input)
}

#[proc_macro_derive(ShaderLabel)]
pub fn derive_shader_label(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
Expand Down
Loading