diff --git a/src/context.rs b/src/context.rs index c0ca4dfc8090c527b03058e393417838e98472e1..e06dc2d5b6acd71aaa15076bfda89b8afe867cd0 100644 --- a/src/context.rs +++ b/src/context.rs @@ -1233,6 +1233,8 @@ impl Plugin for KayakContextPlugin { .register_type::<ComputedStyles>() .register_type::<KStyle>() .register_type::<KChildren>() + .register_type::<crate::layout::Rect>() + .register_type::<crate::node::Node>() .register_type::<WidgetName>() .register_type::<StyleProp<Color>>() .register_type::<StyleProp<Corner<f32>>>() diff --git a/src/render/material/pipeline.rs b/src/render/material/pipeline.rs index d35ffee4b41b46452f36d587de2fb6b02ee2b072..cca8819cfa5beca4257582a64312581804f4e2c2 100644 --- a/src/render/material/pipeline.rs +++ b/src/render/material/pipeline.rs @@ -36,7 +36,7 @@ use crate::render::{ unified::pipeline::{ queue_quads_inner, DrawUIDraw, ExtractedQuad, ImageBindGroups, PreviousClip, QuadBatch, QuadMeta, QuadTypeOffsets, SetUIViewBindGroup, UIQuadType, UnifiedPipeline, - UnifiedPipelineKey, + UnifiedPipelineKey, PreviousIndex, }, }; @@ -319,12 +319,13 @@ pub fn queue_material_ui_quads<M: MaterialUI>( &'static UIExtractedView, )>, mut image_bind_groups: ResMut<ImageBindGroups>, - (gpu_images, font_texture_cache, quad_types_offsets, render_materials, mut prev_clip): ( + (gpu_images, font_texture_cache, quad_types_offsets, render_materials, mut prev_clip, prev_index): ( Res<RenderAssets<Image>>, Res<FontTextureCache>, Res<QuadTypeOffsets>, Res<RenderMaterialsUI<M>>, ResMut<PreviousClip>, + Res<PreviousIndex> ), ) where M::Data: PartialEq + Eq + Hash + Clone, @@ -339,7 +340,7 @@ pub fn queue_material_ui_quads<M: MaterialUI>( let mut current_batch_entity = Entity::PLACEHOLDER; // Vertex buffer indices - let mut index = 0; + let mut index = prev_index.index; // let mut previous_clip_rect = Rect::default(); diff --git a/src/render/unified/mod.rs b/src/render/unified/mod.rs index 24967d6d7dd55da721771f041ca5d1a7e519bb63..145a3b8036cb7215009b8206f2abb15a0447bb79 100644 --- a/src/render/unified/mod.rs +++ b/src/render/unified/mod.rs @@ -24,7 +24,7 @@ use crate::{ use self::pipeline::{ queue_quad_types, queue_ui_view_bind_groups, DrawUITransparent, ExtractedQuads, - ImageBindGroups, PreviousClip, QuadTypeOffsets, + ImageBindGroups, PreviousClip, QuadTypeOffsets, PreviousIndex, }; use super::{svg::RenderSvgs, ui_pass::TransparentOpacityUI}; @@ -69,6 +69,7 @@ impl Plugin for UnifiedRenderPlugin { .init_resource::<QuadMeta>() .init_resource::<RenderSvgs>() .init_resource::<PreviousClip>() + .init_resource::<PreviousIndex>() .add_system(super::svg::extract_svg_asset.in_schedule(ExtractSchedule)) .add_system(extract_baseline.in_schedule(ExtractSchedule)) .add_system(queue_quad_types.in_set(RenderSet::Queue)) diff --git a/src/render/unified/pipeline.rs b/src/render/unified/pipeline.rs index e90c79ac5ec0f7b93d5a28e304b0b76b4ffc7e84..7936c1007312b600086701470221b47ee71b5ba3 100644 --- a/src/render/unified/pipeline.rs +++ b/src/render/unified/pipeline.rs @@ -172,7 +172,7 @@ impl FromWorld for UnifiedPipeline { let empty_font_texture = FontTextureCache::get_empty(&render_device); let texture_descriptor = TextureDescriptor { - label: Some("font_texture_array"), + label: Some("empty_texture"), size: Extent3d { width: 1, height: 1, @@ -192,7 +192,7 @@ impl FromWorld for UnifiedPipeline { let sampler = render_device.create_sampler(&sampler_descriptor); let texture_view = texture.create_view(&TextureViewDescriptor { - label: Some("font_texture_array_view"), + label: Some("empty_texture_view"), format: Some(TextureFormat::Rgba8UnormSrgb), dimension: Some(TextureViewDimension::D2), aspect: bevy::render::render_resource::TextureAspect::All, @@ -562,6 +562,11 @@ pub struct PreviousClip { pub rect: Rect, } +#[derive(Resource, Default)] +pub struct PreviousIndex { + pub index: u32, +} + #[derive(SystemParam)] pub struct QueueQuads<'w, 's> { render_svgs: Res<'w, RenderSvgs>, @@ -591,6 +596,7 @@ pub struct QueueQuads<'w, 's> { font_texture_cache: Res<'w, FontTextureCache>, quad_type_offsets: Res<'w, QuadTypeOffsets>, prev_clip: ResMut<'w, PreviousClip>, + prev_index: ResMut<'w, PreviousIndex>, } pub fn queue_quads(queue_quads: QueueQuads) { @@ -613,6 +619,7 @@ pub fn queue_quads(queue_quads: QueueQuads) { font_texture_cache, quad_type_offsets, mut prev_clip, + mut prev_index, } = queue_quads; let extracted_sprite_len = extracted_quads.quads.len(); @@ -690,6 +697,8 @@ pub fn queue_quads(queue_quads: QueueQuads) { ) } } + + prev_index.index = index; } pub fn queue_quads_inner( @@ -782,6 +791,7 @@ pub fn queue_quads_inner( }); } else { // Skip unloaded texture. + dbg!("Skip texture not loaded in!"); return; } }