refactor rendering interface, working edit overlay

This commit is contained in:
galister
2025-11-12 20:02:20 +09:00
parent 350c931749
commit 6b5b95bd88
25 changed files with 371 additions and 341 deletions

View File

@@ -1,7 +1,6 @@
use std::{marker::PhantomData, sync::Arc};
use vulkano::{
DeviceSize,
buffer::{Buffer, BufferCreateInfo, BufferUsage, Subbuffer},
command_buffer::{
AutoCommandBufferBuilder, ClearColorImageInfo, CommandBufferExecFuture, CopyBufferToImageInfo, CopyImageInfo,
@@ -9,13 +8,14 @@ use vulkano::{
},
device::Queue,
format::{ClearColorValue, ClearValue, Format},
image::{Image, ImageCreateInfo, ImageType, ImageUsage, view::ImageView},
image::{view::ImageView, Image, ImageCreateInfo, ImageType, ImageUsage},
memory::allocator::{AllocationCreateInfo, MemoryTypeFilter},
render_pass::{AttachmentLoadOp, AttachmentStoreOp},
sync::{GpuFuture, future::NowFuture},
sync::{future::NowFuture, GpuFuture},
DeviceSize,
};
use super::{WGfx, pass::WGfxPass};
use super::{pass::WGfxPass, WGfx};
pub type GfxCommandBuffer = WCommandBuffer<CmdBufGfx>;
pub type XferCommandBuffer = WCommandBuffer<CmdBufXfer>;
@@ -44,13 +44,24 @@ impl<T> WCommandBuffer<T> {
}
}
#[derive(Clone, Copy)]
#[derive(Default, Clone, Copy)]
pub enum WGfxClearMode {
Keep,
#[default]
DontCare,
Keep,
Clear([f32; 4]),
}
#[allow(dead_code)]
impl WGfxClearMode {
pub fn or_default(self, def: WGfxClearMode) -> WGfxClearMode {
match self {
Self::DontCare => def,
s => s,
}
}
}
impl WCommandBuffer<CmdBufGfx> {
pub fn begin_rendering(&mut self, render_target: Arc<ImageView>, clear_mode: WGfxClearMode) -> anyhow::Result<()> {
self.command_buffer.begin_rendering(RenderingInfo {