From bcc07668337786305e402b784e10f2c041afade0 Mon Sep 17 00:00:00 2001 From: 443eb9#C <443eb9@gmail.com> Date: Mon, 4 Mar 2024 19:31:25 +0800 Subject: [PATCH] Added: `TilemapMaterial::specialize` --- docs/imgs/baking.png | Bin 0 -> 45392 bytes release_note.md | 3 ++- src/render/material.rs | 7 ++++++- src/render/pipeline.rs | 8 ++++++-- 4 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 docs/imgs/baking.png diff --git a/docs/imgs/baking.png b/docs/imgs/baking.png new file mode 100644 index 0000000000000000000000000000000000000000..961be61ea6c82f39a7de94cf2824d9b6941b9f62 GIT binary patch literal 45392 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 ShaderRef { super::TILEMAP_SHADER.into() } + + #[allow(unused_variables)] + fn specialize(descriptor: &mut RenderPipelineDescriptor) {} } #[derive(Component, Default, Debug, Clone)] diff --git a/src/render/pipeline.rs b/src/render/pipeline.rs index 6d5c9f6..c957cc9 100644 --- a/src/render/pipeline.rs +++ b/src/render/pipeline.rs @@ -123,7 +123,7 @@ impl SpecializedRenderPipeline for EntiTilesPipeline { layout.push(self.storage_buffers_layout.clone()); } - RenderPipelineDescriptor { + let mut desc=RenderPipelineDescriptor { label: Some("tilemap_pipeline".into()), layout, push_constant_ranges: vec![], @@ -158,6 +158,10 @@ impl SpecializedRenderPipeline for EntiTilesPipeline { mask: !0, alpha_to_coverage_enabled: false, }, - } + }; + + M::specialize(&mut desc); + + desc } }