diff --git a/assets/rainbow_shader.wgsl b/assets/rainbow_shader.wgsl
index ee2238bbaf490d424e99c33f3af56ed964c0fe6a..fc10bb195f2a77e894b58d282dc2398f0e416907 100644
--- a/assets/rainbow_shader.wgsl
+++ b/assets/rainbow_shader.wgsl
@@ -1,6 +1,6 @@
-#import kayak_ui::bindings
-#import kayak_ui::sample_quad
-#import kayak_ui::vertex_output
+#import kayak_ui::bindings globals
+#import kayak_ui::sample_quad sample_quad
+#import kayak_ui::vertex_output VertexOutput
 
 fn hsv2rgb(c: vec3<f32>) -> vec3<f32>
 {
diff --git a/src/render/material/plugin.rs b/src/render/material/plugin.rs
index 897a4d9f62d269bfbfbc12e96a0514e9601bb4e4..67a994cd2947090f7353a264888815881b476bbd 100644
--- a/src/render/material/plugin.rs
+++ b/src/render/material/plugin.rs
@@ -37,26 +37,28 @@ where
         app.add_asset::<M>()
             .add_plugins(ExtractComponentPlugin::<Handle<M>>::extract_visible());
 
-        if let Ok(render_app) = app.get_sub_app_mut(RenderApp) {
-            render_app
-                .add_render_command::<TransparentUI, DrawMaterialUI<M>>()
-                .add_render_command::<TransparentOpacityUI, DrawMaterialUITransparent<M>>()
-                .init_resource::<MaterialUIPipeline<M>>()
-                .init_resource::<ExtractedMaterialsUI<M>>()
-                .init_resource::<RenderMaterialsUI<M>>()
-                .init_resource::<SpecializedRenderPipelines<MaterialUIPipeline<M>>>()
-                .add_systems(ExtractSchedule, extract_materials_ui::<M>)
-                .add_systems(
-                    Render,
-                    (
-                        prepare_materials_ui::<M>
-                            .in_set(RenderSet::Prepare)
-                            .after(PrepareAssetSet::PreAssetPrepare),
-                        queue_material_ui_quads::<M>
-                            .in_set(RenderSet::Queue)
-                            .after(crate::render::unified::pipeline::queue_quads),
-                    ),
-                );
-        }
+        app.sub_app_mut(RenderApp)
+            .add_render_command::<TransparentUI, DrawMaterialUI<M>>()
+            .add_render_command::<TransparentOpacityUI, DrawMaterialUITransparent<M>>()
+            .init_resource::<ExtractedMaterialsUI<M>>()
+            .init_resource::<RenderMaterialsUI<M>>()
+            .init_resource::<SpecializedRenderPipelines<MaterialUIPipeline<M>>>()
+            .add_systems(ExtractSchedule, extract_materials_ui::<M>)
+            .add_systems(
+                Render,
+                (
+                    prepare_materials_ui::<M>
+                        .in_set(RenderSet::Prepare)
+                        .after(PrepareAssetSet::PreAssetPrepare),
+                    queue_material_ui_quads::<M>
+                        .in_set(RenderSet::Queue)
+                        .after(crate::render::unified::pipeline::queue_quads),
+                ),
+            );
+    }
+
+    fn finish(&self, app: &mut App) {
+        app.sub_app_mut(RenderApp)
+            .init_resource::<MaterialUIPipeline<M>>();
     }
 }